Commit e6ab8cf5 authored by Guoqing Jiang's avatar Guoqing Jiang Committed by Jason Gunthorpe
Browse files

RDMA/rtrs: Introduce rtrs_post_send

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: default avatarGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
Signed-off-by: default avatarJack Wang <jinpu.wang@cloud.ionos.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent ffea6ad1
Loading
Loading
Loading
Loading
+19 −33
Original line number Diff line number Diff line
@@ -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);