Commit 208fbb67 authored by Seth Howell's avatar Seth Howell Committed by Tomasz Zawadzki
Browse files

nvme_rdma: more cm_event validation to a helper function.



This step is going to become more involved, so it's best to keep it in a
separate function entirely.

Change-Id: Iefa9860420edf28e858c4ed8aa932985c686cfd9
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/473060


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent b35dfa2b
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -352,6 +352,23 @@ nvme_rdma_poll_events(struct nvme_rdma_ctrlr *rctrlr)
	}
}

static int
nvme_rdma_validate_cm_event(enum rdma_cm_event_type expected_evt_type,
			    struct rdma_cm_event *reaped_evt)
{
	int rc = -EBADMSG;

	if (expected_evt_type == reaped_evt->event) {
		return 0;
	}

	SPDK_ERRLOG("Expected %s but received %s (%d) from CM event channel (status = %d)\n",
		    nvme_rdma_cm_event_str_get(expected_evt_type),
		    nvme_rdma_cm_event_str_get(reaped_evt->event), reaped_evt->event,
		    reaped_evt->status);
	return rc;
}

static int
nvme_rdma_process_event(struct nvme_rdma_qpair *rqpair,
			struct rdma_event_channel *channel,
@@ -385,13 +402,7 @@ nvme_rdma_process_event(struct nvme_rdma_qpair *rqpair,
		return -EADDRNOTAVAIL;
	}

	if (rqpair->evt->event != evt) {
		SPDK_ERRLOG("Expected %s but received %s (%d) from CM event channel (status = %d)\n",
			    nvme_rdma_cm_event_str_get(evt),
			    nvme_rdma_cm_event_str_get(rqpair->evt->event), rqpair->evt->event,
			    rqpair->evt->status);
		rc = -EBADMSG;
	}
	rc = nvme_rdma_validate_cm_event(evt, rqpair->evt);

	rc2 = nvme_rdma_qpair_process_cm_event(rqpair);
	/* bad message takes precedence over the other error codes from processing the event. */