From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>
Subject: [PATCH v4 00/16] per-queue statistics changes
Date: Fri, 14 Aug 2026 12:45:56 -0700 [thread overview]
Message-ID: <20260814194757.329424-1-stephen@networkplumber.org> (raw)
In-Reply-To: <20260530161151.873199-1-stephen@networkplumber.org>
This series completes the removal of the per-queue stats mapping and
the RTE_ETHDEV_QUEUE_STAT_CNTRS definition.
The mapping mechanism (rte_eth_dev_set_{rx,tx}_queue_stats_mapping and
the queue_stats_mapping_set ethdev op) was a workaround for hardware
that could only expose a limited number of queue stat registers. It let
an application fold many queues onto a small set of counters. Since
25.11 queue statistics are filled in directly by the ethdev layer
indexed by queue id, so the mapping is no longer needed; the functions
were deprecated then by commit 2863cbd9ee6d.
The large patch is the tree wide removal of RTE_ETHDEV_QUEUE_STAT_CNTRS.
Instead ethdev allocates the temporary qstats array from the number of
queues the device reports, before querying the driver. Error counters
are no longer per-queue since that wasn't that helpful; they are global
now. The mapping of per-queue stats into xstats is unchanged and the
user visible xstats stay the same, so the impact is limited to the
driver API.
Several bugs turned up along the way and are split out as their own
fixes with Fixes: and Cc: stable tags where they apply to released
code.
A test for per-queue statistics is added to the pmd_ring test so this
path has coverage.
v4
- work around RTE_MIN() not being treated as a constant expression by
gcc, which turned an array declaration into a VLA
- drop RTE_MIN4() and open code the comparison in bnxt instead
- fix a couple of other bugs found in bnxt and zxdh
- keep the ixgbe queue stats mapping registers programmed the same way
as before this series, rather than changing what the hardware
counters measure
v3
- split the sxe2 null dereference into its own fix ahead of the rework
- size the sxe2 multi-process shared qstats array for every queue the
primary may write
- reorder the cnxk fix ahead of the cnxk rework so it backports
Stephen Hemminger (16):
net/virtio: remove unused queue stats mapping
app/testpmd: remove leftover set qmap
net/enic: remove unneeded ops initialization
net/cnxk: fix Tx drops added to Rx queue errors
net/cnxk: remove queue stats mapping
net/e1000: remove queue stats mapping
net/ixgbe: remove queue stats mapping
net/txgbe: remove queue stats mapping
net/sxe2: fix null dereference in stats get
net/sxe2: remove queue stats mapping
ethdev: remove support for queue stats mapping
net/mvpp2: fix out of range Tx queue stats write
net/ntnic: fix Tx errors reported as Rx queue errors
net/xsc: fix Tx errors added to Rx queue errors
ethdev: remove queue stats counter limit
test/pmd_ring: test per-queue xstats
app/test-pmd/cmdline.c | 6 -
app/test-pmd/testpmd.h | 2 -
app/test/test_pmd_ring.c | 145 ++++++++++++++++++
doc/guides/howto/debug_troubleshoot.rst | 5 +-
doc/guides/nics/bnxt.rst | 4 +-
doc/guides/nics/features.rst | 12 +-
doc/guides/rel_notes/deprecation.rst | 6 -
doc/guides/rel_notes/release_26_11.rst | 9 ++
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 11 --
drivers/net/af_packet/rte_eth_af_packet.c | 15 +-
drivers/net/af_xdp/rte_eth_af_xdp.c | 13 +-
drivers/net/ark/ark_ethdev_rx.c | 7 +-
drivers/net/ark/ark_ethdev_tx.c | 6 +-
drivers/net/atlantic/atl_ethdev.c | 13 +-
drivers/net/atlantic/atl_rxtx.c | 8 +-
drivers/net/atlantic/atl_types.h | 15 +-
drivers/net/avp/avp_ethdev.c | 13 +-
drivers/net/axgbe/axgbe_ethdev.c | 13 +-
drivers/net/bnxt/bnxt_ethdev.c | 5 -
drivers/net/bnxt/bnxt_reps.c | 9 +-
drivers/net/bnxt/bnxt_stats.c | 40 ++---
drivers/net/cnxk/cnxk_ethdev.c | 1 -
drivers/net/cnxk/cnxk_ethdev.h | 6 -
drivers/net/cnxk/cnxk_rep_ops.c | 8 +-
drivers/net/cnxk/cnxk_stats.c | 67 +++-----
drivers/net/dpaa2/dpaa2_ethdev.c | 17 +-
drivers/net/ena/ena_ethdev.c | 21 +--
drivers/net/enic/enic_ethdev.c | 11 --
drivers/net/hinic/hinic_pmd_ethdev.c | 17 +-
drivers/net/hinic3/hinic3_ethdev.c | 13 +-
drivers/net/intel/e1000/igc_ethdev.c | 57 ++-----
drivers/net/intel/e1000/igc_ethdev.h | 2 -
drivers/net/intel/fm10k/fm10k_ethdev.c | 16 +-
drivers/net/intel/ixgbe/ixgbe_ethdev.c | 112 ++------------
drivers/net/intel/ixgbe/ixgbe_ethdev.h | 9 --
drivers/net/ionic/ionic_lif.c | 24 +--
drivers/net/mana/mana.c | 12 +-
drivers/net/memif/rte_eth_memif.c | 16 +-
drivers/net/mlx4/mlx4_ethdev.c | 14 +-
drivers/net/mlx5/mlx5_rx.h | 3 +-
drivers/net/mlx5/mlx5_stats.c | 22 ++-
drivers/net/mvpp2/mrvl_ethdev.c | 21 ++-
drivers/net/nbl/nbl_dev/nbl_dev.c | 2 -
drivers/net/nbl/nbl_hw/nbl_txrx.c | 12 +-
drivers/net/netvsc/hn_ethdev.c | 12 +-
drivers/net/netvsc/hn_vf.c | 3 +-
drivers/net/nfb/nfb_stats.c | 12 +-
drivers/net/nfp/flower/nfp_flower.c | 8 +-
.../net/nfp/flower/nfp_flower_representor.c | 32 ++--
.../net/nfp/flower/nfp_flower_representor.h | 4 +-
drivers/net/nfp/nfp_ethdev.c | 13 ++
drivers/net/nfp/nfp_ethdev_vf.c | 13 ++
drivers/net/nfp/nfp_net_common.c | 36 ++---
drivers/net/nfp/nfp_net_common.h | 3 +-
drivers/net/ngbe/ngbe_ethdev.c | 34 +---
drivers/net/ngbe/ngbe_ethdev.h | 12 --
drivers/net/ntnic/ntnic_ethdev.c | 13 +-
drivers/net/null/rte_eth_null.c | 12 +-
drivers/net/octeon_ep/otx_ep_ethdev.c | 13 +-
drivers/net/pcap/pcap_ethdev.c | 14 +-
drivers/net/qede/qede_ethdev.c | 36 +----
drivers/net/ring/rte_eth_ring.c | 10 +-
drivers/net/rnp/rnp_ethdev.c | 12 +-
drivers/net/sxe2/sxe2_cmd_chnl.c | 119 ++------------
drivers/net/sxe2/sxe2_cmd_chnl.h | 10 --
drivers/net/sxe2/sxe2_ethdev.c | 5 -
drivers/net/sxe2/sxe2_mp.c | 17 +-
drivers/net/sxe2/sxe2_mp.h | 7 +-
drivers/net/sxe2/sxe2_stats.c | 84 +---------
drivers/net/sxe2/sxe2_stats.h | 5 -
drivers/net/tap/rte_eth_tap.c | 12 +-
drivers/net/thunderx/nicvf_ethdev.c | 24 +--
drivers/net/txgbe/txgbe_ethdev.c | 89 +----------
drivers/net/txgbe/txgbe_ethdev.h | 13 --
drivers/net/vhost/rte_eth_vhost.c | 14 +-
drivers/net/virtio/virtio_ethdev.c | 33 +---
drivers/net/vmxnet3/vmxnet3_ethdev.c | 13 +-
drivers/net/xsc/xsc_ethdev.c | 15 +-
drivers/net/zxdh/zxdh_ethdev_ops.c | 24 +--
lib/ethdev/ethdev_driver.h | 38 ++---
lib/ethdev/ethdev_private.c | 2 -
lib/ethdev/ethdev_trace.h | 20 ---
lib/ethdev/ethdev_trace_points.c | 6 -
lib/ethdev/rte_ethdev.c | 128 +++++-----------
lib/ethdev/rte_ethdev.h | 45 ------
85 files changed, 648 insertions(+), 1207 deletions(-)
--
2.53.0
next prev parent reply other threads:[~2026-08-14 20:19 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-30 16:09 [RFC 0/7] Complete removal of queue stats mapping Stephen Hemminger
2026-05-30 16:09 ` [RFC 1/7] net/virtio: remove unused " Stephen Hemminger
2026-05-30 16:09 ` [RFC 2/7] net/enic: remove queue_stats_mapping ethdev_op Stephen Hemminger
2026-05-30 16:09 ` [RFC 3/7] net/cnxk: remove queue stats mapping Stephen Hemminger
2026-05-30 16:09 ` [RFC 4/7] net/e1000: " Stephen Hemminger
2026-05-30 16:10 ` [RFC 5/7] net/ixgbe: " Stephen Hemminger
2026-05-30 16:10 ` [RFC 6/7] net/txgbe: " Stephen Hemminger
2026-05-30 16:10 ` [RFC 7/7] ethdev: remove support for " Stephen Hemminger
2026-06-01 1:56 ` fengchengwen
2026-06-01 8:45 ` Andrew Rybchenko
2026-07-23 20:28 ` [PATCH v2 0/9] Complete removal of " Stephen Hemminger
2026-07-23 20:28 ` [PATCH v2 1/9] net/virtio: remove unused " Stephen Hemminger
2026-07-23 20:28 ` [PATCH v2 2/9] app/testpmd: remove unused function prototype Stephen Hemminger
2026-07-23 20:28 ` [PATCH v2 3/9] net/enic: remove unneeded ops initialization Stephen Hemminger
2026-07-24 1:52 ` Hyong Youb Kim (hyonkim)
2026-07-23 20:28 ` [PATCH v2 4/9] net/cnxk: remove queue stats mapping Stephen Hemminger
2026-07-24 7:26 ` David Marchand
2026-07-24 15:20 ` Stephen Hemminger
2026-07-23 20:28 ` [PATCH v2 5/9] net/e1000: " Stephen Hemminger
2026-07-24 7:31 ` David Marchand
2026-08-13 12:26 ` Bruce Richardson
2026-07-23 20:28 ` [PATCH v2 6/9] net/ixgbe: " Stephen Hemminger
2026-07-23 20:28 ` [PATCH v2 7/9] net/txgbe: " Stephen Hemminger
2026-07-23 20:28 ` [PATCH v2 8/9] net/sxe2: " Stephen Hemminger
2026-07-23 20:28 ` [PATCH v2 9/9] ethdev: remove support for " Stephen Hemminger
2026-07-24 7:39 ` [PATCH v2 0/9] Complete removal of " David Marchand
2026-07-24 7:42 ` David Marchand
2026-07-24 15:28 ` Stephen Hemminger
2026-08-13 17:54 ` [PATCH v3 00/16] remove stats mapping an RTE_ETHDEV_QUEUE_STAT_CNTRS Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 01/16] net/virtio: remove unused queue stats mapping Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 02/16] app/testpmd: remove leftover set qmap Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 03/16] net/enic: remove unneeded ops initialization Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 04/16] net/cnxk: fix Tx drops added to Rx queue errors Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 05/16] net/cnxk: remove queue stats mapping Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 06/16] net/e1000: " Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 07/16] net/ixgbe: " Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 08/16] net/txgbe: " Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 09/16] net/sxe2: fix null dereference in stats get Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 10/16] net/sxe2: remove queue stats mapping Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 11/16] ethdev: remove support for " Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 12/16] net/mvpp2: fix out of range Tx queue stats write Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 13/16] net/ntnic: fix Tx errors reported as Rx queue errors Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 14/16] net/xsc: fix Tx errors added to " Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 15/16] ethdev: remove queue stats counter limit Stephen Hemminger
2026-08-13 17:55 ` [PATCH v3 16/16] test/pmd_ring: test per-queue xstats Stephen Hemminger
2026-08-14 19:45 ` Stephen Hemminger [this message]
2026-08-14 19:45 ` [PATCH v4 01/16] net/virtio: remove unused queue stats mapping Stephen Hemminger
2026-08-14 19:45 ` [PATCH v4 02/16] app/testpmd: remove leftover set qmap Stephen Hemminger
2026-08-14 19:45 ` [PATCH v4 03/16] net/enic: remove unneeded ops initialization Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 04/16] net/cnxk: fix Tx drops added to Rx queue errors Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 05/16] net/cnxk: remove queue stats mapping Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 06/16] net/e1000: " Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 07/16] net/ixgbe: " Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 08/16] net/txgbe: " Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 09/16] net/sxe2: fix null dereference in stats get Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 10/16] net/sxe2: remove queue stats mapping Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 11/16] ethdev: remove support for " Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 12/16] net/mvpp2: fix out of range Tx queue stats write Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 13/16] net/ntnic: fix Tx errors reported as Rx queue errors Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 14/16] net/xsc: fix Tx errors added to " Stephen Hemminger
2026-08-14 19:46 ` [PATCH v4 15/16] ethdev: remove queue stats counter limit Stephen Hemminger
2026-08-14 22:31 ` [EXTERNAL] " Long Li
2026-08-14 19:46 ` [PATCH v4 16/16] test/pmd_ring: test per-queue xstats Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260814194757.329424-1-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.