diff options
author | Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com> | 2014-12-18 03:43:00 -0500 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2015-02-18 11:31:02 -0500 |
commit | 43c706b10a1054c0a73b2dc10374a946c8a3a17f (patch) | |
tree | 25218051d3053d9e0ebdf84795f3418a950f648e /drivers/infiniband/hw/ocrdma | |
parent | ad56ebb414a46f7afe84f73f28a39c7971cc8283 (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.c | 6 |
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); | ||
1588 | mbx_err: | 1590 | mbx_err: |
1589 | return status; | 1591 | return status; |
1590 | } | 1592 | } |