[PATCH] net/null: fix Tx statistics accumulation

Zhanibek Bakin
2026-01-29T08:51:56Z

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: stable@dpdk.org

Signed-off-by: Zhanibek Bakin <zhanibek.bakin@gmail.com>
---
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