e1000: add queue restart counter
Add a netif_wake/start_queue counter to the ethtool statistics to indicated to the user that their transmit ring could be too small for their workload. Signed-off-by: Jesse brandeburg <jesse.brandeburg@intel.com> Cc: Jamal Hadi <hadi@cyberus.ca> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
This commit is contained in:
parent
fc2307d00c
commit
fcfb122425
3 changed files with 6 additions and 1 deletions
|
@ -265,6 +265,7 @@ struct e1000_adapter {
|
|||
|
||||
/* TX */
|
||||
struct e1000_tx_ring *tx_ring; /* One per active queue */
|
||||
unsigned int restart_queue;
|
||||
unsigned long tx_queue_len;
|
||||
uint32_t txd_cmd;
|
||||
uint32_t tx_int_delay;
|
||||
|
|
|
@ -85,6 +85,7 @@ static const struct e1000_stats e1000_gstrings_stats[] = {
|
|||
{ "tx_single_coll_ok", E1000_STAT(stats.scc) },
|
||||
{ "tx_multi_coll_ok", E1000_STAT(stats.mcc) },
|
||||
{ "tx_timeout_count", E1000_STAT(tx_timeout_count) },
|
||||
{ "tx_restart_queue", E1000_STAT(restart_queue) },
|
||||
{ "rx_long_length_errors", E1000_STAT(stats.roc) },
|
||||
{ "rx_short_length_errors", E1000_STAT(stats.ruc) },
|
||||
{ "rx_align_errors", E1000_STAT(stats.algnerrc) },
|
||||
|
|
|
@ -2974,6 +2974,7 @@ static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
|
|||
|
||||
/* A reprieve! */
|
||||
netif_start_queue(netdev);
|
||||
++adapter->restart_queue;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -3654,8 +3655,10 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
|
|||
* sees the new next_to_clean.
|
||||
*/
|
||||
smp_mb();
|
||||
if (netif_queue_stopped(netdev))
|
||||
if (netif_queue_stopped(netdev)) {
|
||||
netif_wake_queue(netdev);
|
||||
++adapter->restart_queue;
|
||||
}
|
||||
}
|
||||
|
||||
if (adapter->detect_tx_hung) {
|
||||
|
|
Loading…
Reference in a new issue