diff options
author | Malli Chilakala <mallikarjuna.chilakala@intel.com> | 2005-04-28 22:40:40 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-05-12 20:48:53 -0400 |
commit | 70b8f1e16a788eccdd36f39679774b1a08a6ba55 (patch) | |
tree | ec8314d660c96cff7b594fd0d157a26115e23818 /drivers/net/e1000/e1000_main.c | |
parent | 2701234fc0372630457e3da14e36cde53c57d12e (diff) |
[PATCH] e1000: Dump information on Tx ring
Dump information on Tx ring when 'NETDEV: Watchdog' condition is reached
Signed-off-by: Mallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com>
Signed-off-by: Ganesh Venkatesan <ganesh.venkatesan@intel.com>
Signed-off-by: John Ronciak <john.ronciak@intel.com>
diff -up net-drivers-2.6/drivers/net/e1000/e1000_main.c net-drivers-2.6/drivers/net/e1000.new/e1000_main.c
Diffstat (limited to 'drivers/net/e1000/e1000_main.c')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 4a8c069e6c7c..b5811f4f88f0 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -2442,10 +2442,37 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter) | |||
2442 | /* detect a transmit hang in hardware, this serializes the | 2442 | /* detect a transmit hang in hardware, this serializes the |
2443 | * check with the clearing of time_stamp and movement of i */ | 2443 | * check with the clearing of time_stamp and movement of i */ |
2444 | adapter->detect_tx_hung = FALSE; | 2444 | adapter->detect_tx_hung = FALSE; |
2445 | if(tx_ring->buffer_info[i].dma && | 2445 | if (tx_ring->buffer_info[i].dma && |
2446 | time_after(jiffies, tx_ring->buffer_info[i].time_stamp + HZ) && | 2446 | time_after(jiffies, tx_ring->buffer_info[i].time_stamp + HZ) |
2447 | !(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_TXOFF)) | 2447 | && !(E1000_READ_REG(&adapter->hw, STATUS) & |
2448 | E1000_STATUS_TXOFF)) { | ||
2449 | |||
2450 | /* detected Tx unit hang */ | ||
2451 | i = tx_ring->next_to_clean; | ||
2452 | eop = tx_ring->buffer_info[i].next_to_watch; | ||
2453 | eop_desc = E1000_TX_DESC(*tx_ring, eop); | ||
2454 | DPRINTK(TX_ERR, ERR, "Detected Tx Unit Hang\n" | ||
2455 | " TDH <%x>\n" | ||
2456 | " TDT <%x>\n" | ||
2457 | " next_to_use <%x>\n" | ||
2458 | " next_to_clean <%x>\n" | ||
2459 | "buffer_info[next_to_clean]\n" | ||
2460 | " dma <%llx>\n" | ||
2461 | " time_stamp <%lx>\n" | ||
2462 | " next_to_watch <%x>\n" | ||
2463 | " jiffies <%lx>\n" | ||
2464 | " next_to_watch.status <%x>\n", | ||
2465 | E1000_READ_REG(&adapter->hw, TDH), | ||
2466 | E1000_READ_REG(&adapter->hw, TDT), | ||
2467 | tx_ring->next_to_use, | ||
2468 | i, | ||
2469 | tx_ring->buffer_info[i].dma, | ||
2470 | tx_ring->buffer_info[i].time_stamp, | ||
2471 | eop, | ||
2472 | jiffies, | ||
2473 | eop_desc->upper.fields.status); | ||
2448 | netif_stop_queue(netdev); | 2474 | netif_stop_queue(netdev); |
2475 | } | ||
2449 | } | 2476 | } |
2450 | #ifdef NETIF_F_TSO | 2477 | #ifdef NETIF_F_TSO |
2451 | 2478 | ||