RDMA/rtrs_clt: Alloc less memory with write path fast memory registration
authorJack Wang <jinpu.wang@cloud.ionos.com>
Mon, 21 Jun 2021 05:53:38 +0000 (07:53 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 22 Jun 2021 00:02:21 +0000 (21:02 -0300)
With write path fast memory registration, we need less memory for
each request.

With fast memory registration, we can reduce max_send_sge to save
memory usage.

Also convert the kmalloc_array to kcalloc.

Link: https://lore.kernel.org/r/20210621055340.11789-4-jinpu.wang@ionos.com
Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
Reviewed-by: Md Haris Iqbal <haris.iqbal@cloud.ionos.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/ulp/rtrs/rtrs-clt.c

index 82c4a12..37fc0f2 100644 (file)
@@ -1372,8 +1372,7 @@ static int alloc_sess_reqs(struct rtrs_clt_sess *sess)
                if (!req->iu)
                        goto out;
 
-               req->sge = kmalloc_array(clt->max_segments + 1,
-                                        sizeof(*req->sge), GFP_KERNEL);
+               req->sge = kcalloc(2, sizeof(*req->sge), GFP_KERNEL);
                if (!req->sge)
                        goto out;
 
@@ -1675,7 +1674,7 @@ static int create_con_cq_qp(struct rtrs_clt_con *con)
                              sess->queue_depth * 3 + 1);
                max_recv_wr = min_t(int, wr_limit,
                              sess->queue_depth * 3 + 1);
-               max_send_sge = sess->clt->max_segments + 1;
+               max_send_sge = 2;
        }
        cq_num = max_send_wr + max_recv_wr;
        /* alloc iu to recv new rkey reply when server reports flags set */