net/mlx5: fix sync when handling Tx completions

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: 54d3fe948d ("net/mlx5: poll completion queue once per a call")
Cc: stable@dpdk.org

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
This commit is contained in:
Dekel Peled 2019-02-28 17:20:30 +02:00 committed by Ferruh Yigit
parent 38f0a160b5
commit fd350d3c9a

View File

@ -568,6 +568,7 @@ mlx5_tx_complete(struct mlx5_txq_data *txq)
}
#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);