RDMA/rtrs: Introduce rtrs_post_send
authorGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
Fri, 23 Oct 2020 07:43:52 +0000 (09:43 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Wed, 28 Oct 2020 16:17:41 +0000 (13:17 -0300)
Since the three functions share the similar logic, let's introduce one
common function for it.

Link: https://lore.kernel.org/r/20201023074353.21946-12-jinpu.wang@cloud.ionos.com
Signed-off-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/ulp/rtrs/rtrs.c

index 48f648f..2e3a849 100644 (file)
@@ -104,6 +104,22 @@ int rtrs_post_recv_empty(struct rtrs_con *con, struct ib_cqe *cqe)
 }
 EXPORT_SYMBOL_GPL(rtrs_post_recv_empty);
 
+static int rtrs_post_send(struct ib_qp *qp, struct ib_send_wr *head,
+                            struct ib_send_wr *wr)
+{
+       if (head) {
+               struct ib_send_wr *tail = head;
+
+               while (tail->next)
+                       tail = tail->next;
+               tail->next = wr;
+       } else {
+               head = wr;
+       }
+
+       return ib_post_send(qp, head, NULL);
+}
+
 int rtrs_iu_post_send(struct rtrs_con *con, struct rtrs_iu *iu, size_t size,
                       struct ib_send_wr *head)
 {
@@ -126,17 +142,7 @@ int rtrs_iu_post_send(struct rtrs_con *con, struct rtrs_iu *iu, size_t size,
                .send_flags = IB_SEND_SIGNALED,
        };
 
-       if (head) {
-               struct ib_send_wr *tail = head;
-
-               while (tail->next)
-                       tail = tail->next;
-               tail->next = &wr;
-       } else {
-               head = &wr;
-       }
-
-       return ib_post_send(con->qp, head, NULL);
+       return rtrs_post_send(con->qp, head, &wr);
 }
 EXPORT_SYMBOL_GPL(rtrs_iu_post_send);
 
@@ -168,17 +174,7 @@ int rtrs_iu_post_rdma_write_imm(struct rtrs_con *con, struct rtrs_iu *iu,
                if (WARN_ON(sge[i].length == 0))
                        return -EINVAL;
 
-       if (head) {
-               struct ib_send_wr *tail = head;
-
-               while (tail->next)
-                       tail = tail->next;
-               tail->next = &wr.wr;
-       } else {
-               head = &wr.wr;
-       }
-
-       return ib_post_send(con->qp, head, NULL);
+       return rtrs_post_send(con->qp, head, &wr.wr);
 }
 EXPORT_SYMBOL_GPL(rtrs_iu_post_rdma_write_imm);
 
@@ -195,17 +191,7 @@ int rtrs_post_rdma_write_imm_empty(struct rtrs_con *con, struct ib_cqe *cqe,
                .ex.imm_data    = cpu_to_be32(imm_data),
        };
 
-       if (head) {
-               struct ib_send_wr *tail = head;
-
-               while (tail->next)
-                       tail = tail->next;
-               tail->next = &wr;
-       } else {
-               head = &wr;
-       }
-
-       return ib_post_send(con->qp, head, NULL);
+       return rtrs_post_send(con->qp, head, &wr);
 }
 EXPORT_SYMBOL_GPL(rtrs_post_rdma_write_imm_empty);