bnx2x: Increase DMAE max write size for 57711
authorVladislav Zolotarov <vladz@broadcom.com>
Mon, 19 Apr 2010 01:13:33 +0000 (01:13 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 19 Apr 2010 20:17:07 +0000 (13:17 -0700)
Increase DMAE max write size for 57711 to the maximum allowed value.

Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2x.h
drivers/net/bnx2x_main.c

index 694c8cd..150bd08 100644 (file)
@@ -1168,7 +1168,7 @@ static inline u32 reg_poll(struct bnx2x *bp, u32 reg, u32 expected, int ms,
 #define DMAE_CMD_E1HVN_SHIFT           DMAE_COMMAND_E1HVN_SHIFT
 
 #define DMAE_LEN32_RD_MAX              0x80
-#define DMAE_LEN32_WR_MAX              0x400
+#define DMAE_LEN32_WR_MAX(bp)          (CHIP_IS_E1(bp) ? 0x400 : 0x2000)
 
 #define DMAE_COMP_VAL                  0xe0d0d0ae
 
index d088486..3325592 100644 (file)
@@ -352,13 +352,14 @@ void bnx2x_read_dmae(struct bnx2x *bp, u32 src_addr, u32 len32)
 void bnx2x_write_dmae_phys_len(struct bnx2x *bp, dma_addr_t phys_addr,
                               u32 addr, u32 len)
 {
+       int dmae_wr_max = DMAE_LEN32_WR_MAX(bp);
        int offset = 0;
 
-       while (len > DMAE_LEN32_WR_MAX) {
+       while (len > dmae_wr_max) {
                bnx2x_write_dmae(bp, phys_addr + offset,
-                                addr + offset, DMAE_LEN32_WR_MAX);
-               offset += DMAE_LEN32_WR_MAX * 4;
-               len -= DMAE_LEN32_WR_MAX;
+                                addr + offset, dmae_wr_max);
+               offset += dmae_wr_max * 4;
+               len -= dmae_wr_max;
        }
 
        bnx2x_write_dmae(bp, phys_addr + offset, addr + offset, len);