Revert "if_vlan: do not enable LRO for bridge interaces"

This reverts commit 5f11a33cee.

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.
This commit is contained in:
Kristof Provost 2023-08-12 15:56:21 +02:00
parent 543cf924bc
commit fb69ed397e

View file

@ -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