Commit 54854b99 authored by Jacek Kalwas's avatar Jacek Kalwas Committed by Tomasz Zawadzki
Browse files

nvme/tcp: add wrapper for setting tcp qpair state



This is a prework for the next change.

Change-Id: Ibf6444cb02853a81a39555b23874786282479c9d
Signed-off-by: default avatarJacek Kalwas <jacek.kalwas@nutanix.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26587


Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz@tzawadzki.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Community-CI: Mellanox Build Bot
parent 2241c15c
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -42,6 +42,10 @@
#define NVME_TQPAIR_INFOLOG(tqpair, format, ...) NVME_QPAIR_INFOLOG((tqpair) ? &(tqpair)->qpair : NULL, format, ##__VA_ARGS__)
#define NVME_TQPAIR_DEBUGLOG(tqpair, format, ...) NVME_QPAIR_DEBUGLOG((tqpair) ? &(tqpair)->qpair : NULL, format, ##__VA_ARGS__)

#define nvme_tcp_qpair_set_state(_qpair, _state) do { \
	(_qpair)->state = (_state); \
} while (0)

/*
 * Maximum value of transport_ack_timeout used by TCP controller
 */
@@ -1102,7 +1106,7 @@ nvme_tcp_qpair_send_h2c_term_req_complete(void *cb_arg)
{
	struct nvme_tcp_qpair *tqpair = cb_arg;

	tqpair->state = NVME_TCP_QPAIR_STATE_EXITING;
	nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_EXITING);
}

static void
@@ -1496,7 +1500,7 @@ nvme_tcp_send_icreq_complete(void *cb_arg)
	tqpair->flags.icreq_send_ack = true;
	if (tqpair->flags.icresp_received) {
		NVME_TQPAIR_DEBUGLOG(tqpair, "finalize icresp\n");
		tqpair->state = NVME_TCP_QPAIR_STATE_FABRIC_CONNECT_SEND;
		nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_FABRIC_CONNECT_SEND);
	}
}

@@ -1568,7 +1572,7 @@ nvme_tcp_icresp_handle(struct nvme_tcp_qpair *tqpair,
		return;
	}

	tqpair->state = NVME_TCP_QPAIR_STATE_FABRIC_CONNECT_SEND;
	nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_FABRIC_CONNECT_SEND);
	return;
end:
	nvme_tcp_qpair_send_h2c_term_req(tqpair, pdu, fes, error_offset);
@@ -2229,7 +2233,7 @@ nvme_tcp_sock_connect_cb_fn(void *cb_arg, int status)
		return;
	}

	tqpair->state = NVME_TCP_QPAIR_STATE_INITIALIZING;
	nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_INITIALIZING);
	nvme_tcp_qpair_icreq_send(tqpair);
}

@@ -2315,7 +2319,7 @@ nvme_tcp_qpair_connect_sock(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpai
		opts.impl_opts_size = sizeof(impl_opts);
	}

	tqpair->state = NVME_TCP_QPAIR_STATE_SOCK_CONNECTING;
	nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_SOCK_CONNECTING);
	tqpair->sock = spdk_sock_connect_async(ctrlr->trid.traddr, port, sock_impl_name, &opts,
					       nvme_tcp_sock_connect_cb_fn, tqpair);
	if (!tqpair->sock) {
@@ -2364,7 +2368,8 @@ nvme_tcp_ctrlr_connect_qpair_poll(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvm
			NVME_TQPAIR_ERRLOG(tqpair, "Failed to send an NVMe-oF Fabric CONNECT command\n");
			break;
		}
		tqpair->state = NVME_TCP_QPAIR_STATE_FABRIC_CONNECT_POLL;

		nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_FABRIC_CONNECT_POLL);
		rc = -EAGAIN;
		break;
	case NVME_TCP_QPAIR_STATE_FABRIC_CONNECT_POLL:
@@ -2373,11 +2378,11 @@ nvme_tcp_ctrlr_connect_qpair_poll(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvm
			if (nvme_fabric_qpair_auth_required(qpair)) {
				rc = nvme_fabric_qpair_authenticate_async(qpair);
				if (rc == 0) {
					tqpair->state = NVME_TCP_QPAIR_STATE_AUTHENTICATING;
					nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_AUTHENTICATING);
					rc = -EAGAIN;
				}
			} else {
				tqpair->state = NVME_TCP_QPAIR_STATE_RUNNING;
				nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_RUNNING);
				nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTED);
			}
		} else if (rc != -EAGAIN) {
@@ -2387,7 +2392,7 @@ nvme_tcp_ctrlr_connect_qpair_poll(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvm
	case NVME_TCP_QPAIR_STATE_AUTHENTICATING:
		rc = nvme_fabric_qpair_authenticate_poll(qpair);
		if (rc == 0) {
			tqpair->state = NVME_TCP_QPAIR_STATE_RUNNING;
			nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_RUNNING);
			nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTED);
		}
		break;
@@ -2709,8 +2714,8 @@ nvme_tcp_qpair_authenticate(struct spdk_nvme_qpair *qpair)

	rc = nvme_fabric_qpair_authenticate_async(qpair);
	if (rc == 0) {
		nvme_tcp_qpair_set_state(tqpair, NVME_TCP_QPAIR_STATE_AUTHENTICATING);
		nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTING);
		tqpair->state = NVME_TCP_QPAIR_STATE_AUTHENTICATING;
	}

	return rc;