diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/net/if_bridge.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index be90803cc975..35e019abad62 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -166,10 +166,6 @@ __FBSDID("$FreeBSD$"); * List of capabilities to possibly mask on the member interface. */ #define BRIDGE_IFCAPS_MASK (IFCAP_TOE|IFCAP_TSO|IFCAP_TXCSUM) -/* - * List of capabilities to disable on the member interface. - */ -#define BRIDGE_IFCAPS_STRIP IFCAP_LRO /* * Bridge interface list entry. @@ -798,10 +794,15 @@ bridge_mutecaps(struct bridge_softc *sc) LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { enabled = bif->bif_ifp->if_capenable; - enabled &= ~BRIDGE_IFCAPS_STRIP; /* strip off mask bits and enable them again if allowed */ enabled &= ~BRIDGE_IFCAPS_MASK; enabled |= mask; + /* + * Receive offload can only be enabled if all members also + * support send offload. + */ + if ((enabled & IFCAP_TSO) == 0) + enabled &= ~IFCAP_LRO; bridge_set_ifcap(sc, bif, enabled); } |