]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/hns: Make the end of sge process more clear
authorYixian Liu <liuyixian@huawei.com>
Fri, 22 May 2020 13:02:59 +0000 (21:02 +0800)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 25 May 2020 17:20:46 +0000 (14:20 -0300)
Instead of i with the sge number of wr will make the comparision more
clear, that is, when the sge number in wr is small than the maximum
supported sge number in the queue, then a stop sge needed to be filled at
the end of sges in wr.

Link: https://lore.kernel.org/r/1590152579-32364-5-git-send-email-liweihang@huawei.com
Signed-off-by: Yixian Liu <liuyixian@huawei.com>
Signed-off-by: Weihang Li <liweihang@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c

index 24c661a32e017dfdde7ca5411137acd181969042..6454ac4ad06f01385068842aad3934d6bc4739f5 100644 (file)
@@ -646,7 +646,7 @@ static int hns_roce_v2_post_recv(struct ib_qp *ibqp,
                        dseg++;
                }
 
-               if (i < hr_qp->rq.max_gs) {
+               if (wr->num_sge < hr_qp->rq.max_gs) {
                        dseg->lkey = cpu_to_le32(HNS_ROCE_INVALID_LKEY);
                        dseg->addr = 0;
                        dseg->len = cpu_to_le32(HNS_ROCE_INVALID_SGE_LENGTH);
@@ -782,7 +782,7 @@ static int hns_roce_v2_post_srq_recv(struct ib_srq *ibsrq,
                        dseg[i].addr = cpu_to_le64(wr->sg_list[i].addr);
                }
 
-               if (i < srq->max_gs) {
+               if (wr->num_sge < srq->max_gs) {
                        dseg[i].len = cpu_to_le32(HNS_ROCE_INVALID_SGE_LENGTH);
                        dseg[i].lkey = cpu_to_le32(HNS_ROCE_INVALID_LKEY);
                        dseg[i].addr = 0;