today i added a vlan subinterface to a bridge, and dmesg reported:
bridge1: can't disable some capabilities on igb0.203: 0x400
this is IFCAP_LRO. bridge(4) says:
"on all interfaces added to the bridge ... The LRO capability is always disabled."
wikipedia(Large receive offload) says:
"LRO should not operate on machines acting as routers, as it breaks the end-to-end principle and can significantly impact performance."
* 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 (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;
to get LRO to not be sticky-on for a vlan subinterface, i would have to remove LRO from the parent interface. i don't think this is functioning as intended, because i have other non-bridged subinterfaces for which LRO is appropriate.
i am not posting a candidate fix because too many layers are being crossed here and there's not an obvious way to relax this deep constraint. someone with recent kernel architecture chops should take a look.
@Alexander Anyone else you suggest might be suitable/able to advise on this issue?