From 69b44d6bce1c9990e522a08f693d5f9f2e2e5067 Mon Sep 17 00:00:00 2001 From: Chengwen Feng Date: Mon, 10 May 2021 20:06:03 +0800 Subject: [PATCH] net/mlx5: fix secondary process initialization ordering The memory barrier is used to ensure that the response is returned only after the Tx/Rx function is set, it should place after the Rx/Tx function is set. Fixes: 2aac5b5d119f ("net/mlx5: sync stop/start with secondary process") Cc: stable@dpdk.org Signed-off-by: Chengwen Feng Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/linux/mlx5_mp_os.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/linux/mlx5_mp_os.c b/drivers/net/mlx5/linux/mlx5_mp_os.c index ca529b6007..3a4aa766f8 100644 --- a/drivers/net/mlx5/linux/mlx5_mp_os.c +++ b/drivers/net/mlx5/linux/mlx5_mp_os.c @@ -132,7 +132,6 @@ struct rte_mp_msg mp_res; switch (param->type) { case MLX5_MP_REQ_START_RXTX: DRV_LOG(INFO, "port %u starting datapath", dev->data->port_id); - rte_mb(); dev->rx_pkt_burst = mlx5_select_rx_function(dev); dev->tx_pkt_burst = mlx5_select_tx_function(dev); ppriv = (struct mlx5_proc_priv *)dev->process_private; @@ -149,6 +148,7 @@ struct rte_mp_msg mp_res; return -rte_errno; } } + rte_mb(); mp_init_msg(&priv->mp_id, &mp_res, param->type); res->result = 0; ret = rte_mp_reply(&mp_res, peer); -- 2.20.1