net/hns3: fix imprecise statistics
authorChengchang Tang <tangchengchang@huawei.com>
Thu, 4 Mar 2021 07:44:54 +0000 (15:44 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 4 Mar 2021 14:07:14 +0000 (15:07 +0100)
commit1e28e842e08428ff5716fbe909bf5acd0365aaf6
tree72ad7639d87ea94bf8e49a774462f6f252ed6811
parent5f8845f4ba8f8059710bdcc39306f91743532c69
net/hns3: fix imprecise statistics

Currently, the hns3 statistics may be inaccurate due to the
following two problems:

1. Queue-level statistics are read from the firmware, and only one Rx or
   Tx can be read at a time. This results in a large time interval
   between reading multiple queues statistics in a stress scenario, such
   as 1280 queues used by a PF or 256 functions used at the same time.
   Especially when the 256 functions are used at the same time, the
   interval between every two firmware commands in a function can be
   huge, because the scheduling mechanism of the firmware is similar to
   RR.

2. The current statistics are read by type. The HW statistics are read
   first, and then the software statistics are read. Due to preceding
   reasons, HW reading may be time-consuming, which cause a
   synchronization problem between SW and HW statistics of the same
   queue.

In this patch, queue-level statistics are directly read from the bar
instead of the firmware, and all the statistics of a queue include HW
and SW are read at a time to reduce inconsistency.

Fixes: 8839c5e202f3 ("net/hns3: support device stats")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
drivers/net/hns3/hns3_stats.c