Browse Source

IB/hns: Fix the bug for qp state in hns_roce_v1_m_qp()

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>
Lijun Ou 8 years ago
parent
commit
1dec243ac0
1 changed files with 1 additions and 1 deletions
  1. 1 1
      drivers/infiniband/hw/hns/hns_roce_hw_v1.c

+ 1 - 1
drivers/infiniband/hw/hns/hns_roce_hw_v1.c

@@ -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 */
 	/* Every status migrate must change state */
 	roce_set_field(context->qpc_bytes_144,
 	roce_set_field(context->qpc_bytes_144,
 		       QP_CONTEXT_QPC_BYTES_144_QP_STATE_M,
 		       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 */
 	/* SW pass context to HW */
 	ret = hns_roce_v1_qp_modify(hr_dev, &hr_qp->mtt,
 	ret = hns_roce_v1_qp_modify(hr_dev, &hr_qp->mtt,