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 <mcarl...@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 <mcarl...@broadcom.com>
+    Reviewed-by: Michael Chan <mc...@broadcom.com>
+    Signed-off-by: David S. Miller <da...@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

_______________________________________________
pld-cvs-commit mailing list
pld-cvs-commit@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to