Queues with indices greater than or equal to RTE_ETHDEV_QUEUE_STAT_CNTRS
are ignored when calculating per-queue statistics,
however they should be taken into account for calculating the total.

Signed-off-by: Oleksandr Kolomeiets <okl-...@napatech.com>
---
 drivers/net/ntnic/ntnic_ethdev.c | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c
index f9644b5826..6857191ef2 100644
--- a/drivers/net/ntnic/ntnic_ethdev.c
+++ b/drivers/net/ntnic/ntnic_ethdev.c
@@ -200,20 +200,24 @@ static int dpdk_stats_collect(struct pmd_internals 
*internals, struct rte_eth_st
         */
        ntnic_filter_ops->poll_statistics(internals);
 
-       for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS && i < 
internals->nb_rx_queues; i++) {
-               stats->q_ipackets[i] = internals->rxq_scg[i].rx_pkts;
-               stats->q_ibytes[i] = internals->rxq_scg[i].rx_bytes;
-               rx_total += stats->q_ipackets[i];
-               rx_total_b += stats->q_ibytes[i];
-       }
-
-       for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS && i < 
internals->nb_tx_queues; i++) {
-               stats->q_opackets[i] = internals->txq_scg[i].tx_pkts;
-               stats->q_obytes[i] = internals->txq_scg[i].tx_bytes;
-               stats->q_errors[i] = internals->txq_scg[i].err_pkts;
-               tx_total += stats->q_opackets[i];
-               tx_total_b += stats->q_obytes[i];
-               tx_err_total += stats->q_errors[i];
+       for (i = 0; i < internals->nb_rx_queues; i++) {
+               if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
+                       stats->q_ipackets[i] = internals->rxq_scg[i].rx_pkts;
+                       stats->q_ibytes[i] = internals->rxq_scg[i].rx_bytes;
+               }
+               rx_total += internals->rxq_scg[i].rx_pkts;
+               rx_total_b += internals->rxq_scg[i].rx_bytes;
+       }
+
+       for (i = 0; i < internals->nb_tx_queues; i++) {
+               if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
+                       stats->q_opackets[i] = internals->txq_scg[i].tx_pkts;
+                       stats->q_obytes[i] = internals->txq_scg[i].tx_bytes;
+                       stats->q_errors[i] = internals->txq_scg[i].err_pkts;
+               }
+               tx_total += internals->txq_scg[i].tx_pkts;
+               tx_total_b += internals->txq_scg[i].tx_bytes;
+               tx_err_total += internals->txq_scg[i].err_pkts;
        }
 
        stats->imissed = internals->rx_missed;
-- 
2.47.1

Reply via email to