mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
RDMA/erdma: Return QP state in erdma_query_qp
[ Upstream commit e77127ff6416b17e0b3e630ac46ee5c9a6570f57 ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a5f795f941
commit
e1a686cef7
@@ -1292,11 +1292,31 @@ int erdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask,
|
|||||||
return ret;
|
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 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)
|
int qp_attr_mask, struct ib_qp_init_attr *qp_init_attr)
|
||||||
{
|
{
|
||||||
struct erdma_qp *qp;
|
|
||||||
struct erdma_dev *dev;
|
struct erdma_dev *dev;
|
||||||
|
struct erdma_qp *qp;
|
||||||
|
|
||||||
if (ibqp && qp_attr && qp_init_attr) {
|
if (ibqp && qp_attr && qp_init_attr) {
|
||||||
qp = to_eqp(ibqp);
|
qp = to_eqp(ibqp);
|
||||||
@@ -1323,6 +1343,9 @@ int erdma_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr,
|
|||||||
|
|
||||||
qp_init_attr->cap = qp_attr->cap;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user