On Wed, Apr 21, 2021 at 4:09 PM Stephen Hemminger wrote: > > An application using rte_flow may define a large number of queues > but only use a small subset of them at any one time. > > Since querying the status of each queue requires a request/spin/reply > with the firmware, optimize by skipping the request for queues not running. > For those queues the statistics will be 0. > > This cuts the cost of single xstats query in half and has even > bigger gain for simple stats query. > > Signed-off-by: Stephen Hemminger Changed the commit headline to "net/bnxt: skip get statistics for stopped queues" Patch applied to dpdk-next-net-brcm. Thanks > --- > drivers/net/bnxt/bnxt_stats.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c > index bb4b2eee194e..11767e06d074 100644 > --- a/drivers/net/bnxt/bnxt_stats.c > +++ b/drivers/net/bnxt/bnxt_stats.c > @@ -528,6 +528,8 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev, > struct bnxt_rx_queue *rxq = bp->rx_queues[i]; > struct bnxt_cp_ring_info *cpr = rxq->cp_ring; > > + if (!rxq->rx_started) > + continue; > rc = bnxt_hwrm_ctx_qstats(bp, cpr->hw_stats_ctx_id, i, > bnxt_stats, 1); > if (unlikely(rc)) > @@ -543,6 +545,8 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev, > struct bnxt_tx_queue *txq = bp->tx_queues[i]; > struct bnxt_cp_ring_info *cpr = txq->cp_ring; > > + if (!txq->tx_started) > + continue; > rc = bnxt_hwrm_ctx_qstats(bp, cpr->hw_stats_ctx_id, i, > bnxt_stats, 0); > if (unlikely(rc)) > -- > 2.30.2 >