From 6cfb15300607fd74669cb66f77f418755b80c86f Mon Sep 17 00:00:00 2001 From: Matan Azrad Date: Thu, 30 May 2019 10:20:34 +0000 Subject: [PATCH] net/mlx5: mitigate Rx doorbell memory barrier The RQ WQEs must be written in the memory before the HW gets the RQ doorbell, hence a memory barrier should be triggered after the WQEs writing and before the doorbell writing. The current code used rte_wmb barrier which ensures that all the memory stores were done while it is enough to use rte_cio_wmb barrier for the local memory stores because the WQEs are in local memory. CC: stable@dpdk.org Signed-off-by: Matan Azrad Acked-by: Shahaf Shuler --- drivers/net/mlx5/mlx5_rxq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 1ac4020cb1..07adeb5a35 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -1076,7 +1076,7 @@ mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t idx) rxq_data->decompressed = 0; /* Update doorbell counter. */ rxq_data->rq_ci = wqe_n >> rxq_data->sges_n; - rte_wmb(); + rte_cio_wmb(); *rxq_data->rq_db = rte_cpu_to_be_32(rxq_data->rq_ci); DRV_LOG(DEBUG, "port %u rxq %u updated with %p", dev->data->port_id, idx, (void *)&tmpl);