Commit a0eaf75c authored by Rajesh Borundia's avatar Rajesh Borundia Committed by David S. Miller

qlcnic: Fix update of ethtool stats.

o Aggregating tx stats in adapter variable was resulting in
  an increase in stats even after no traffic was run and
  user runs ifconfig/ethtool command.
o qlcnic_update_stats used to accumulate stats in adapter
  struct at each function call, instead accumulate tx stats
  in local variable and then assign it to adapter structure.
Reported-by: default avatarHolger Kiehl <holger.kiehl@dwd.de>
Signed-off-by: default avatarRajesh Borundia <rajesh.borundia@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f2294eb5
...@@ -1290,17 +1290,25 @@ static u64 *qlcnic_fill_stats(u64 *data, void *stats, int type) ...@@ -1290,17 +1290,25 @@ static u64 *qlcnic_fill_stats(u64 *data, void *stats, int type)
void qlcnic_update_stats(struct qlcnic_adapter *adapter) void qlcnic_update_stats(struct qlcnic_adapter *adapter)
{ {
struct qlcnic_tx_queue_stats tx_stats;
struct qlcnic_host_tx_ring *tx_ring; struct qlcnic_host_tx_ring *tx_ring;
int ring; int ring;
memset(&tx_stats, 0, sizeof(tx_stats));
for (ring = 0; ring < adapter->drv_tx_rings; ring++) { for (ring = 0; ring < adapter->drv_tx_rings; ring++) {
tx_ring = &adapter->tx_ring[ring]; tx_ring = &adapter->tx_ring[ring];
adapter->stats.xmit_on += tx_ring->tx_stats.xmit_on; tx_stats.xmit_on += tx_ring->tx_stats.xmit_on;
adapter->stats.xmit_off += tx_ring->tx_stats.xmit_off; tx_stats.xmit_off += tx_ring->tx_stats.xmit_off;
adapter->stats.xmitcalled += tx_ring->tx_stats.xmit_called; tx_stats.xmit_called += tx_ring->tx_stats.xmit_called;
adapter->stats.xmitfinished += tx_ring->tx_stats.xmit_finished; tx_stats.xmit_finished += tx_ring->tx_stats.xmit_finished;
adapter->stats.txbytes += tx_ring->tx_stats.tx_bytes; tx_stats.tx_bytes += tx_ring->tx_stats.tx_bytes;
} }
adapter->stats.xmit_on = tx_stats.xmit_on;
adapter->stats.xmit_off = tx_stats.xmit_off;
adapter->stats.xmitcalled = tx_stats.xmit_called;
adapter->stats.xmitfinished = tx_stats.xmit_finished;
adapter->stats.txbytes = tx_stats.tx_bytes;
} }
static u64 *qlcnic_fill_tx_queue_stats(u64 *data, void *stats) static u64 *qlcnic_fill_tx_queue_stats(u64 *data, void *stats)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment