aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ixgbe
diff options
context:
space:
mode:
authorJosh Hay <joshua.a.hay@intel.com>2012-09-26 01:59:41 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2012-11-22 04:39:23 -0500
commit8ad88e3711d326b1441d4c198928302b13e06fc5 (patch)
treed0dc1d41c0c559b500e4a0f4e3e8767c12c85a89 /drivers/net/ethernet/intel/ixgbe
parent76e0d67a08bb195bd0ddea2fcba8c15c85eab243 (diff)
ixgbe: Reformat output of ixgbe_dump
Reformats the output of the Tx/Rx descriptor dumps to more appropriately align the output of the ixgbe_dump and improve readability. Prevents empty Tx descriptors from being displayed to decrease the size of the dump and make it more manageable. Signed-off-by: Josh Hay <joshua.a.hay@intel.com> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe')
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c75
1 files changed, 41 insertions, 34 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 38fc186c53c4..004ea6caf45f 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -336,11 +336,13 @@ static void ixgbe_dump(struct ixgbe_adapter *adapter)
336 goto exit; 336 goto exit;
337 337
338 dev_info(&adapter->pdev->dev, "TX Rings Summary\n"); 338 dev_info(&adapter->pdev->dev, "TX Rings Summary\n");
339 pr_info("Queue [NTU] [NTC] [bi(ntc)->dma ] leng ntw timestamp\n"); 339 pr_info(" %s %s %s %s\n",
340 "Queue [NTU] [NTC] [bi(ntc)->dma ]",
341 "leng", "ntw", "timestamp");
340 for (n = 0; n < adapter->num_tx_queues; n++) { 342 for (n = 0; n < adapter->num_tx_queues; n++) {
341 tx_ring = adapter->tx_ring[n]; 343 tx_ring = adapter->tx_ring[n];
342 tx_buffer = &tx_ring->tx_buffer_info[tx_ring->next_to_clean]; 344 tx_buffer = &tx_ring->tx_buffer_info[tx_ring->next_to_clean];
343 pr_info(" %5d %5X %5X %016llX %04X %p %016llX\n", 345 pr_info(" %5d %5X %5X %016llX %08X %p %016llX\n",
344 n, tx_ring->next_to_use, tx_ring->next_to_clean, 346 n, tx_ring->next_to_use, tx_ring->next_to_clean,
345 (u64)dma_unmap_addr(tx_buffer, dma), 347 (u64)dma_unmap_addr(tx_buffer, dma),
346 dma_unmap_len(tx_buffer, len), 348 dma_unmap_len(tx_buffer, len),
@@ -394,40 +396,43 @@ static void ixgbe_dump(struct ixgbe_adapter *adapter)
394 pr_info("------------------------------------\n"); 396 pr_info("------------------------------------\n");
395 pr_info("TX QUEUE INDEX = %d\n", tx_ring->queue_index); 397 pr_info("TX QUEUE INDEX = %d\n", tx_ring->queue_index);
396 pr_info("------------------------------------\n"); 398 pr_info("------------------------------------\n");
397 pr_info("T [desc] [address 63:0 ] " 399 pr_info("%s%s %s %s %s %s\n",
398 "[PlPOIdStDDt Ln] [bi->dma ] " 400 "T [desc] [address 63:0 ] ",
399 "leng ntw timestamp bi->skb\n"); 401 "[PlPOIdStDDt Ln] [bi->dma ] ",
402 "leng", "ntw", "timestamp", "bi->skb");
400 403
401 for (i = 0; tx_ring->desc && (i < tx_ring->count); i++) { 404 for (i = 0; tx_ring->desc && (i < tx_ring->count); i++) {
402 tx_desc = IXGBE_TX_DESC(tx_ring, i); 405 tx_desc = IXGBE_TX_DESC(tx_ring, i);
403 tx_buffer = &tx_ring->tx_buffer_info[i]; 406 tx_buffer = &tx_ring->tx_buffer_info[i];
404 u0 = (struct my_u0 *)tx_desc; 407 u0 = (struct my_u0 *)tx_desc;
405 pr_info("T [0x%03X] %016llX %016llX %016llX" 408 if (dma_unmap_len(tx_buffer, len) > 0) {
406 " %04X %p %016llX %p", i, 409 pr_info("T [0x%03X] %016llX %016llX %016llX %08X %p %016llX %p",
407 le64_to_cpu(u0->a), 410 i,
408 le64_to_cpu(u0->b), 411 le64_to_cpu(u0->a),
409 (u64)dma_unmap_addr(tx_buffer, dma), 412 le64_to_cpu(u0->b),
410 dma_unmap_len(tx_buffer, len), 413 (u64)dma_unmap_addr(tx_buffer, dma),
411 tx_buffer->next_to_watch,
412 (u64)tx_buffer->time_stamp,
413 tx_buffer->skb);
414 if (i == tx_ring->next_to_use &&
415 i == tx_ring->next_to_clean)
416 pr_cont(" NTC/U\n");
417 else if (i == tx_ring->next_to_use)
418 pr_cont(" NTU\n");
419 else if (i == tx_ring->next_to_clean)
420 pr_cont(" NTC\n");
421 else
422 pr_cont("\n");
423
424 if (netif_msg_pktdata(adapter) &&
425 tx_buffer->skb)
426 print_hex_dump(KERN_INFO, "",
427 DUMP_PREFIX_ADDRESS, 16, 1,
428 tx_buffer->skb->data,
429 dma_unmap_len(tx_buffer, len), 414 dma_unmap_len(tx_buffer, len),
430 true); 415 tx_buffer->next_to_watch,
416 (u64)tx_buffer->time_stamp,
417 tx_buffer->skb);
418 if (i == tx_ring->next_to_use &&
419 i == tx_ring->next_to_clean)
420 pr_cont(" NTC/U\n");
421 else if (i == tx_ring->next_to_use)
422 pr_cont(" NTU\n");
423 else if (i == tx_ring->next_to_clean)
424 pr_cont(" NTC\n");
425 else
426 pr_cont("\n");
427
428 if (netif_msg_pktdata(adapter) &&
429 tx_buffer->skb)
430 print_hex_dump(KERN_INFO, "",
431 DUMP_PREFIX_ADDRESS, 16, 1,
432 tx_buffer->skb->data,
433 dma_unmap_len(tx_buffer, len),
434 true);
435 }
431 } 436 }
432 } 437 }
433 438
@@ -497,11 +502,13 @@ rx_ring_summary:
497 pr_info("------------------------------------\n"); 502 pr_info("------------------------------------\n");
498 pr_info("RX QUEUE INDEX = %d\n", rx_ring->queue_index); 503 pr_info("RX QUEUE INDEX = %d\n", rx_ring->queue_index);
499 pr_info("------------------------------------\n"); 504 pr_info("------------------------------------\n");
500 pr_info("R [desc] [ PktBuf A0] " 505 pr_info("%s%s%s",
501 "[ HeadBuf DD] [bi->dma ] [bi->skb] " 506 "R [desc] [ PktBuf A0] ",
507 "[ HeadBuf DD] [bi->dma ] [bi->skb ] ",
502 "<-- Adv Rx Read format\n"); 508 "<-- Adv Rx Read format\n");
503 pr_info("RWB[desc] [PcsmIpSHl PtRs] " 509 pr_info("%s%s%s",
504 "[vl er S cks ln] ---------------- [bi->skb] " 510 "RWB[desc] [PcsmIpSHl PtRs] ",
511 "[vl er S cks ln] ---------------- [bi->skb ] ",
505 "<-- Adv Rx Write-Back format\n"); 512 "<-- Adv Rx Write-Back format\n");
506 513
507 for (i = 0; i < rx_ring->count; i++) { 514 for (i = 0; i < rx_ring->count; i++) {