Commit b8056e84 authored by Michael Chan's avatar Michael Chan Committed by David S. Miller

bnxt_en: Fix accumulation of bp->net_stats_prev.

We have logic to maintain network counters across resets by storing
the counters in bp->net_stats_prev before reset.  But not all resets
will clear the counters.  Certain resets that don't need to change
the number of rings do not clear the counters.  The current logic
accumulates the counters before all resets, causing big jumps in
the counters after some resets, such as ethtool -G.

Fix it by only accumulating the counters during reset if the irq_re_init
parameter is set.  The parameter signifies that all rings and interrupts
will be reset and that means that the counters will also be reset.
Reported-by: default avatarVijayendra Suman <vijayendra.suman@oracle.com>
Fixes: b8875ca3 ("bnxt_en: Save ring statistics before reset.")
Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 591612aa
...@@ -9310,7 +9310,7 @@ static void __bnxt_close_nic(struct bnxt *bp, bool irq_re_init, ...@@ -9310,7 +9310,7 @@ static void __bnxt_close_nic(struct bnxt *bp, bool irq_re_init,
bnxt_free_skbs(bp); bnxt_free_skbs(bp);
/* Save ring stats before shutdown */ /* Save ring stats before shutdown */
if (bp->bnapi) if (bp->bnapi && irq_re_init)
bnxt_get_ring_stats(bp, &bp->net_stats_prev); bnxt_get_ring_stats(bp, &bp->net_stats_prev);
if (irq_re_init) { if (irq_re_init) {
bnxt_free_irq(bp); bnxt_free_irq(bp);
......
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