Commit 2d1c3419 authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

nvmf: verify correct IOSQES and IOCQES on connect



The NVMe spec requires that the I/O queue entry size values in CC are
set before any I/O queues may be created.

Change-Id: I4f0c9a9c20411223d281993745c85a8431197961
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 43510e12
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -271,6 +271,20 @@ spdk_nvmf_session_connect(struct spdk_nvmf_conn *conn,
			return;
		}

		if (1u << session->vcprop.cc.bits.iosqes != sizeof(struct spdk_nvme_cmd)) {
			SPDK_ERRLOG("Got I/O connect with invalid IOSQES %u\n",
				    session->vcprop.cc.bits.iosqes);
			INVALID_CONNECT_CMD(qid);
			return;
		}

		if (1u << session->vcprop.cc.bits.iocqes != sizeof(struct spdk_nvme_cpl)) {
			SPDK_ERRLOG("Got I/O connect with invalid IOCQES %u\n",
				    session->vcprop.cc.bits.iocqes);
			INVALID_CONNECT_CMD(qid);
			return;
		}

		/* check if we would exceed session connection limit */
		if (session->num_connections >= session->max_connections_allowed) {
			SPDK_ERRLOG("connection limit %d\n", session->num_connections);