mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
RDMA/erdma: Return QP state in erdma_query_qp
Fix qp_state and cur_qp_state to return correct values in
struct ib_qp_attr.
Fixes: 1550557717
("RDMA/erdma: Add verbs implementation")
Signed-off-by: Cheng Xu <chengyou@linux.alibaba.com>
Link: https://patch.msgid.link/20240902112920.58749-4-chengyou@linux.alibaba.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
b80330f105
commit
e77127ff64
@ -1544,11 +1544,31 @@ int erdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static enum ib_qp_state query_qp_state(struct erdma_qp *qp)
|
||||
{
|
||||
switch (qp->attrs.state) {
|
||||
case ERDMA_QP_STATE_IDLE:
|
||||
return IB_QPS_INIT;
|
||||
case ERDMA_QP_STATE_RTR:
|
||||
return IB_QPS_RTR;
|
||||
case ERDMA_QP_STATE_RTS:
|
||||
return IB_QPS_RTS;
|
||||
case ERDMA_QP_STATE_CLOSING:
|
||||
return IB_QPS_ERR;
|
||||
case ERDMA_QP_STATE_TERMINATE:
|
||||
return IB_QPS_ERR;
|
||||
case ERDMA_QP_STATE_ERROR:
|
||||
return IB_QPS_ERR;
|
||||
default:
|
||||
return IB_QPS_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
int erdma_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr,
|
||||
int qp_attr_mask, struct ib_qp_init_attr *qp_init_attr)
|
||||
{
|
||||
struct erdma_qp *qp;
|
||||
struct erdma_dev *dev;
|
||||
struct erdma_qp *qp;
|
||||
|
||||
if (ibqp && qp_attr && qp_init_attr) {
|
||||
qp = to_eqp(ibqp);
|
||||
@ -1575,6 +1595,9 @@ int erdma_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr,
|
||||
|
||||
qp_init_attr->cap = qp_attr->cap;
|
||||
|
||||
qp_attr->qp_state = query_qp_state(qp);
|
||||
qp_attr->cur_qp_state = query_qp_state(qp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user