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

Reply via email to