summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMatt Carlson <mcarlson@broadcom.com>2010-02-12 17:47:09 +0300
committerDavid S. Miller <davem@davemloft.net>2010-02-13 04:05:53 +0300
commit0339e4e3effeae71e2b19c6340ef9672fb7a2cb3 (patch)
treed54025d2a5ba9e9dd76e8cb736b673acafbf5b4b /drivers
parent6b10c1653e425e30cff7f41d0e6f9743bfa9810f (diff)
downloadlinux-0339e4e3effeae71e2b19c6340ef9672fb7a2cb3.tar.xz
tg3: Turn off multiple DMA reads for 5717
The 5717's DMA read engine has a bug when initiating multiple DMA reads across the PCIe bus. This patch disables the feature. Signed-off-by: Matt Carlson <mcarlson@broadcom.com> Reviewed-by: Michael Chan <mchan@broadcom.com> Reviewed-by: Benjamin Li <benli@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/tg3.c3
-rw-r--r--drivers/net/tg3.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 2c5e1b7e1088..673ea314aa18 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -7915,6 +7915,9 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
RDMAC_MODE_FIFOURUN_ENAB | RDMAC_MODE_FIFOOREAD_ENAB |
RDMAC_MODE_LNGREAD_ENAB);
+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717)
+ rdmac_mode |= RDMAC_MODE_MULT_DMA_RD_DIS;
+
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 ||
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5785 ||
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780)
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index 46db4ad46bbc..a8fb53aaf742 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -1258,6 +1258,7 @@
#define RDMAC_MODE_MBUF_SBD_CRPT_ENAB 0x00002000
#define RDMAC_MODE_FIFO_SIZE_128 0x00020000
#define RDMAC_MODE_FIFO_LONG_BURST 0x00030000
+#define RDMAC_MODE_MULT_DMA_RD_DIS 0x01000000
#define RDMAC_MODE_IPV4_LSO_EN 0x08000000
#define RDMAC_MODE_IPV6_LSO_EN 0x10000000
#define RDMAC_STATUS 0x00004804