: Fix netdev watchdog on 5708.
Subsystems (2)
PATCH 1/5 : Fix netdev watchdog on 5708.
[BNX2]: Fix netdev watchdog on 5708.
There's a bug in the driver that only initializes half of the context memory on the 5708. Surprisingly, this works most of the time except for some occasional netdev watchdogs when sending a lot of 64-byte packets. The fix is to add the missing code to initialize the 2nd halves of all context memory.
drivers/net/bnx2.c +13 -8
@@ -1811,6 +1811,7 @@ bnx2_init_context(struct bnx2 *bp) vcid =96 ;while (vcid) {u32 vcid_addr, pcid_addr, offset; +int i; vcid--;
@@ -1831,16 +1832,20 @@ bnx2_init_context(struct bnx2 *bp) pcid_addr = vcid_addr; } -REG_WR (bp,BNX2_CTX_VIRT_ADDR ,0x00 ); -REG_WR (bp,BNX2_CTX_PAGE_TBL , pcid_addr); +for (i =0 ; i < (CTX_SIZE /PHY_CTX_SIZE ); i++) { + vcid_addr += (i <<PHY_CTX_SHIFT ); + pcid_addr += (i <<PHY_CTX_SHIFT ); -/* Zero out the context. */ -for (offset =0 ; offset <PHY_CTX_SIZE ; offset +=4 ) { -CTX_WR (bp,0x00 , offset,0 ); - } +REG_WR (bp,BNX2_CTX_VIRT_ADDR ,0x00 ); +REG_WR (bp,BNX2_CTX_PAGE_TBL , pcid_addr); -REG_WR (bp,BNX2_CTX_VIRT_ADDR , vcid_addr); -REG_WR (bp,BNX2_CTX_PAGE_TBL , pcid_addr); +/* Zero out the context. */ +for (offset =0 ; offset <PHY_CTX_SIZE ; offset +=4 ) +CTX_WR (bp,0x00 , offset,0 ); + +REG_WR (bp,BNX2_CTX_VIRT_ADDR , vcid_addr); +REG_WR (bp,BNX2_CTX_PAGE_TBL , pcid_addr); + } } }
Quoted 9 lines · Michael Chan
[BNX2]: Fix netdev watchdog on 5708.
There's a bug in the driver that only initializes half of the context memory on the 5708. Surprisingly, this works most of the time except for some occasional netdev watchdogs when sending a lot of 64-byte packets. The fix is to add the missing code to initialize the 2nd halves of all context memory.
Signed-off-by Michael Chan <[email protected]>
ACK patch 1, and 3-5
From: "Michael Chan" <[email protected]>
Date: Mon, 04 Jun 2007 17:00:03 -0700
Quoted 9 lines
[BNX2]: Fix netdev watchdog on 5708.
There's a bug in the driver that only initializes half of the context memory on the 5708. Surprisingly, this works most of the time except for some occasional netdev watchdogs when sending a lot of 64-byte packets. The fix is to add the missing code to initialize the 2nd halves of all context memory.
Signed-off-by Michael Chan <[email protected]>
Applied, thanks Michael.