The total length field in descriptor of inlined multi-packet send must be updated before closing a seesion. There's possibility of updating it afterward. This bug might cause one packet out of MLX5_MPW_DSEG_MAX gets silently dropped by HW and impact performance, escpecially lossless test.
Fixes: 230189d9ff22 ("net/mlx5: support multi-packet send") CC: sta...@dpdk.org Signed-off-by: Yongseok Koh <ys...@mellanox.com> --- drivers/net/mlx5/mlx5_rxtx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 94fe74763..1043ebbc0 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -1046,6 +1046,7 @@ mlx5_tx_burst_mpw_inline(void *dpdk_txq, struct rte_mbuf **pkts, mpw.data.raw += length; } ++mpw.pkts_n; + mpw.total_len += length; ++j; if (mpw.pkts_n == MLX5_MPW_DSEG_MAX) { mlx5_mpw_inline_close(txq, &mpw); @@ -1055,7 +1056,6 @@ mlx5_tx_burst_mpw_inline(void *dpdk_txq, struct rte_mbuf **pkts, inline_room -= length; } } - mpw.total_len += length; elts_head = elts_head_next; #ifdef MLX5_PMD_SOFT_COUNTERS /* Increment sent bytes counter. */ -- 2.11.0