On Thu, Apr 29, 2021 at 8:39 PM Flavio Leitner <f...@sysclose.org> wrote: > > - if (l4_hdr && hdr->gso_type != VIRTIO_NET_HDR_GSO_NONE) { > > + /* GSO request, save required information in mbuf */ > > + if (hdr->gso_type != VIRTIO_NET_HDR_GSO_NONE) { > > + /* Check unsupported modes */ > > + if (hdr->gso_size == 0) > > + return -EINVAL; > > + > > switch (hdr->gso_type & ~VIRTIO_NET_HDR_GSO_ECN) { > > case VIRTIO_NET_HDR_GSO_TCPV4: > > case VIRTIO_NET_HDR_GSO_TCPV6: > > - tcp_hdr = l4_hdr; > > - m->ol_flags |= PKT_TX_TCP_SEG; > > - m->tso_segsz = hdr->gso_size; > > - m->l4_len = (tcp_hdr->data_off & 0xf0) >> 2; > > - break; > > case VIRTIO_NET_HDR_GSO_UDP: > > - m->ol_flags |= PKT_TX_UDP_SEG; > > + m->ol_flags |= PKT_RX_LRO | PKT_RX_L4_CKSUM_NONE; > > My understanding of the virtio 1.1 spec is that GSO can be > used independently of CSUM. There is nothing preventing to > send a fully checksummed TSO packet.
This forces a superfluous cksum in such a situation. It can be fixed later if needed. The virtio pmd rx side has the same behavior. > Anyways, that's unusual and not the goal of this patch. > > Acked-by: Flavio Leitner <f...@sysclose.org> Thanks! -- David Marchand