The eth_stats_get() function incorrectly uses assignment (=) instead
of accumulation (+=) for opackets and obytes in the TX queue loop.
This causes only the last TX queue's statistics to be reported,
while the RX side correctly uses +=.
Fixes: 31326ce7f15 ("net/null: count all queues")
Cc: [email protected]
Signed-off-by: Zhanibek Bakin <[email protected]>
---
drivers/net/null/rte_eth_null.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c
index 46e7e7bd8c..7fba3a661b 100644
--- a/drivers/net/null/rte_eth_null.c
+++ b/drivers/net/null/rte_eth_null.c
@@ -345,8 +345,8 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats
*stats,
pkts = rte_atomic_load_explicit(&q->tx_pkts,
rte_memory_order_relaxed);
bytes = rte_atomic_load_explicit(&q->tx_bytes,
rte_memory_order_relaxed);
- stats->opackets = pkts;
- stats->obytes = bytes;
+ stats->opackets += pkts;
+ stats->obytes += bytes;
if (qstats != NULL && i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
qstats->q_opackets[i] = pkts;
--
2.43.0