aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorBryan Venteicher <bryanv@FreeBSD.org>2021-01-19 04:55:25 +0000
committerBryan Venteicher <bryanv@FreeBSD.org>2021-01-19 04:55:25 +0000
commit6b53aeed9162c258ae8516cdc11ac2b66a9edd93 (patch)
treef9bf52688d0481011cc1f20eb6879eea989e1071 /sys/dev
parent74cd316a09e8e5ae237278695329a97b9827559c (diff)
downloadsrc-6b53aeed9162c258ae8516cdc11ac2b66a9edd93.tar.gz
src-6b53aeed9162c258ae8516cdc11ac2b66a9edd93.zip
if_vtnet: Set lro_nsegs for host LRO packets
Reviewed by: grehan (mentor) Differential Revision: https://reviews.freebsd.org/D27933
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/virtio/network/if_vtnet.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c
index ad53f3d24e02..3da945baab63 100644
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -2010,6 +2010,16 @@ vtnet_rxq_input(struct vtnet_rxq *rxq, struct mbuf *m,
rxq->vtnrx_stats.vrxs_csum_failed++;
}
+ if (hdr->gso_size != 0) {
+ switch (hdr->gso_type & ~VIRTIO_NET_HDR_GSO_ECN) {
+ case VIRTIO_NET_HDR_GSO_TCPV4:
+ case VIRTIO_NET_HDR_GSO_TCPV6:
+ m->m_pkthdr.lro_nsegs =
+ howmany(m->m_pkthdr.len, hdr->gso_size);
+ break;
+ }
+ }
+
rxq->vtnrx_stats.vrxs_ipackets++;
rxq->vtnrx_stats.vrxs_ibytes += m->m_pkthdr.len;