The legacy multi-packet write is the feature allowing to
put multiple packets into one transmitting descriptor,
this feature is supported by only NIC ConnectX-4LX.
The number of packets should be limited to provide
optimal size descriptor and better performance.

Fixes: 18a1c20044c0 ("net/mlx5: implement Tx burst template")

Signed-off-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
---
 drivers/net/mlx5/mlx5_prm.h  | 1 +
 drivers/net/mlx5/mlx5_rxtx.c | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_prm.h b/drivers/net/mlx5/mlx5_prm.h
index 2bac6a7..a805363 100644
--- a/drivers/net/mlx5/mlx5_prm.h
+++ b/drivers/net/mlx5/mlx5_prm.h
@@ -100,6 +100,7 @@
  */
 #define MLX5_EMPW_MAX_PACKETS MLX5_TX_COMP_THRESH
 #define MLX5_MPW_MAX_PACKETS 6
+#define MLX5_MPW_INLINE_MAX_PACKETS 2
 
 /*
  * Default packet length threshold to be inlined with
diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c
index 25d915c..acf0fd7 100644
--- a/drivers/net/mlx5/mlx5_rxtx.c
+++ b/drivers/net/mlx5/mlx5_rxtx.c
@@ -4059,7 +4059,9 @@ enum mlx5_txcmp_code {
                 * Limits the amount of packets in one WQE
                 * to improve CQE latency generation.
                 */
-               nlim = RTE_MIN(pkts_n, MLX5_EMPW_MAX_PACKETS);
+               nlim = RTE_MIN(pkts_n, MLX5_TXOFF_CONFIG(MPW) ?
+                                      MLX5_MPW_INLINE_MAX_PACKETS :
+                                      MLX5_EMPW_MAX_PACKETS);
                /* Check whether we have minimal amount WQEs */
                if (unlikely(loc->wqe_free <
                            ((2 + MLX5_EMPW_MIN_PACKETS + 3) / 4)))
-- 
1.8.3.1

Reply via email to