Commit 8c6a3455 authored by Alexey Marchuk's avatar Alexey Marchuk Committed by Tomasz Zawadzki
Browse files

nvme/rdma: Use RDMA provider API to send WRs



Change-Id: I3dc87751d250da84d988b1c7a9c57112b5bd10b0
Signed-off-by: default avatarAlexey Marchuk <alexeymar@mellanox.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1661


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent bbb493ce
Loading
Loading
Loading
Loading
+15 −21
Original line number Diff line number Diff line
@@ -563,21 +563,21 @@ nvme_rdma_qpair_submit_sends(struct nvme_rdma_qpair *rqpair)
	struct ibv_send_wr *bad_send_wr;
	int rc;

	if (rqpair->sends_to_post.first) {
		rc = ibv_post_send(rqpair->rdma_qp->qp, rqpair->sends_to_post.first, &bad_send_wr);
	rc = spdk_rdma_qp_flush_send_wrs(rqpair->rdma_qp, &bad_send_wr);

	if (spdk_unlikely(rc)) {
		SPDK_ERRLOG("Failed to post WRs on send queue, errno %d (%s), bad_wr %p\n",
			    rc, spdk_strerror(rc), bad_send_wr);

		/* Restart queue from bad wr. If it failed during
		 * completion processing, controller will be moved to
		 * failed state. Otherwise it will likely fail again
		 * in next submit attempt from completion processing.
		 */
			rqpair->sends_to_post.first = bad_send_wr;
			return -1;
		}
		rqpair->sends_to_post.first = NULL;
		spdk_rdma_qp_queue_send_wrs(rqpair->rdma_qp, bad_send_wr);
		return rc;
	}

	return 0;
}

@@ -612,13 +612,7 @@ nvme_rdma_qpair_queue_send_wr(struct nvme_rdma_qpair *rqpair, struct ibv_send_wr
{
	assert(wr->next == NULL);

	if (rqpair->sends_to_post.first == NULL) {
		rqpair->sends_to_post.first = wr;
	} else {
		rqpair->sends_to_post.last->next = wr;
	}

	rqpair->sends_to_post.last = wr;
	spdk_rdma_qp_queue_send_wrs(rqpair->rdma_qp, wr);

	if (!rqpair->delay_cmd_submit) {
		return nvme_rdma_qpair_submit_sends(rqpair);