aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/ocrdma
diff options
context:
space:
mode:
authorPadmanabh Ratnakar <padmanabh.ratnakar@emulex.com>2014-12-18 03:43:00 -0500
committerRoland Dreier <roland@purestorage.com>2015-02-18 11:31:02 -0500
commit43c706b10a1054c0a73b2dc10374a946c8a3a17f (patch)
tree25218051d3053d9e0ebdf84795f3418a950f648e /drivers/infiniband/hw/ocrdma
parentad56ebb414a46f7afe84f73f28a39c7971cc8283 (diff)
RDMA/ocrdma: Report correct state in ibv_query_qp
Fix ocrdma_query_qp to refelect correct qp state based on FW. Signed-off-by: Mitesh Ahuja <mitesh.ahuja@emulex.com> Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com> Signed-off-by: Devesh Sharma <devesh.sharma@emulex.com> Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/ocrdma')
-rw-r--r--drivers/infiniband/hw/ocrdma/ocrdma_verbs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index fd9359171fcd..cda7b9569486 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -1522,8 +1522,6 @@ int ocrdma_query_qp(struct ib_qp *ibqp,
1522 goto mbx_err; 1522 goto mbx_err;
1523 if (qp->qp_type == IB_QPT_UD) 1523 if (qp->qp_type == IB_QPT_UD)
1524 qp_attr->qkey = params.qkey; 1524 qp_attr->qkey = params.qkey;
1525 qp_attr->qp_state = get_ibqp_state(IB_QPS_INIT);
1526 qp_attr->cur_qp_state = get_ibqp_state(IB_QPS_INIT);
1527 qp_attr->path_mtu = 1525 qp_attr->path_mtu =
1528 ocrdma_mtu_int_to_enum(params.path_mtu_pkey_indx & 1526 ocrdma_mtu_int_to_enum(params.path_mtu_pkey_indx &
1529 OCRDMA_QP_PARAMS_PATH_MTU_MASK) >> 1527 OCRDMA_QP_PARAMS_PATH_MTU_MASK) >>
@@ -1578,6 +1576,8 @@ int ocrdma_query_qp(struct ib_qp *ibqp,
1578 memset(&qp_attr->alt_ah_attr, 0, sizeof(qp_attr->alt_ah_attr)); 1576 memset(&qp_attr->alt_ah_attr, 0, sizeof(qp_attr->alt_ah_attr));
1579 qp_state = (params.max_sge_recv_flags & OCRDMA_QP_PARAMS_STATE_MASK) >> 1577 qp_state = (params.max_sge_recv_flags & OCRDMA_QP_PARAMS_STATE_MASK) >>
1580 OCRDMA_QP_PARAMS_STATE_SHIFT; 1578 OCRDMA_QP_PARAMS_STATE_SHIFT;
1579 qp_attr->qp_state = get_ibqp_state(qp_state);
1580 qp_attr->cur_qp_state = qp_attr->qp_state;
1581 qp_attr->sq_draining = (qp_state == OCRDMA_QPS_SQ_DRAINING) ? 1 : 0; 1581 qp_attr->sq_draining = (qp_state == OCRDMA_QPS_SQ_DRAINING) ? 1 : 0;
1582 qp_attr->max_dest_rd_atomic = 1582 qp_attr->max_dest_rd_atomic =
1583 params.max_ord_ird >> OCRDMA_QP_PARAMS_MAX_ORD_SHIFT; 1583 params.max_ord_ird >> OCRDMA_QP_PARAMS_MAX_ORD_SHIFT;
@@ -1585,6 +1585,8 @@ int ocrdma_query_qp(struct ib_qp *ibqp,
1585 params.max_ord_ird & OCRDMA_QP_PARAMS_MAX_IRD_MASK; 1585 params.max_ord_ird & OCRDMA_QP_PARAMS_MAX_IRD_MASK;
1586 qp_attr->en_sqd_async_notify = (params.max_sge_recv_flags & 1586 qp_attr->en_sqd_async_notify = (params.max_sge_recv_flags &
1587 OCRDMA_QP_PARAMS_FLAGS_SQD_ASYNC) ? 1 : 0; 1587 OCRDMA_QP_PARAMS_FLAGS_SQD_ASYNC) ? 1 : 0;
1588 /* Sync driver QP state with FW */
1589 ocrdma_qp_state_change(qp, qp_attr->qp_state, NULL);
1588mbx_err: 1590mbx_err:
1589 return status; 1591 return status;
1590} 1592}