From 5abff0a8ac0796a3d264835a62e4077f142694c4 Mon Sep 17 00:00:00 2001 From: Gollu Appalanaidu Date: Fri, 26 Mar 2021 00:37:23 +0530 Subject: [PATCH] nvme: nvme get and set features buffer length clean up Signed-off-by: Gollu Appalanaidu --- nvme.c | 49 ++++++++++++++++--------------------------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/nvme.c b/nvme.c index eb491319..926651f5 100644 --- a/nvme.c +++ b/nvme.c @@ -84,6 +84,16 @@ static struct program nvme = { .extensions = &builtin, }; +static __u16 nvme_feat_buf_len[0x100] = { + [NVME_FEAT_LBA_RANGE] = 4096, + [NVME_FEAT_AUTO_PST] = 256, + [NVME_FEAT_HOST_MEM_BUF] = 4096, + [NVME_FEAT_HOST_ID] = 8, + [NVME_FEAT_PLM_CONFIG] = 512, + [NVME_FEAT_TIMESTAMP] = 8, + [NVME_FEAT_HOST_BEHAVIOR] = 512 +}; + const char *output_format = "Output format: normal|json|binary"; static const char *output_format_no_binary = "Output format: normal|json"; @@ -2711,32 +2721,11 @@ static int get_feature(int argc, char **argv, struct command *cmd, struct plugin goto close_fd; } - switch (cfg.feature_id) { - case NVME_FEAT_LBA_RANGE: - cfg.data_len = 4096; - break; - case NVME_FEAT_AUTO_PST: - cfg.data_len = 256; - break; - case NVME_FEAT_HOST_MEM_BUF: - cfg.data_len = 4096; - break; - case NVME_FEAT_HOST_ID: - cfg.data_len = 8; - /* check for Extended Host Identifier */ - if (cfg.cdw11 & 0x1) - cfg.data_len = 16; - break; - case NVME_FEAT_PLM_CONFIG: - cfg.data_len = 512; - break; - case NVME_FEAT_TIMESTAMP: - cfg.data_len = 8; - break; - case NVME_FEAT_HOST_BEHAVIOR: - cfg.data_len = 512; - break; - } + cfg.data_len = nvme_feat_buf_len[cfg.feature_id]; + + /* check for Extended Host Identifier */ + if (cfg.feature_id == NVME_FEAT_HOST_ID && (cfg.cdw11 & 0x1)) + cfg.data_len = 16; if (cfg.sel == 3) cfg.data_len = 0; @@ -3548,8 +3537,6 @@ ret: } #define STRTOUL_AUTO_BASE (0) -#define NVME_FEAT_LBA_RANGE_LEN (4096) -#define NVME_FEAT_TIMESTAMP_STR_LEN (13) #define NVME_FEAT_TIMESTAMP_DATA_SIZE (6) static int set_feature(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3629,11 +3616,7 @@ static int set_feature(int argc, char **argv, struct command *cmd, struct plugin goto close_fd; } - if (NVME_FEAT_LBA_RANGE == cfg.feature_id) { - cfg.data_len = NVME_FEAT_LBA_RANGE_LEN; - } else if (NVME_FEAT_TIMESTAMP == cfg.feature_id) { - cfg.data_len = NVME_FEAT_TIMESTAMP_STR_LEN; - } + cfg.data_len = nvme_feat_buf_len[cfg.feature_id]; if (cfg.data_len) { if (posix_memalign(&buf, getpagesize(), cfg.data_len)) { -- 2.50.1