[PATCH v1 00/10] net/mlx5: per-queue Tx rate limiting via packet pacing

Vincent Jardin
2026-03-10T09:20:43Z

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