vlan: Respect IFCAP_LRO mask

vlan_capabilities(), used by the IFCAP ioctl, was not respecting the
IFCAP_LRO bit if it was masked by the requestor.

This prevented if_bridge(4) from automasking LRO with a message like:
bridge0: can't disable some capabilities on em3.11: 0x400

This also prevented manually disabling LRO from any vlan interface.

PR:		254596
Reported by:	Paul Vixie <paul@redbarn.org>
MFC after:	1 week
This commit is contained in:
Kevin Bowling 2023-08-12 09:31:22 -07:00
parent fb69ed397e
commit b1a39c31a3

View File

@ -2074,7 +2074,7 @@ vlan_capabilities(struct ifvlan *ifv)
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;
ena |= mena & IFCAP_LRO;
/*
* If the parent interface can offload TCP connections over VLANs then