Re: [PATCH v2 4/9] net/cnxk: remove queue stats mapping
David Marchand <[email protected]> Fri, 24 Jul 2026 09:26:10 +0200
| Newsgroups | org.dpdk.dev |
|---|---|
| Message-ID | <CAJFAV8x3t=CFs=q0uw=fhCncUMKQ82wmOpzsOz-LKEN4ez9r1w@mail.gmail.com> |
On Thu, 23 Jul 2026 at 22:30, Stephen Hemminger <[email protected]> wrote: > diff --git a/drivers/net/cnxk/cnxk_stats.c b/drivers/net/cnxk/cnxk_stats.c > index d57659ef51..e5d29a78b3 100644 > --- a/drivers/net/cnxk/cnxk_stats.c > +++ b/drivers/net/cnxk/cnxk_stats.c > @@ -14,7 +14,8 @@ cnxk_nix_stats_get(struct rte_eth_dev *eth_dev, struct rte_eth_stats *stats, > struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev); > struct roc_nix *nix = &dev->nix; > struct roc_nix_stats nix_stats; > - int rc = 0, i; > + unsigned int i; > + int rc = 0; Nit: rc is set the line after. > > rc = roc_nix_stats_get(nix, &nix_stats); > if (rc) > @@ -33,31 +34,35 @@ cnxk_nix_stats_get(struct rte_eth_dev *eth_dev, struct rte_eth_stats *stats, > stats->ibytes = nix_stats.rx_octs; > stats->ierrors = nix_stats.rx_err; > > - if (qstats != NULL) { > - for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) { > - struct roc_nix_stats_queue qstats_data; > - uint16_t qidx; > - > - if (dev->txq_stat_map[i] & (1U << 31)) { > - qidx = dev->txq_stat_map[i] & 0xFFFF; > - rc = roc_nix_stats_queue_get(nix, qidx, 0, &qstats_data); > - if (rc) > - goto exit; > - qstats->q_opackets[i] = qstats_data.tx_pkts; > - qstats->q_obytes[i] = qstats_data.tx_octs; > - qstats->q_errors[i] = qstats_data.tx_drop_pkts; > - } > - > - if (dev->rxq_stat_map[i] & (1U << 31)) { > - qidx = dev->rxq_stat_map[i] & 0xFFFF; > - rc = roc_nix_stats_queue_get(nix, qidx, 1, &qstats_data); > - if (rc) > - goto exit; > - qstats->q_ipackets[i] = qstats_data.rx_pkts; > - qstats->q_ibytes[i] = qstats_data.rx_octs; > - qstats->q_errors[i] += qstats_data.rx_drop_pkts; > - } > - } > + if (qstats == NULL) > + goto exit; > + > + for (i = 0; i < eth_dev->data->nb_tx_queues; i++) { > + struct roc_nix_stats_queue qstats_data; > + > + if (i >= RTE_ETHDEV_QUEUE_STAT_CNTRS) > + break; > + > + rc = roc_nix_stats_queue_get(nix, i, 0, &qstats_data); > + if (rc) > + goto exit; > + qstats->q_opackets[i] = qstats_data.tx_pkts; > + qstats->q_obytes[i] = qstats_data.tx_octs; > + qstats->q_errors[i] = qstats_data.tx_drop_pkts; > + } > + > + for (i = 0; i < eth_dev->data->nb_rx_queues; i++) { > + struct roc_nix_stats_queue qstats_data; > + > + if (i >= RTE_ETHDEV_QUEUE_STAT_CNTRS) > + break; > + > + rc = roc_nix_stats_queue_get(nix, i, 1, &qstats_data); > + if (rc) > + goto exit; > + qstats->q_ipackets[i] = qstats_data.rx_pkts; > + qstats->q_ibytes[i] = qstats_data.rx_octs; > + qstats->q_errors[i] += qstats_data.rx_drop_pkts; It was already there, but I find it suspicious that only Rx errors are handled like those are reset on read. -- David Marchand