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

Reply via email to