diff options
-rw-r--r-- | drivers/net/igb/igb_ethtool.c | 1 | ||||
-rw-r--r-- | drivers/net/igb/igb_main.c | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/igb/igb_ethtool.c index 2ae98f91372e..9598ac09f4b8 100644 --- a/drivers/net/igb/igb_ethtool.c +++ b/drivers/net/igb/igb_ethtool.c | |||
@@ -64,6 +64,7 @@ static const struct igb_stats igb_gstrings_stats[] = { | |||
64 | { "rx_crc_errors", IGB_STAT(stats.crcerrs) }, | 64 | { "rx_crc_errors", IGB_STAT(stats.crcerrs) }, |
65 | { "rx_frame_errors", IGB_STAT(net_stats.rx_frame_errors) }, | 65 | { "rx_frame_errors", IGB_STAT(net_stats.rx_frame_errors) }, |
66 | { "rx_no_buffer_count", IGB_STAT(stats.rnbc) }, | 66 | { "rx_no_buffer_count", IGB_STAT(stats.rnbc) }, |
67 | { "rx_queue_drop_packet_count", IGB_STAT(net_stats.rx_fifo_errors) }, | ||
67 | { "rx_missed_errors", IGB_STAT(stats.mpc) }, | 68 | { "rx_missed_errors", IGB_STAT(stats.mpc) }, |
68 | { "tx_aborted_errors", IGB_STAT(stats.ecol) }, | 69 | { "tx_aborted_errors", IGB_STAT(stats.ecol) }, |
69 | { "tx_carrier_errors", IGB_STAT(stats.tncrs) }, | 70 | { "tx_carrier_errors", IGB_STAT(stats.tncrs) }, |
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 4ae81331dca5..8e93750d5120 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -3590,6 +3590,7 @@ void igb_update_stats(struct igb_adapter *adapter) | |||
3590 | 3590 | ||
3591 | if (hw->mac.type != e1000_82575) { | 3591 | if (hw->mac.type != e1000_82575) { |
3592 | u32 rqdpc_tmp; | 3592 | u32 rqdpc_tmp; |
3593 | u64 rqdpc_total = 0; | ||
3593 | int i; | 3594 | int i; |
3594 | /* Read out drops stats per RX queue. Notice RQDPC (Receive | 3595 | /* Read out drops stats per RX queue. Notice RQDPC (Receive |
3595 | * Queue Drop Packet Count) stats only gets incremented, if | 3596 | * Queue Drop Packet Count) stats only gets incremented, if |
@@ -3602,9 +3603,18 @@ void igb_update_stats(struct igb_adapter *adapter) | |||
3602 | for (i = 0; i < adapter->num_rx_queues; i++) { | 3603 | for (i = 0; i < adapter->num_rx_queues; i++) { |
3603 | rqdpc_tmp = rd32(E1000_RQDPC(i)) & 0xFFF; | 3604 | rqdpc_tmp = rd32(E1000_RQDPC(i)) & 0xFFF; |
3604 | adapter->rx_ring[i].rx_stats.drops += rqdpc_tmp; | 3605 | adapter->rx_ring[i].rx_stats.drops += rqdpc_tmp; |
3606 | rqdpc_total += adapter->rx_ring[i].rx_stats.drops; | ||
3605 | } | 3607 | } |
3608 | adapter->net_stats.rx_fifo_errors = rqdpc_total; | ||
3606 | } | 3609 | } |
3607 | 3610 | ||
3611 | /* Note RNBC (Receive No Buffers Count) is an not an exact | ||
3612 | * drop count as the hardware FIFO might save the day. Thats | ||
3613 | * one of the reason for saving it in rx_fifo_errors, as its | ||
3614 | * potentially not a true drop. | ||
3615 | */ | ||
3616 | adapter->net_stats.rx_fifo_errors += adapter->stats.rnbc; | ||
3617 | |||
3608 | /* RLEC on some newer hardware can be incorrect so build | 3618 | /* RLEC on some newer hardware can be incorrect so build |
3609 | * our own version based on RUC and ROC */ | 3619 | * our own version based on RUC and ROC */ |
3610 | adapter->net_stats.rx_errors = adapter->stats.rxerrc + | 3620 | adapter->net_stats.rx_errors = adapter->stats.rxerrc + |