This patch fixes the expected SQ and RQ states used in MODIFY_SQ and MODIFY_RQ during unbinding of the hairpin queues. When unbinding the queue objects, they are in RDY state and are transitioning to RST state, instead of going from RST to RST state.
Also, this patch fixes the constants used for RQ states. Instead of MLX5_SQC_STATE_*, now MLX5_RQC_STATE_* are used. Fixes: 6a338ad4f7fe ("net/mlx5: add hairpin binding function") Fixes: 37cd4501e873 ("net/mlx5: support two ports hairpin mode") Cc: bi...@nvidia.com Cc: or...@nvidia.com Cc: sta...@dpdk.org Signed-off-by: Dariusz Sosnowski <dsosnow...@nvidia.com> Acked-by: Viacheslav Ovsiienko <viachesl...@nvidia.com> --- drivers/net/mlx5/mlx5_trigger.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index 329fa7da3e..6d787a7c93 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -346,8 +346,8 @@ mlx5_hairpin_auto_bind(struct rte_eth_dev *dev) ret = mlx5_devx_cmd_modify_sq(sq, &sq_attr); if (ret) goto error; - rq_attr.state = MLX5_SQC_STATE_RDY; - rq_attr.rq_state = MLX5_SQC_STATE_RST; + rq_attr.state = MLX5_RQC_STATE_RDY; + rq_attr.rq_state = MLX5_RQC_STATE_RST; rq_attr.hairpin_peer_sq = sq->id; rq_attr.hairpin_peer_vhca = priv->sh->cdev->config.hca_attr.vhca_id; @@ -601,8 +601,8 @@ mlx5_hairpin_queue_peer_bind(struct rte_eth_dev *dev, uint16_t cur_queue, " mismatch", dev->data->port_id, cur_queue); return -rte_errno; } - rq_attr.state = MLX5_SQC_STATE_RDY; - rq_attr.rq_state = MLX5_SQC_STATE_RST; + rq_attr.state = MLX5_RQC_STATE_RDY; + rq_attr.rq_state = MLX5_RQC_STATE_RST; rq_attr.hairpin_peer_sq = peer_info->qp_id; rq_attr.hairpin_peer_vhca = peer_info->vhca_id; ret = mlx5_devx_cmd_modify_rq(rxq_ctrl->obj->rq, &rq_attr); @@ -666,7 +666,7 @@ mlx5_hairpin_queue_peer_unbind(struct rte_eth_dev *dev, uint16_t cur_queue, return -rte_errno; } sq_attr.state = MLX5_SQC_STATE_RST; - sq_attr.sq_state = MLX5_SQC_STATE_RST; + sq_attr.sq_state = MLX5_SQC_STATE_RDY; ret = mlx5_devx_cmd_modify_sq(txq_ctrl->obj->sq, &sq_attr); if (ret == 0) txq_ctrl->hairpin_status = 0; @@ -700,8 +700,8 @@ mlx5_hairpin_queue_peer_unbind(struct rte_eth_dev *dev, uint16_t cur_queue, dev->data->port_id, cur_queue); return -rte_errno; } - rq_attr.state = MLX5_SQC_STATE_RST; - rq_attr.rq_state = MLX5_SQC_STATE_RST; + rq_attr.state = MLX5_RQC_STATE_RST; + rq_attr.rq_state = MLX5_RQC_STATE_RDY; ret = mlx5_devx_cmd_modify_rq(rxq_ctrl->obj->rq, &rq_attr); if (ret == 0) rxq->hairpin_status = 0; -- 2.25.1