Commit d9a3a8e5 authored by Ben Walker's avatar Ben Walker Committed by Jim Harris
Browse files

nvme/rdma: nvme_rdma_recv now takes the response index



Instead of passing the work completion, just pass the
response index. This keeps the work completions localized
to the polling function.

Change-Id: I0e6a1d8564200b5ac3aa43dfd58ae152d439bbd8
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 0ebf93e3
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -476,18 +476,12 @@ fail:
}

static int
nvme_rdma_recv(struct nvme_rdma_qpair *rqpair, struct ibv_wc *wc)
nvme_rdma_recv(struct nvme_rdma_qpair *rqpair, uint64_t rsp_idx)
{
	struct spdk_nvme_qpair *qpair = &rqpair->qpair;
	struct spdk_nvme_rdma_req *rdma_req;
	struct spdk_nvme_cpl *rsp;
	struct nvme_request *req;
	uint64_t rsp_idx = wc->wr_id;

	if (wc->byte_len < sizeof(struct spdk_nvmf_fabric_connect_rsp)) {
		SPDK_ERRLOG("recv length %u less than capsule header\n", wc->byte_len);
		return -1;
	}

	assert(rsp_idx < rqpair->qpair.num_entries);
	rsp = &rqpair->rsps[rsp_idx];
@@ -1378,7 +1372,12 @@ nvme_rdma_qpair_process_completions(struct spdk_nvme_qpair *qpair,

		if (wc.opcode == IBV_WC_RECV) {
			SPDK_TRACELOG(SPDK_TRACE_DEBUG, "CQ recv completion\n");
			rc = nvme_rdma_recv(rqpair, &wc);
			if (wc.byte_len < sizeof(struct spdk_nvme_cpl)) {
				SPDK_ERRLOG("recv length %u less than expected response size\n", wc.byte_len);
				return -1;
			}

			rc = nvme_rdma_recv(rqpair, wc.wr_id);
			if (rc) {
				SPDK_ERRLOG("nvme_rdma_recv processing failure\n");