Commit 47afb928 authored by Alexey Marchuk's avatar Alexey Marchuk Committed by Tomasz Zawadzki
Browse files

nvme/rdma: Use RDMA provider API to post recv WRs



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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 3caf2e71
Loading
Loading
Loading
Loading
+11 −27
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
 *   BSD LICENSE
 *
 *   Copyright (c) Intel Corporation. All rights reserved.
 *   Copyright (c) 2019, 2020 Mellanox Technologies LTD. All rights reserved.
 *   Copyright (c) 2019-2021 Mellanox Technologies LTD. All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
@@ -163,11 +163,6 @@ struct nvme_rdma_poll_group {
	STAILQ_HEAD(, nvme_rdma_destroyed_qpair)	destroyed_qpairs;
};

struct spdk_nvme_recv_wr_list {
	struct ibv_recv_wr	*first;
	struct ibv_recv_wr	*last;
};

/* Memory regions */
union nvme_rdma_mr {
	struct ibv_mr	*mr;
@@ -202,8 +197,6 @@ struct nvme_rdma_qpair {

	struct ibv_recv_wr			*rsp_recv_wrs;

	struct spdk_nvme_recv_wr_list		recvs_to_post;

	/* Memory region describing all rsps for this qpair */
	union nvme_rdma_mr			rsp_mr;

@@ -662,8 +655,7 @@ nvme_rdma_qpair_submit_recvs(struct nvme_rdma_qpair *rqpair)
	struct ibv_recv_wr *bad_recv_wr;
	int rc = 0;

	if (rqpair->recvs_to_post.first) {
		rc = ibv_post_recv(rqpair->rdma_qp->qp, rqpair->recvs_to_post.first, &bad_recv_wr);
	rc = spdk_rdma_qp_flush_recv_wrs(rqpair->rdma_qp, &bad_recv_wr);
	if (spdk_unlikely(rc)) {
		SPDK_ERRLOG("Failed to post WRs on receive queue, errno %d (%s), bad_wr %p\n",
			    rc, spdk_strerror(rc), bad_recv_wr);
@@ -674,8 +666,6 @@ nvme_rdma_qpair_submit_recvs(struct nvme_rdma_qpair *rqpair)
		}
	}

		rqpair->recvs_to_post.first = NULL;
	}
	return rc;
}

@@ -708,13 +698,7 @@ nvme_rdma_qpair_queue_recv_wr(struct nvme_rdma_qpair *rqpair, struct ibv_recv_wr
	assert(rqpair->current_num_recvs < rqpair->num_entries);

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

	rqpair->recvs_to_post.last = wr;
	spdk_rdma_qp_queue_recv_wrs(rqpair->rdma_qp, wr);

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