diff --git a/lib/nvmf/direct.c b/lib/nvmf/direct.c index 9cf946f13..bbad84e28 100644 --- a/lib/nvmf/direct.c +++ b/lib/nvmf/direct.c @@ -155,9 +155,7 @@ nvmf_direct_ctrlr_process_admin_cmd(struct spdk_nvmf_request *req) case SPDK_NVME_FEAT_KEEP_ALIVE_TIMER: return spdk_nvmf_session_get_features_keep_alive_timer(req); case SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION: - SPDK_TRACELOG(SPDK_TRACE_NVMF, "Get Features - Async Event Configuration\n"); - response->cdw0 = session->async_event_config.raw; - return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; + return spdk_nvmf_session_get_features_async_event_configuration(req); default: goto passthrough; } @@ -172,10 +170,7 @@ nvmf_direct_ctrlr_process_admin_cmd(struct spdk_nvmf_request *req) case SPDK_NVME_FEAT_KEEP_ALIVE_TIMER: return spdk_nvmf_session_set_features_keep_alive_timer(req); case SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION: - SPDK_TRACELOG(SPDK_TRACE_NVMF, "Set Features - Async Event Configuration, cdw11 0x%08x\n", - cmd->cdw11); - session->async_event_config.raw = cmd->cdw11; - return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; + return spdk_nvmf_session_set_features_async_event_configuration(req); default: goto passthrough; } diff --git a/lib/nvmf/session.c b/lib/nvmf/session.c index 2e1f69272..2826f8bc0 100644 --- a/lib/nvmf/session.c +++ b/lib/nvmf/session.c @@ -740,3 +740,26 @@ spdk_nvmf_session_get_features_number_of_queues(struct spdk_nvmf_request *req) return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; } + +int +spdk_nvmf_session_set_features_async_event_configuration(struct spdk_nvmf_request *req) +{ + struct spdk_nvmf_session *session = req->conn->sess; + struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd; + + SPDK_TRACELOG(SPDK_TRACE_NVMF, "Set Features - Async Event Configuration, cdw11 0x%08x\n", + cmd->cdw11); + session->async_event_config.raw = cmd->cdw11; + return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; +} + +int +spdk_nvmf_session_get_features_async_event_configuration(struct spdk_nvmf_request *req) +{ + struct spdk_nvmf_session *session = req->conn->sess; + struct spdk_nvme_cpl *rsp = &req->rsp->nvme_cpl; + + SPDK_TRACELOG(SPDK_TRACE_NVMF, "Get Features - Async Event Configuration\n"); + rsp->cdw0 = session->async_event_config.raw; + return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; +} diff --git a/lib/nvmf/session.h b/lib/nvmf/session.h index 0ad48ca22..b23601811 100644 --- a/lib/nvmf/session.h +++ b/lib/nvmf/session.h @@ -125,4 +125,7 @@ int spdk_nvmf_session_get_features_keep_alive_timer(struct spdk_nvmf_request *re int spdk_nvmf_session_set_features_number_of_queues(struct spdk_nvmf_request *req); int spdk_nvmf_session_get_features_number_of_queues(struct spdk_nvmf_request *req); +int spdk_nvmf_session_set_features_async_event_configuration(struct spdk_nvmf_request *req); +int spdk_nvmf_session_get_features_async_event_configuration(struct spdk_nvmf_request *req); + #endif diff --git a/lib/nvmf/virtual.c b/lib/nvmf/virtual.c index 8933451e3..b7f6694b5 100644 --- a/lib/nvmf/virtual.c +++ b/lib/nvmf/virtual.c @@ -273,7 +273,6 @@ static int nvmf_virtual_ctrlr_get_features(struct spdk_nvmf_request *req) { uint8_t feature; - struct spdk_nvmf_session *session = req->conn->sess; struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd; struct spdk_nvme_cpl *response = &req->rsp->nvme_cpl; @@ -287,9 +286,7 @@ nvmf_virtual_ctrlr_get_features(struct spdk_nvmf_request *req) case SPDK_NVME_FEAT_KEEP_ALIVE_TIMER: return spdk_nvmf_session_get_features_keep_alive_timer(req); case SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION: - SPDK_TRACELOG(SPDK_TRACE_NVMF, "Get Features - Async Event Configuration\n"); - response->cdw0 = session->async_event_config.raw; - return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; + return spdk_nvmf_session_get_features_async_event_configuration(req); case SPDK_NVME_FEAT_HOST_IDENTIFIER: return spdk_nvmf_session_get_features_host_identifier(req); default: @@ -303,7 +300,6 @@ static int nvmf_virtual_ctrlr_set_features(struct spdk_nvmf_request *req) { uint8_t feature; - struct spdk_nvmf_session *session = req->conn->sess; struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd; struct spdk_nvme_cpl *response = &req->rsp->nvme_cpl; @@ -314,10 +310,7 @@ nvmf_virtual_ctrlr_set_features(struct spdk_nvmf_request *req) case SPDK_NVME_FEAT_KEEP_ALIVE_TIMER: return spdk_nvmf_session_set_features_keep_alive_timer(req); case SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION: - SPDK_TRACELOG(SPDK_TRACE_NVMF, "Set Features - Async Event Configuration, cdw11 0x%08x\n", - cmd->cdw11); - session->async_event_config.raw = cmd->cdw11; - return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; + return spdk_nvmf_session_set_features_async_event_configuration(req); case SPDK_NVME_FEAT_HOST_IDENTIFIER: return spdk_nvmf_session_set_features_host_identifier(req); default: diff --git a/test/lib/nvmf/direct/direct_ut.c b/test/lib/nvmf/direct/direct_ut.c index 61f6c0e80..ea81b501f 100644 --- a/test/lib/nvmf/direct/direct_ut.c +++ b/test/lib/nvmf/direct/direct_ut.c @@ -155,6 +155,17 @@ spdk_nvmf_session_get_features_keep_alive_timer(struct spdk_nvmf_request *req) return -1; } +int +spdk_nvmf_session_set_features_async_event_configuration(struct spdk_nvmf_request *req) +{ + return -1; +} + +int +spdk_nvmf_session_get_features_async_event_configuration(struct spdk_nvmf_request *req) +{ + return -1; +} /* test suite function */ static void diff --git a/test/lib/nvmf/virtual/virtual_ut.c b/test/lib/nvmf/virtual/virtual_ut.c index 164f1af3d..beb18f364 100644 --- a/test/lib/nvmf/virtual/virtual_ut.c +++ b/test/lib/nvmf/virtual/virtual_ut.c @@ -76,6 +76,18 @@ spdk_nvmf_session_get_features_keep_alive_timer(struct spdk_nvmf_request *req) return -1; } +int +spdk_nvmf_session_set_features_async_event_configuration(struct spdk_nvmf_request *req) +{ + return -1; +} + +int +spdk_nvmf_session_get_features_async_event_configuration(struct spdk_nvmf_request *req) +{ + return -1; +} + int spdk_nvmf_request_complete(struct spdk_nvmf_request *req) {