Hi all, This series reworks the ethdev API related to advanced queueing configuration, specifically Data Center Bridging (DCB) and Virtual Machine Device Queues (VMDq). The existing API was designed years ago around ixgbe hardware assumptions, which makes it difficult to properly support modern NICs and their more flexible capabilities.
The main goals of this refactoring are: Unify duplicated DCB configuration structures for Tx and Rx. Extend the API to better align with the DCB specification (e.g., TSA, per-TC bandwidth allocation). Decouple VMDq and DCB configuration so they can be used independently. Enable explicit configuration of queue mappings instead of relying on driver-specific behavior. Clean up legacy or redundant fields that were artifacts of early implementations. Place multi-queue mode settings in a more consistent location within the configuration API. Overall, this makes the API more expressive, more consistent, and more future-proof for modern hardware, while simplifying driver implementations. Patch summary: ethdev: extend and refactor DCB configuration Introduce a common structure for Rx/Tx DCB configuration and extend it with missing DCB spec features. ethdev: remove nb_tcs from rte_eth_dcb_conf structure Drop legacy traffic class count field which drivers can derive from config. ethdev: decouple VMDq and DCB configuration Remove unnecessary coupling and redundant structures ethdev: extend VMDq/DCB configuration with queue mapping Allow explicit queue mapping configuration in API. ethdev: remove dcb_capability_en from rte_eth_conf Drop unused or misused DCB capability flags in favor of per-TC PFC API. ethdev: move mq_mode to [r,t]x_adv_conf Relocate mq_mode to advanced config, and make it a flag field. This is an API-breaking series, but it is expected to make the interface cleaner and more aligned with modern NIC capabilities. Feedback on both the design direction and implementation details is very welcome. Note: This RFC series reflects changes only for ice PMD and testpmd app (no other drivers or examples apps was changed) and depends on: https://patches.dpdk.org/project/dpdk/list/?series=35948 thus configure your build like: meson setup -Denable_drivers=net/intel/ice Vladimir Medvedkin (6): ethdev: extend and refactor DCB configuration ethdev: remove nb_tcs from rte_eth_dcb_conf structure ethdev: decouple VMDq and DCB cofiguration ethdev: extend VMDq/DCB configuration with queue mapping ethdev: remove dcb_capability_en from rte_eth_conf ethdev: move mq_mode to [r,t]x_adv_conf app/graph/ethdev.c | 6 +- app/test-eventdev/test_perf_common.c | 4 +- app/test-eventdev/test_pipeline_common.c | 4 +- app/test-pipeline/init.c | 2 +- app/test-pmd/cmdline.c | 27 +--- app/test-pmd/parameters.c | 4 +- app/test-pmd/testpmd.c | 153 +++++++++++--------- app/test-pmd/testpmd.h | 5 +- app/test/test_event_eth_rx_adapter.c | 4 +- app/test/test_link_bonding.c | 4 +- app/test/test_link_bonding_rssconf.c | 8 +- app/test/test_pmd_perf.c | 4 +- app/test/test_security_inline_macsec.c | 12 +- app/test/test_security_inline_proto.c | 12 +- drivers/net/intel/ice/ice_dcf.c | 2 +- drivers/net/intel/ice/ice_dcf_ethdev.c | 2 +- drivers/net/intel/ice/ice_ethdev.c | 137 ++++++++++-------- drivers/net/intel/ice/ice_rxtx.c | 27 ++-- lib/ethdev/ethdev_trace.h | 4 +- lib/ethdev/rte_ethdev.c | 10 +- lib/ethdev/rte_ethdev.h | 169 ++++++++--------------- 21 files changed, 294 insertions(+), 306 deletions(-) -- 2.43.0