bnxt_en: Fix accumulation of bp->net_stats_prev.
commita4c9756ac4e4161c9b9b1d0923f01bcd5633abc8
authorMichael Chan <michael.chan@broadcom.com>
Mon, 25 May 2020 21:41:17 +0000 (25 17:41 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Jun 2020 06:19:48 +0000 (3 08:19 +0200)
treeec79181a9453ea187407a26b8e36124592004ff7
parente8f7bd7b3c9f87514e6d3d8b263b7e5d12a63a6c
bnxt_en: Fix accumulation of bp->net_stats_prev.

commit b8056e8434b037fdab08158fea99ed7bc8ef3a74 upstream.

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: Vijayendra Suman <vijayendra.suman@oracle.com>
Fixes: b8875ca356f1 ("bnxt_en: Save ring statistics before reset.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c