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