Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Aug 2023 16:01:25 GMT
From:      Kristof Provost <kp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: fb69ed397e4f - main - Revert "if_vlan: do not enable LRO for bridge interaces"
Message-ID:  <202308121601.37CG1Pb9083212@gitrepo.freebsd.org>

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

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

commit fb69ed397e4f455d4c338edcfa210d763bb87189
Author:     Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2023-08-12 13:56:21 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2023-08-12 13:56:21 +0000

    Revert "if_vlan: do not enable LRO for bridge interaces"
    
    This reverts commit 5f11a33ceeb385477cb22d9ad5941061c5a26be9.
    
    As requested by Kevin Bowling. He explains:
    
    > The subtle bug was that vlan_capabilities() in if_vlan was not obeying
    > the requested mask from its IFCAP ioctl.
---
 sys/net/if_vlan.c | 22 +++++++---------------
 1 file changed, 7 insertions(+), 15 deletions(-)

diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c
index 92e4e4247e3d..6aa872a19364 100644
--- a/sys/net/if_vlan.c
+++ b/sys/net/if_vlan.c
@@ -2067,22 +2067,14 @@ vlan_capabilities(struct ifvlan *ifv)
 	}
 
 	/*
-	* If the parent interface is not a bridge and can do LRO and
-	* checksum offloading on VLANs, then guess it may do LRO on VLANs.
-	* False positive here cost nothing, while false negative may lead
-	* to some confusions. According to Wikipedia:
-	*
-	* "LRO should not operate on machines acting as routers, as it breaks
-	* the end-to-end principle and can significantly impact performance."
-	*
-	* The same reasoning applies to machines acting as bridges.
+	 * If the parent interface can do LRO and checksum offloading on
+	 * VLANs, then guess it may do LRO on VLANs.  False positive here
+	 * cost nothing, while false negative may lead to some confusions.
 	 */
-	if (ifp->if_bridge == NULL) {
-		if (p->if_capabilities & IFCAP_VLAN_HWCSUM)
-			cap |= p->if_capabilities & IFCAP_LRO;
-		if (p->if_capenable & IFCAP_VLAN_HWCSUM)
-			ena |= p->if_capenable & IFCAP_LRO;
-	}
+	if (p->if_capabilities & IFCAP_VLAN_HWCSUM)
+		cap |= p->if_capabilities & IFCAP_LRO;
+	if (p->if_capenable & IFCAP_VLAN_HWCSUM)
+		ena |= p->if_capenable & IFCAP_LRO;
 
 	/*
 	 * If the parent interface can offload TCP connections over VLANs then



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