IB/hns: Fix the bug for qp state in hns_roce_v1_m_qp()
authorLijun Ou <oulijun@huawei.com>
Wed, 23 Nov 2016 19:41:04 +0000 (19:41 +0000)
committerDoug Ledford <dledford@redhat.com>
Sat, 3 Dec 2016 19:20:42 +0000 (14:20 -0500)
In old code, the value of qp state from qpc was assigned for
attr->qp_state. The value may be an error while attr_mask &
IB_QP_STATE is zero.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
Reviewed-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hns/hns_roce_hw_v1.c

index c1a9dac25d7bcbed310058d22967b34d424378e1..528cb84975b4b75de91981b6c177105edd67eee5 100644 (file)
@@ -2571,7 +2571,7 @@ static int hns_roce_v1_m_qp(struct ib_qp *ibqp, const struct ib_qp_attr *attr,
        /* Every status migrate must change state */
        roce_set_field(context->qpc_bytes_144,
                       QP_CONTEXT_QPC_BYTES_144_QP_STATE_M,
-                      QP_CONTEXT_QPC_BYTES_144_QP_STATE_S, attr->qp_state);
+                      QP_CONTEXT_QPC_BYTES_144_QP_STATE_S, new_state);
 
        /* SW pass context to HW */
        ret = hns_roce_v1_qp_modify(hr_dev, &hr_qp->mtt,