packages: kernel/kernel-small_fixes.patch tg3: Fix io failures after chip r...

arekm arekm at pld-linux.org
Fri Sep 23 20:52:20 CEST 2011


Author: arekm                        Date: Fri Sep 23 18:52:20 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
tg3: Fix io failures after chip reset

---- Files affected:
packages/kernel:
   kernel-small_fixes.patch (1.36 -> 1.37) 

---- Diffs:

================================================================
Index: packages/kernel/kernel-small_fixes.patch
diff -u packages/kernel/kernel-small_fixes.patch:1.36 packages/kernel/kernel-small_fixes.patch:1.37
--- packages/kernel/kernel-small_fixes.patch:1.36	Sat Sep 10 21:08:02 2011
+++ packages/kernel/kernel-small_fixes.patch	Fri Sep 23 20:52:15 2011
@@ -801,3 +801,60 @@
  
  	trace_xfs_file_read(ip, size, iocb->ki_pos, ioflags);
  
+commit 9e975cc291d80d5e4562d6bed15ec171e896d69b
+Author: Matt Carlson <mcarlson at broadcom.com>
+Date:   Wed Jul 20 10:20:50 2011 +0000
+
+    tg3: Fix io failures after chip reset
+    
+    Commit f2096f94b514d88593355995d5dd276961e88af1, entitled
+    "tg3: Add 5720 H2BMC support", needed to add code to preserve some bits
+    set by firmware.  Unfortunately the new code causes throughput to stop
+    after a chip reset because it enables state machines before they are
+    ready.  This patch undoes the problematic code.  The bits will be
+    restored later in the init sequence.
+    
+    Signed-off-by: Matt Carlson <mcarlson at broadcom.com>
+    Reviewed-by: Michael Chan <mchan at broadcom.com>
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
+diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
+index a5ff82d..5bf7671 100644
+--- a/drivers/net/tg3.c
++++ b/drivers/net/tg3.c
+@@ -7412,16 +7412,11 @@ static int tg3_chip_reset(struct tg3 *tp)
+ 		tw32(TG3PCI_CLOCK_CTRL, tp->pci_clock_ctrl);
+ 	}
+ 
+-	if (tg3_flag(tp, ENABLE_APE))
+-		tp->mac_mode = MAC_MODE_APE_TX_EN |
+-			       MAC_MODE_APE_RX_EN |
+-			       MAC_MODE_TDE_ENABLE;
+-
+ 	if (tp->phy_flags & TG3_PHYFLG_PHY_SERDES) {
+-		tp->mac_mode |= MAC_MODE_PORT_MODE_TBI;
++		tp->mac_mode = MAC_MODE_PORT_MODE_TBI;
+ 		val = tp->mac_mode;
+ 	} else if (tp->phy_flags & TG3_PHYFLG_MII_SERDES) {
+-		tp->mac_mode |= MAC_MODE_PORT_MODE_GMII;
++		tp->mac_mode = MAC_MODE_PORT_MODE_GMII;
+ 		val = tp->mac_mode;
+ 	} else
+ 		val = 0;
+@@ -8559,12 +8554,11 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
+ 		udelay(10);
+ 	}
+ 
+-	if (tg3_flag(tp, ENABLE_APE))
+-		tp->mac_mode = MAC_MODE_APE_TX_EN | MAC_MODE_APE_RX_EN;
+-	else
+-		tp->mac_mode = 0;
+ 	tp->mac_mode |= MAC_MODE_TXSTAT_ENABLE | MAC_MODE_RXSTAT_ENABLE |
+-		MAC_MODE_TDE_ENABLE | MAC_MODE_RDE_ENABLE | MAC_MODE_FHDE_ENABLE;
++			MAC_MODE_TDE_ENABLE | MAC_MODE_RDE_ENABLE |
++			MAC_MODE_FHDE_ENABLE;
++	if (tg3_flag(tp, ENABLE_APE))
++		tp->mac_mode |= MAC_MODE_APE_TX_EN | MAC_MODE_APE_RX_EN;
+ 	if (!tg3_flag(tp, 5705_PLUS) &&
+ 	    !(tp->phy_flags & TG3_PHYFLG_PHY_SERDES) &&
+ 	    GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5700)
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-small_fixes.patch?r1=1.36&r2=1.37&f=u



More information about the pld-cvs-commit mailing list