svn commit: r196997 - stable/8/sys/net

Jack F Vogel jfv at FreeBSD.org
Tue Sep 8 23:25:40 UTC 2009


Author: jfv
Date: Tue Sep  8 23:25:39 2009
New Revision: 196997
URL: http://svn.freebsd.org/changeset/base/196997

Log:
  Make LRO turned off uncategorically for devices
  attached to the bridge, rather than just in the case
  when some device cannot do TSO. Customer tests have
  shown that even when all devices can do TSO that LRO
  will cause problems when bridging.
  
  Approved by:  re

Modified:
  stable/8/sys/net/if_bridge.c

Modified: stable/8/sys/net/if_bridge.c
==============================================================================
--- stable/8/sys/net/if_bridge.c	Tue Sep  8 21:50:34 2009	(r196996)
+++ stable/8/sys/net/if_bridge.c	Tue Sep  8 23:25:39 2009	(r196997)
@@ -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);
 	}
 


More information about the svn-src-all mailing list