mirror of https://gitee.com/openkylin/linux.git
ixgbe: Fix tx_restart_queue/non_eop_desc statistics counters
Fix the restart_queue and non_eop_desc counters from being double-counted. They are cumulative in each ring, so we don't want to add them to the cumulative result in the adapter's master counter. Otherwise, the stats will be inaccurate Signed-off-by: Mallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com> Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a3f92eea04
commit
eb985f09b2
|
@ -4511,6 +4511,7 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter)
|
|||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
u64 total_mpc = 0;
|
||||
u32 i, missed_rx = 0, mpc, bprc, lxon, lxoff, xon_off_tot;
|
||||
u64 non_eop_descs = 0, restart_queue = 0;
|
||||
|
||||
if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) {
|
||||
u64 rsc_count = 0;
|
||||
|
@ -4528,10 +4529,12 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter)
|
|||
|
||||
/* gather some stats to the adapter struct that are per queue */
|
||||
for (i = 0; i < adapter->num_tx_queues; i++)
|
||||
adapter->restart_queue += adapter->tx_ring[i].restart_queue;
|
||||
restart_queue += adapter->tx_ring[i].restart_queue;
|
||||
adapter->restart_queue = restart_queue;
|
||||
|
||||
for (i = 0; i < adapter->num_rx_queues; i++)
|
||||
adapter->non_eop_descs += adapter->tx_ring[i].non_eop_descs;
|
||||
non_eop_descs += adapter->rx_ring[i].non_eop_descs;
|
||||
adapter->non_eop_descs = non_eop_descs;
|
||||
|
||||
adapter->stats.crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS);
|
||||
for (i = 0; i < 8; i++) {
|
||||
|
|
Loading…
Reference in New Issue