RDMA/hns: Bugfix for the missing assignment for dip_idx
authorJunxian Huang <huangjunxian4@hisilicon.com>
Wed, 25 Aug 2021 09:43:11 +0000 (17:43 +0800)
committerJason Gunthorpe <jgg@nvidia.com>
Wed, 25 Aug 2021 16:55:29 +0000 (13:55 -0300)
When the dgid-dip_idx mapping relationship exists, dip should be assigned.

Fixes: f91696f2f053 ("RDMA/hns: Support congestion control type selection according to the FW")
Link: https://lore.kernel.org/r/1629884592-23424-3-git-send-email-liangwenpeng@huawei.com
Signed-off-by: Junxian Huang <huangjunxian4@hisilicon.com>
Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c

index 198a0c6..f3a7ac9 100644 (file)
@@ -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) {
        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;
                        goto out;
+               }
        }
 
        /* If no dgid is found, a new dip and a mapping between dgid and
        }
 
        /* If no dgid is found, a new dip and a mapping between dgid and