summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjfv <jfv@FreeBSD.org>2009-08-24 21:04:51 +0000
committerjfv <jfv@FreeBSD.org>2009-08-24 21:04:51 +0000
commit91fcf01735145ebd2496ff073dcf063d8b912862 (patch)
tree825cd7ab62b5ba6772e0f27fc2af63822259db06
parent25dbab4fa7cb92811a80ab6e0b34f0fb3451cd78 (diff)
downloadFreeBSD-src-91fcf01735145ebd2496ff073dcf063d8b912862.zip
FreeBSD-src-91fcf01735145ebd2496ff073dcf063d8b912862.tar.gz
When bridging LRO is causing a problem, the believe
that it would work as long as all interfaces have TSO seems to be false, until the matter gets sorted out just disable LRO completely.
-rw-r--r--sys/net/if_bridge.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c
index f1a79cb..d3a55fd 100644
--- a/sys/net/if_bridge.c
+++ b/sys/net/if_bridge.c
@@ -171,6 +171,11 @@ __FBSDID("$FreeBSD$");
#define BRIDGE_IFCAPS_MASK (IFCAP_TOE|IFCAP_TSO|IFCAP_TXCSUM)
/*
+ * List of capabilities to strip
+ */
+#define BRIDGE_IFCAPS_STRIP IFCAP_LRO
+
+/*
* Bridge interface list entry.
*/
struct bridge_iflist {
@@ -802,16 +807,10 @@ 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);
}
OpenPOWER on IntegriCloud