Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Jan 2021 05:08:24 GMT
From:      Bryan Venteicher <bryanv@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 177761e4c467 - main - if_vtnet: Set the interface max TSO values
Message-ID:  <202101190508.10J58OaU085993@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by bryanv:

URL: https://cgit.FreeBSD.org/src/commit/?id=177761e4c4673612dd64793a31a90142d9a04e62

commit 177761e4c4673612dd64793a31a90142d9a04e62
Author:     Bryan Venteicher <bryanv@FreeBSD.org>
AuthorDate: 2021-01-19 04:55:25 +0000
Commit:     Bryan Venteicher <bryanv@FreeBSD.org>
CommitDate: 2021-01-19 04:55:25 +0000

    if_vtnet: Set the interface max TSO values
    
    Reviewed by: grehan (mentor)
    Differential Revision: https://reviews.freebsd.org/D27917
---
 sys/dev/virtio/network/if_vtnet.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c
index 642c513ff0b3..2447f29a8820 100644
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -289,6 +289,11 @@ TUNABLE_INT("hw.vtnet.mq_max_pairs", &vtnet_mq_max_pairs);
 SYSCTL_INT(_hw_vtnet, OID_AUTO, mq_max_pairs, CTLFLAG_RDTUN,
     &vtnet_mq_max_pairs, 0, "Sets the maximum number of multiqueue pairs");
 
+static int vtnet_tso_maxlen = IP_MAXPACKET;
+TUNABLE_INT("hw.vtnet.tso_maxlen", &vtnet_tso_maxlen);
+SYSCTL_INT(_hw_vtnet, OID_AUTO, tso_maxlen, CTLFLAG_RDTUN,
+    &vtnet_tso_maxlen, 0, "TSO burst limit");
+
 static int vtnet_rx_process_limit = 1024;
 TUNABLE_INT("hw.vtnet.rx_process_limit", &vtnet_rx_process_limit);
 SYSCTL_INT(_hw_vtnet, OID_AUTO, rx_process_limit, CTLFLAG_RDTUN,
@@ -1042,8 +1047,18 @@ vtnet_setup_interface(struct vtnet_softc *sc)
 		if (gso || virtio_with_feature(dev, VIRTIO_NET_F_HOST_ECN))
 			sc->vtnet_flags |= VTNET_FLAG_TSO_ECN;
 
-		if (ifp->if_capabilities & (IFCAP_TSO4 | IFCAP_TSO6))
+		if (ifp->if_capabilities & (IFCAP_TSO4 | IFCAP_TSO6)) {
+			int tso_maxlen;
+
 			ifp->if_capabilities |= IFCAP_VLAN_HWTSO;
+
+			tso_maxlen = vtnet_tunable_int(sc, "tso_maxlen",
+			    vtnet_tso_maxlen);
+			ifp->if_hw_tsomax = tso_maxlen -
+			    (ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN);
+			ifp->if_hw_tsomaxsegcount = sc->vtnet_tx_nsegs - 1;
+			ifp->if_hw_tsomaxsegsize = PAGE_SIZE;
+		}
 	}
 
 	if (virtio_with_feature(dev, VIRTIO_NET_F_GUEST_CSUM)) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202101190508.10J58OaU085993>