Skip to content

Commit

Permalink
net/mlx5: fix hairpin queue states
Browse files Browse the repository at this point in the history
[ upstream commit ca638c49e402c930bbe20979c7f5aa2bd6bc0a5a ]

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: 6a338ad ("net/mlx5: add hairpin binding function")
Fixes: 37cd450 ("net/mlx5: support two ports hairpin mode")

Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
  • Loading branch information
sodar authored and bluca committed Nov 15, 2023
1 parent 7243435 commit 9f2170b
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions drivers/net/mlx5/mlx5_trigger.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,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->config.hca_attr.vhca_id;
ret = mlx5_devx_cmd_modify_rq(rq, &rq_attr);
Expand Down Expand Up @@ -572,8 +572,8 @@ mlx5_hairpin_queue_peer_bind(struct rte_eth_dev *dev, uint16_t cur_queue,
mlx5_rxq_release(dev, 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);
Expand Down Expand Up @@ -638,7 +638,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;
Expand Down Expand Up @@ -674,8 +674,8 @@ mlx5_hairpin_queue_peer_unbind(struct rte_eth_dev *dev, uint16_t cur_queue,
mlx5_rxq_release(dev, 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_ctrl->hairpin_status = 0;
Expand Down

0 comments on commit 9f2170b

Please sign in to comment.