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