RDMA/hns: Bugfix for the missing assignment for dip_idx
[linux-2.6-microblaze.git] / drivers / infiniband / hw / hns / hns_roce_hw_v2.c
index 5d594c0..f3a7ac9 100644 (file)
@@ -4108,6 +4108,9 @@ static void modify_qp_reset_to_init(struct ib_qp *ibqp,
        if (hr_qp->en_flags & HNS_ROCE_QP_CAP_RQ_RECORD_DB)
                hr_reg_enable(context, QPC_RQ_RECORD_EN);
 
+       if (hr_qp->en_flags & HNS_ROCE_QP_CAP_OWNER_DB)
+               hr_reg_enable(context, QPC_OWNER_MODE);
+
        hr_reg_write(context, QPC_RQ_DB_RECORD_ADDR_L,
                     lower_32_bits(hr_qp->rdb.dma) >> 1);
        hr_reg_write(context, QPC_RQ_DB_RECORD_ADDR_H,
@@ -4480,9 +4483,6 @@ static int modify_qp_rtr_to_rts(struct ib_qp *ibqp,
 
        hr_reg_clear(qpc_mask, QPC_CHECK_FLG);
 
-       hr_reg_write(context, QPC_LSN, 0x100);
-       hr_reg_clear(qpc_mask, QPC_LSN);
-
        hr_reg_clear(qpc_mask, QPC_V2_IRRL_HEAD);
 
        return 0;
@@ -4508,8 +4508,10 @@ static int get_dip_ctx_idx(struct ib_qp *ibqp, const struct ib_qp_attr *attr,
        spin_lock_irqsave(&hr_dev->dip_list_lock, flags);
 
        list_for_each_entry(hr_dip, &hr_dev->dip_list, node) {
-               if (!memcmp(grh->dgid.raw, hr_dip->dgid, 16))
+               if (!memcmp(grh->dgid.raw, hr_dip->dgid, 16)) {
+                       *dip_idx = hr_dip->dip_idx;
                        goto out;
+               }
        }
 
        /* If no dgid is found, a new dip and a mapping between dgid and