aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000/e1000_main.c
diff options
context:
space:
mode:
authorMalli Chilakala <mallikarjuna.chilakala@intel.com>2005-04-28 22:40:40 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-05-12 20:48:53 -0400
commit70b8f1e16a788eccdd36f39679774b1a08a6ba55 (patch)
treeec8314d660c96cff7b594fd0d157a26115e23818 /drivers/net/e1000/e1000_main.c
parent2701234fc0372630457e3da14e36cde53c57d12e (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.c33
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