Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Sep 2009 23:25:39 +0000 (UTC)
From:      Jack F Vogel <jfv@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r196997 - stable/8/sys/net
Message-ID:  <200909082325.n88NPdDs064553@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200909082325.n88NPdDs064553>