[kernel] r19413 - in dists/sid/linux/debian: . patches patches/bugfix/all

Ben Hutchings benh at alioth.debian.org
Fri Oct 5 03:40:43 UTC 2012


Author: benh
Date: Fri Oct  5 03:40:40 2012
New Revision: 19413

Log:
tg3: Fix TSO CAP for 5704 devs w / ASF enabled

Cherry-picked based on an upstream bug report by a Debian user.

Added:
   dists/sid/linux/debian/patches/bugfix/all/tg3-Fix-TSO-CAP-for-5704-devs-w-ASF-enabled.patch
Modified:
   dists/sid/linux/debian/changelog
   dists/sid/linux/debian/patches/series

Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog	Fri Oct  5 03:37:54 2012	(r19412)
+++ dists/sid/linux/debian/changelog	Fri Oct  5 03:40:40 2012	(r19413)
@@ -2,6 +2,7 @@
 
   * codel: refine one condition to avoid a nul rec_inv_sqrt
   * [mips,mipsel] Ignore NFS/SunRPC ABI changes in 3.2.30 (fixes FTBFS)
+  * tg3: Fix TSO CAP for 5704 devs w / ASF enabled
 
  -- Ben Hutchings <ben at decadent.org.uk>  Sat, 29 Sep 2012 14:19:46 +0200
 

Added: dists/sid/linux/debian/patches/bugfix/all/tg3-Fix-TSO-CAP-for-5704-devs-w-ASF-enabled.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/bugfix/all/tg3-Fix-TSO-CAP-for-5704-devs-w-ASF-enabled.patch	Fri Oct  5 03:40:40 2012	(r19413)
@@ -0,0 +1,59 @@
+From: Matt Carlson <mcarlson at broadcom.com>
+Date: Mon, 28 Nov 2011 09:41:03 +0000
+Subject: tg3: Fix TSO CAP for 5704 devs w / ASF enabled
+
+commit cf9ecf4b631f649a964fa611f1a5e8874f2a76db upstream.
+
+On the earliest TSO capable devices, TSO was accomplished through
+firmware.  The TSO cannot coexist with ASF management firmware though.
+The tg3 driver determines whether or not ASF is enabled by calling
+tg3_get_eeprom_hw_cfg(), which checks a particular bit of NIC memory.
+Commit dabc5c670d3f86d15ee4f42ab38ec5bd2682487d, entitled "tg3: Move
+TSO_CAPABLE assignment", accidentally moved the code that determines
+TSO capabilities earlier than the call to tg3_get_eeprom_hw_cfg().  As a
+consequence, the driver was attempting to determine TSO capabilities
+before it had all the data it needed to make the decision.
+
+This patch fixes the problem by revisiting and reevaluating the decision
+after tg3_get_eeprom_hw_cfg() is called.
+
+Signed-off-by: Matt Carlson <mcarlson at broadcom.com>
+Signed-off-by: Michael Chan <mchan at broadcom.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ drivers/net/ethernet/broadcom/tg3.c |   14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
+index 0acb279..0c695dc 100644
+--- a/drivers/net/ethernet/broadcom/tg3.c
++++ b/drivers/net/ethernet/broadcom/tg3.c
+@@ -13988,9 +13988,13 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
+ 	if (tg3_flag(tp, HW_TSO_1) ||
+ 	    tg3_flag(tp, HW_TSO_2) ||
+ 	    tg3_flag(tp, HW_TSO_3) ||
+-	    (tp->fw_needed && !tg3_flag(tp, ENABLE_ASF)))
++	    tp->fw_needed) {
++		/* For firmware TSO, assume ASF is disabled.
++		 * We'll disable TSO later if we discover ASF
++		 * is enabled in tg3_get_eeprom_hw_cfg().
++		 */
+ 		tg3_flag_set(tp, TSO_CAPABLE);
+-	else {
++	} else {
+ 		tg3_flag_clear(tp, TSO_CAPABLE);
+ 		tg3_flag_clear(tp, TSO_BUG);
+ 		tp->fw_needed = NULL;
+@@ -14266,6 +14270,12 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
+ 	 */
+ 	tg3_get_eeprom_hw_cfg(tp);
+ 
++	if (tp->fw_needed && tg3_flag(tp, ENABLE_ASF)) {
++		tg3_flag_clear(tp, TSO_CAPABLE);
++		tg3_flag_clear(tp, TSO_BUG);
++		tp->fw_needed = NULL;
++	}
++
+ 	if (tg3_flag(tp, ENABLE_APE)) {
+ 		/* Allow reads and writes to the
+ 		 * APE register and memory space.

Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series	Fri Oct  5 03:37:54 2012	(r19412)
+++ dists/sid/linux/debian/patches/series	Fri Oct  5 03:40:40 2012	(r19413)
@@ -398,3 +398,4 @@
 features/arm/ahci-Add-JMicron-362-device-IDs.patch
 bugfix/all/speakup-lower-default-software-speech-rate.patch
 debian/perf-hide-abi-change-in-3.2.30.patch
+bugfix/all/tg3-Fix-TSO-CAP-for-5704-devs-w-ASF-enabled.patch



More information about the Kernel-svn-changes mailing list