This series adds per-queue Tx rate limiting to the mlx5 PMD using
the HW packet pacing (PP) rate table.

The ConnectX-6 Dx and later NICs expose a per-SQ
packet_pacing_rate_limit_index that can be changed on a live SQ
via modify_bitmask without queue teardown. The kernel mlx5 driver
refcounts PP contexts internally, so queues configured at the same
rate share a single HW rate table entry.

The series is structured as follows:

  1. Doc fix for stale packet pacing documentation
  2-3. common/mlx5: query PP capabilities and extend SQ modify
  4-6. net/mlx5: per-queue PP infrastructure, rate_limit callback,
       burst pacing devargs (tx_burst_bound, tx_typical_pkt_sz)
  7. net/mlx5: testpmd command to query per-queue rate state
  8. ethdev: add rte_eth_get_queue_rate_limit() symmetric getter
  9. net/mlx5: share PP rate table entries across queues
  10. net/mlx5: rate table capacity query API

Usage with testpmd:
  set port 0 queue 0 rate 1000
  set port 0 queue 1 rate 5000
  set port 0 queue 0 rate 0      # disable
  mlx5 port 0 txq 0 rate show    # query

Tested on ConnectX-6 Dx only.

Vincent Jardin (11):
  doc/nics/mlx5: fix stale packet pacing documentation
  common/mlx5: query packet pacing rate table capabilities
  common/mlx5: extend SQ modify to support rate limit update
  net/mlx5: add per-queue packet pacing infrastructure
  net/mlx5: support per-queue rate limiting
  net/mlx5: add burst pacing devargs
  net/mlx5: add testpmd command to query per-queue rate limit
  ethdev: add getter for per-queue Tx rate limit
  mailmap: update Vincent Jardin email address
  net/mlx5: share pacing rate table entries across queues
  net/mlx5: add rate table capacity query API

 .mailmap                             |   3 +-
 doc/guides/nics/mlx5.rst             | 125 +++++++++++++++++------
 drivers/common/mlx5/mlx5_devx_cmds.c |  20 ++++
 drivers/common/mlx5/mlx5_devx_cmds.h |  14 ++-
 drivers/net/mlx5/mlx5.c              |  46 +++++++++
 drivers/net/mlx5/mlx5.h              |  13 +++
 drivers/net/mlx5/mlx5_testpmd.c      |  93 +++++++++++++++++
 drivers/net/mlx5/mlx5_tx.c           |  89 +++++++++++++++++
 drivers/net/mlx5/mlx5_tx.h           |   5 +
 drivers/net/mlx5/mlx5_txpp.c         |  75 ++++++++++++++
 drivers/net/mlx5/mlx5_txq.c          | 144 +++++++++++++++++++++++++++
 drivers/net/mlx5/rte_pmd_mlx5.h      |  57 +++++++++++
 lib/ethdev/ethdev_driver.h           |   7 ++
 lib/ethdev/rte_ethdev.c              |  28 ++++++
 lib/ethdev/rte_ethdev.h              |  24 +++++
 15 files changed, 710 insertions(+), 33 deletions(-)

-- 
2.43.0

Reply via email to