tg3: Prevent send BD corruption
authorMatt Carlson <mcarlson@broadcom.com>
Mon, 20 Apr 2009 06:57:41 +0000 (06:57 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Apr 2009 08:41:01 +0000 (01:41 -0700)
On rare occasions, send BD corruptions can occur.  This patch
fixes the problem by increasing the L1 entry threshold to 4
milliseconds.

Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tg3.c
drivers/net/tg3.h

index 9b04954b6943ffe3ff73e90c8ba8bf0054b9e7e9..ed7a86df98cd2907d780a4e2ff47d5a670fa5b4b 100644 (file)
@@ -6717,6 +6717,13 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
                tw32(TG3_CPMU_HST_ACC, val);
        }
 
+       if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780) {
+               val = tr32(PCIE_PWR_MGMT_THRESH) & ~PCIE_PWR_MGMT_L1_THRESH_MSK;
+               val |= PCIE_PWR_MGMT_EXT_ASPM_TMR_EN |
+                      PCIE_PWR_MGMT_L1_THRESH_4MS;
+               tw32(PCIE_PWR_MGMT_THRESH, val);
+       }
+
        /* This works around an issue with Athlon chipsets on
         * B3 tigon3 silicon.  This bit has no effect on any
         * other revision.  But do not set this on PCI Express
index afbabf283c51fbbf648602c7d3a3f53b37859fce..f1016cb1a89ad5f3c3784fd84f5a5c9cb1bd0d05 100644 (file)
 
 #define PCIE_PWR_MGMT_THRESH           0x00007d28
 #define PCIE_PWR_MGMT_L1_THRESH_MSK     0x0000ff00
+#define PCIE_PWR_MGMT_L1_THRESH_4MS     0x0000ff00
+#define PCIE_PWR_MGMT_EXT_ASPM_TMR_EN   0x01000000
 
 
 /* OTP bit definitions */