[PATCH] net/mlx5: fix multi segment packet wraparound
    Dariusz Sosnowski 
    dsosnowski at nvidia.com
       
    Fri Nov 19 19:11:09 CET 2021
    
    
  
This patch fixes the assertion failure triggered when the user
configured minimum inline length requirements and the application
transmitted multi segment packets. Failure was triggered when space left
in TX queue was not enough to cover this requirement.
This patch limits the length of data to be copied to the available space
in TX queue.
Fixes: cacb44a09962 ("net/mlx5: add no-inline Tx flag")
Cc: viacheslavo at nvidia.com
Cc: stable at dpdk.org
Signed-off-by: Dariusz Sosnowski <dsosnowski at nvidia.com>
---
 drivers/net/mlx5/mlx5_tx.h | 5 +++++
 1 file changed, 5 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_tx.h b/drivers/net/mlx5/mlx5_tx.h
index bc629983fa..f3727351ca 100644
--- a/drivers/net/mlx5/mlx5_tx.h
+++ b/drivers/net/mlx5/mlx5_tx.h
@@ -1222,6 +1222,11 @@ mlx5_tx_eseg_mdat(struct mlx5_txq_data *__rte_restrict txq,
 		 */
 		copy = tso ? inlen : txq->inlen_mode;
 		copy = tlen >= copy ? 0 : (copy - tlen);
+		/*
+		 * Limit amount of data to be copied to the length of available
+		 * WQE ring buffer space or packet data left to be copied.
+		 */
+		copy = RTE_MIN(part, copy);
 		copy = mlx5_tx_mseg_memcpy(pdst, loc, part, copy, olx);
 		tlen += copy;
 		if (likely(inlen <= tlen) || copy < part) {
-- 
2.25.1
    
    
More information about the dev
mailing list