[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#618341: bnx2: MSI-X hang on 5709 NICs -> nic dead



Package: linux-2.6
Version: 2.6.32-bpo.5
Severity: critical
Tags: squeeze patch lenny
Justification: breaks the whole system





http://marc.info/?l=linux-netdev&m=127240304211909&w=2

here is the description from the mail , repeated:

It has been reported that under certain heavy traffic conditions
in MSI-X
mode, the driver can lose an MSI-X vector causing all packets in
the
associated rx/tx ring pair to be dropped.  The problem is caused
by
the chip dropping the write to unmask the MSI-X vector by the
kernel
(when migrating the IRQ for example).

This can be prevented by increasing the GRC timeout value for
these
register read and write operations.

Thanks to Dell for helping us debug this problem.

Signed-off-by: Michael Chan <mchan@broadcom.com>



we are using the 2.6.32 kernel and are bitten by this frequently.



vers/net/bnx2.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index a257bab..4c1e51e 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -4759,8 +4759,12 @@ bnx2_reset_chip(struct bnx2 *bp, u32 reset_code)
 		rc = bnx2_alloc_bad_rbuf(bp);
 	}
 
-	if (bp->flags & BNX2_FLAG_USING_MSIX)
+	if (bp->flags & BNX2_FLAG_USING_MSIX) {
 		bnx2_setup_msix_tbl(bp);
+		/* Prevent MSIX table reads and write from timing out */
+		REG_WR(bp, BNX2_MISC_ECO_HW_CTL,
+			BNX2_MISC_ECO_HW_CTL_LARGE_GRC_TMOUT_EN);
+	}
 
 	return rc;
 }
-- 
1.6.4.GIT


-- System Information:
Debian Release: 6.0
  APT prefers proposed-updates
  APT policy: (500, 'proposed-updates'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.37-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash



Reply to: