Commit 55b7c1dc authored by Konrad Sztyber's avatar Konrad Sztyber
Browse files

nvmf/auth: add small delay after sending failure1 message



This helps to ensure that the message is received by the host before the
connection is terminated.

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: Ie816e7cc32a2745244b0104aaf92325060eded02
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25001


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent 99a675b4
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include "nvmf_internal.h"

#define NVMF_AUTH_DEFAULT_KATO_US	(120ull * 1000 * 1000)
#define NVMF_AUTH_FAILURE1_DELAY_US	(100ull * 1000)
#define NVMF_AUTH_DIGEST_MAX_SIZE	64
#define NVMF_AUTH_DH_KEY_MAX_SIZE	1024

@@ -594,6 +595,18 @@ nvmf_auth_recv_complete(struct spdk_nvmf_request *req, uint32_t length)
	nvmf_auth_request_complete(req, SPDK_NVME_SCT_GENERIC, SPDK_NVME_SC_SUCCESS, 0);
}

static int
nvmf_auth_recv_failure1_done(void *ctx)
{
	struct spdk_nvmf_qpair *qpair = ctx;
	struct spdk_nvmf_qpair_auth *auth = qpair->auth;

	spdk_poller_unregister(&auth->poller);
	nvmf_auth_disconnect_qpair(qpair);

	return SPDK_POLLER_BUSY;
}

static void
nvmf_auth_recv_failure1(struct spdk_nvmf_request *req, int fail_reason)
{
@@ -617,7 +630,10 @@ nvmf_auth_recv_failure1(struct spdk_nvmf_request *req, int fail_reason)

	nvmf_auth_set_state(qpair, NVMF_QPAIR_AUTH_FAILURE1);
	nvmf_auth_recv_complete(req, sizeof(*failure));
	nvmf_auth_disconnect_qpair(qpair);

	spdk_poller_unregister(&auth->poller);
	auth->poller = SPDK_POLLER_REGISTER(nvmf_auth_recv_failure1_done, qpair,
					    NVMF_AUTH_FAILURE1_DELAY_US);
}

static int