Allocating PP contexts with MLX5DV_PP_ALLOC_FLAGS_DEDICATED_INDEX
forces one HW rate table entry per TX queue. On ConnectX-6 Dx the
rate table is small (typically 128 entries), so setting the same rate
on many queues exhausts it quickly and returns ENOSPC.

Without the dedicated flag, the kernel mlx5 driver shares a single
rate table entry across all PP contexts with identical parameters
(rate, burst, packet size) using internal refcounting. Each queue
still gets its own PP handle for proper cleanup, but the underlying
HW index is shared.

Signed-off-by: Vincent Jardin <[email protected]>
---
 drivers/net/mlx5/mlx5_txpp.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_txpp.c b/drivers/net/mlx5/mlx5_txpp.c
index b87565778e..a377406e66 100644
--- a/drivers/net/mlx5/mlx5_txpp.c
+++ b/drivers/net/mlx5/mlx5_txpp.c
@@ -185,8 +185,7 @@ mlx5_txq_alloc_pp_rate_limit(struct mlx5_dev_ctx_shared *sh,
                MLX5_SET(set_pp_rate_limit_context, &pp,
                         typical_packet_size, sh->config.tx_typical_pkt_sz);
        rl->pp = mlx5_glue->dv_alloc_pp
-                               (sh->cdev->ctx, sizeof(pp), &pp,
-                                MLX5DV_PP_ALLOC_FLAGS_DEDICATED_INDEX);
+                               (sh->cdev->ctx, sizeof(pp), &pp, 0);
        if (rl->pp == NULL) {
                DRV_LOG(ERR, "Failed to allocate PP index for rate %u Mbps.",
                        rate_mbps);
-- 
2.43.0

Reply via email to