diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index a63d0faa4..28bf04c2d 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -1197,7 +1197,7 @@ nvme_ctrlr_construct_and_submit_aer(struct spdk_nvme_ctrlr *ctrlr, static int nvme_ctrlr_configure_aer(struct spdk_nvme_ctrlr *ctrlr) { - union spdk_nvme_critical_warning_state state; + union spdk_nvme_feat_async_event_configuration config; struct nvme_async_event_request *aer; uint32_t i; struct nvme_completion_poll_status status; @@ -1205,9 +1205,16 @@ nvme_ctrlr_configure_aer(struct spdk_nvme_ctrlr *ctrlr) status.done = false; - state.raw = 0xFF; - state.bits.reserved = 0; - rc = nvme_ctrlr_cmd_set_async_event_config(ctrlr, state, nvme_completion_poll_cb, &status); + config.raw = 0; + config.bits.crit_warn.bits.available_spare = 1; + config.bits.crit_warn.bits.temperature = 1; + config.bits.crit_warn.bits.device_reliability = 1; + config.bits.crit_warn.bits.read_only = 1; + config.bits.crit_warn.bits.volatile_memory_backup = 1; + config.bits.ns_attr_notice = 1; + config.bits.fw_activation_notice = 1; + config.bits.telemetry_log_notice = 1; + rc = nvme_ctrlr_cmd_set_async_event_config(ctrlr, config, nvme_completion_poll_cb, &status); if (rc != 0) { return rc; } diff --git a/lib/nvme/nvme_ctrlr_cmd.c b/lib/nvme/nvme_ctrlr_cmd.c index 0208d6dfd..857165c50 100644 --- a/lib/nvme/nvme_ctrlr_cmd.c +++ b/lib/nvme/nvme_ctrlr_cmd.c @@ -363,12 +363,12 @@ nvme_ctrlr_cmd_get_num_queues(struct spdk_nvme_ctrlr *ctrlr, int nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr, - union spdk_nvme_critical_warning_state state, spdk_nvme_cmd_cb cb_fn, + union spdk_nvme_feat_async_event_configuration config, spdk_nvme_cmd_cb cb_fn, void *cb_arg) { uint32_t cdw11; - cdw11 = state.raw; + cdw11 = config.raw; return spdk_nvme_ctrlr_cmd_set_feature(ctrlr, SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION, cdw11, 0, NULL, 0, cb_fn, cb_arg); diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 28b1a4569..2548349c9 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -542,7 +542,7 @@ int nvme_ctrlr_cmd_set_num_queues(struct spdk_nvme_ctrlr *ctrlr, int nvme_ctrlr_cmd_get_num_queues(struct spdk_nvme_ctrlr *ctrlr, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr, - union spdk_nvme_critical_warning_state state, + union spdk_nvme_feat_async_event_configuration config, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_set_host_id(struct spdk_nvme_ctrlr *ctrlr, void *host_id, uint32_t host_id_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg); diff --git a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c index dd62de859..ecac6cf42 100644 --- a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c +++ b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c @@ -266,7 +266,7 @@ nvme_completion_poll_cb(void *arg, const struct spdk_nvme_cpl *cpl) int nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr, - union spdk_nvme_critical_warning_state state, spdk_nvme_cmd_cb cb_fn, + union spdk_nvme_feat_async_event_configuration config, spdk_nvme_cmd_cb cb_fn, void *cb_arg) { fake_cpl_success(cb_fn, cb_arg);