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