From 693e18352051c3a2cf0f8a9d9f0885d518dfc572 Mon Sep 17 00:00:00 2001 From: Steven Seungcheol Lee Date: Tue, 3 Dec 2024 18:18:45 +0900 Subject: [PATCH] mi: telemetry log update based NVMe v2.1 MCDA added for Telemetry Host-Initiated Log creation Signed-off-by: Steven Seungcheol Lee --- src/nvme/ioctl.h | 16 ---------------- src/nvme/mi.h | 22 +++++++++++++++++++--- src/nvme/types.h | 16 ++++++++++++++++ 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/src/nvme/ioctl.h b/src/nvme/ioctl.h index 02b70335..e302af00 100644 --- a/src/nvme/ioctl.h +++ b/src/nvme/ioctl.h @@ -1525,22 +1525,6 @@ static inline int nvme_get_log_device_self_test(int fd, NVME_NSID_ALL, sizeof(*log), log); } -/** - * enum nvme_telemetry_da - Telemetry Log Data Area - * @NVME_TELEMETRY_DA_CTRL_DETERMINE: - * @NVME_TELEMETRY_DA_1: Data Area 1 - * @NVME_TELEMETRY_DA_2: Data Area 2 - * @NVME_TELEMETRY_DA_3: Data Area 3 - * @NVME_TELEMETRY_DA_4: Data Area 4 - */ -enum nvme_telemetry_da { - NVME_TELEMETRY_DA_CTRL_DETERMINE = 0, - NVME_TELEMETRY_DA_1 = 1, - NVME_TELEMETRY_DA_2 = 2, - NVME_TELEMETRY_DA_3 = 3, - NVME_TELEMETRY_DA_4 = 4, -}; - /** * nvme_get_log_create_telemetry_host_mcda() - Create host telemetry log * @fd: File descriptor of nvme device diff --git a/src/nvme/mi.h b/src/nvme/mi.h index 3ea2b22c..694f3260 100644 --- a/src/nvme/mi.h +++ b/src/nvme/mi.h @@ -1760,14 +1760,16 @@ static inline int nvme_mi_admin_get_log_device_self_test(nvme_mi_ctrl_t ctrl, } /** - * nvme_mi_admin_get_log_create_telemetry_host() - Create host telemetry log + * nvme_mi_admin_get_log_create_telemetry_host_mcda() - Create host telemetry log * @ctrl: Controller to query + * @mcda: Maximum Created Data Area * @log: Userspace address of the log payload * * Return: The nvme command status if a response was received (see * &enum nvme_status_field) or -1 with errno set otherwise. */ -static inline int nvme_mi_admin_get_log_create_telemetry_host(nvme_mi_ctrl_t ctrl, +static inline int nvme_mi_admin_get_log_create_telemetry_host_mcda(nvme_mi_ctrl_t ctrl, + enum nvme_telemetry_da mcda, struct nvme_telemetry_log *log) { struct nvme_get_log_args args = { @@ -1780,7 +1782,7 @@ static inline int nvme_mi_admin_get_log_create_telemetry_host(nvme_mi_ctrl_t ctr .nsid = NVME_NSID_NONE, .csi = NVME_CSI_NVM, .lsi = NVME_LOG_LSI_NONE, - .lsp = NVME_LOG_TELEM_HOST_LSP_CREATE, + .lsp = (__u8)((mcda << 1) | NVME_LOG_TELEM_HOST_LSP_CREATE), .uuidx = NVME_UUID_NONE, .rae = false, .ot = false, @@ -1788,6 +1790,20 @@ static inline int nvme_mi_admin_get_log_create_telemetry_host(nvme_mi_ctrl_t ctr return nvme_mi_admin_get_log(ctrl, &args); } +/** + * nvme_mi_admin_get_log_create_telemetry_host() - Create host telemetry log + * @ctrl: Controller to query + * @log: Userspace address of the log payload + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_create_telemetry_host(nvme_mi_ctrl_t ctrl, + struct nvme_telemetry_log *log) +{ + return nvme_mi_admin_get_log_create_telemetry_host_mcda(ctrl, NVME_TELEMETRY_DA_CTRL_DETERMINE, log); +} + /** * nvme_mi_admin_get_log_telemetry_host() - Get Telemetry Host-Initiated log * page diff --git a/src/nvme/types.h b/src/nvme/types.h index baa748c0..b0fa1003 100644 --- a/src/nvme/types.h +++ b/src/nvme/types.h @@ -3703,6 +3703,22 @@ enum nvme_cmd_get_log_telemetry_host_lsp { NVME_LOG_TELEM_HOST_LSP_CREATE = 1, }; +/** + * enum nvme_telemetry_da - Telemetry Log Data Area + * @NVME_TELEMETRY_DA_CTRL_DETERMINE: + * @NVME_TELEMETRY_DA_1: Data Area 1 + * @NVME_TELEMETRY_DA_2: Data Area 2 + * @NVME_TELEMETRY_DA_3: Data Area 3 + * @NVME_TELEMETRY_DA_4: Data Area 4 + */ +enum nvme_telemetry_da { + NVME_TELEMETRY_DA_CTRL_DETERMINE = 0, + NVME_TELEMETRY_DA_1 = 1, + NVME_TELEMETRY_DA_2 = 2, + NVME_TELEMETRY_DA_3 = 3, + NVME_TELEMETRY_DA_4 = 4, +}; + /** * struct nvme_telemetry_log - Retrieve internal data specific to the * manufacturer.