net/mlx5: fix completion request for inline packets
diff mbox series

Message ID 1564926975-31571-1-git-send-email-viacheslavo@mellanox.com
State Changes Requested, archived
Delegated to: Raslan Darawsheh
Headers show
Series
  • net/mlx5: fix completion request for inline packets
Related show

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Viacheslav Ovsiienko Aug. 4, 2019, 1:56 p.m. UTC
If packets are completely inline the mbuf is freed immediately
after data copying and no pointer is stored into elts array
to be free on completion. This leads the elts_head is not
updated and completion request buffer counter works incorrect.
This patch decrements the base value elts_comp used to calculate
counter threshold and completion requests flags are set more
correctly on the base of MLX5_TX_COMP_THRESH value.

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

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Matan Azrad Aug. 5, 2019, 6:40 a.m. UTC | #1
From: Viacheslav Ovsiienko
> If packets are completely inline the mbuf is freed immediately after data
> copying and no pointer is stored into elts array to be free on completion. This
> leads the elts_head is not updated and completion request buffer counter
> works incorrect.
> This patch decrements the base value elts_comp used to calculate counter
> threshold and completion requests flags are set more correctly on the base
> of MLX5_TX_COMP_THRESH value.
> 
> Fixes: 18a1c20044c0 ("net/mlx5: implement Tx burst template")
> 
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>

Patch
diff mbox series

diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c
index a890f41..308133b 100644
--- a/drivers/net/mlx5/mlx5_rxtx.c
+++ b/drivers/net/mlx5/mlx5_rxtx.c
@@ -4097,6 +4097,7 @@  enum mlx5_txcmp_code {
 			 * Packet data are completely inlined,
 			 * free the packet immediately.
 			 */
+			txq->elts_comp--;
 			rte_pktmbuf_free_seg(loc->mbuf);
 			goto next_mbuf;
 pointer_empw:
@@ -4283,6 +4284,7 @@  enum mlx5_txcmp_code {
 				 * Packet data are completely inlined,
 				 * free the packet immediately.
 				 */
+				txq->elts_comp--;
 				rte_pktmbuf_free_seg(loc->mbuf);
 			} else if (!MLX5_TXOFF_CONFIG(EMPW) &&
 				   txq->inlen_mode) {