The txq_calc_wqebb_cnt() should be consistent with the calculation in the function mlx5_txq_devx_obj_new(). Or when the input descriptor number is 512, the WQE size will be wrongly considered to be 30 when no max_inline_data is zero in some cases. The total number of WQE will be considered as 256 and that is incorrect.
Adjusting the WQE size will solve the wrong calculation when the calculated WQE size is less than 64B. Fixes: 38b4b397a57d ("net/mlx5: add Tx configuration and setup") Cc: viachesl...@nvidia.com Cc: sta...@dpdk.org Signed-off-by: Bing Zhao <bi...@nvidia.com> Acked-by: Viacheslav Ovsiienko <viachesl...@nvidia.com> --- drivers/net/mlx5/mlx5_txq.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index 5fee5bc4e8..62b3fc4f25 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -709,6 +709,7 @@ txq_calc_wqebb_cnt(struct mlx5_txq_ctrl *txq_ctrl) MLX5_WSEG_SIZE - MLX5_ESEG_MIN_INLINE_SIZE + txq_ctrl->max_inline_data; + wqe_size = RTE_MAX(wqe_size, MLX5_WQE_SIZE); return rte_align32pow2(wqe_size * desc) / MLX5_WQE_SIZE; } -- 2.34.1