[dpdk-dev] [PATCH] net/mlx5: fix sync when handling Tx completions
Dekel Peled
dekelp at mellanox.com
Thu Feb 28 16:20:30 CET 2019
Function mlx5_tx_complete() reads completion entry information
from Tx queue.
For some processors not having strongly-ordered memory model,
there has to be a memory barrier between reading the entry index
and the entry fields, in order to guarantee data is valid.
Fixes: 54d3fe948dba ("net/mlx5: poll completion queue once per a call")
Cc: stable at dpdk.org
Signed-off-by: Dekel Peled <dekelp at mellanox.com>
---
drivers/net/mlx5/mlx5_rxtx.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index c0e1adf..53115dd 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -568,6 +568,7 @@ uint32_t mlx5_tx_update_ext_mp(struct mlx5_txq_data *txq, uintptr_t addr,
}
#endif /* NDEBUG */
++cq_ci;
+ rte_cio_rmb();
txq->wqe_pi = rte_be_to_cpu_16(cqe->wqe_counter);
ctrl = (volatile struct mlx5_wqe_ctrl *)
tx_mlx5_wqe(txq, txq->wqe_pi);
--
1.8.3.1
More information about the dev
mailing list