Messages in this thread Patch in this message | | | Subject | Re: BNX2: Kernel crashes with 2.6.31 and 2.6.31.9 | From | "Michael Chan" <> | Date | Thu, 11 Mar 2010 11:47:28 -0800 |
| |
On Thu, 2010-03-11 at 11:40 -0800, Brian Haley wrote: > I can only reproduce this on one system out of many, so it's either a > race condition or bad hardware. The only thing I can confirm at the > moment is that it's the code at the bottom of bnx2_set_coalesce() > that's causing it, I'm trying to go through all those codepaths now. >
The NETDEV WATCHDOG is caused by stopping the TX queues with ->trans_start older than dev->watchdog_timeo which is set to 5 seconds in bnx2. Please try this patch below to update the ->trans_start first before stopping the TX queues:
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index d3f739a..c0f4aa7 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c @@ -656,7 +656,6 @@ bnx2_netif_stop(struct bnx2 *bp) int i; bnx2_napi_disable(bp); - netif_tx_disable(bp->dev); /* prevent tx timeout */ for (i = 0; i < bp->dev->num_tx_queues; i++) { struct netdev_queue *txq; @@ -664,6 +663,7 @@ bnx2_netif_stop(struct bnx2 *bp) txq = netdev_get_tx_queue(bp->dev, i); txq->trans_start = jiffies; } + netif_tx_disable(bp->dev); } bnx2_disable_int_sync(bp); }
| |