From: Gollu Appalanaidu Date: Thu, 25 Mar 2021 19:07:23 +0000 (+0530) Subject: nvme: nvme get and set features buffer length clean up X-Git-Tag: v1.14~22 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=5abff0a8ac0796a3d264835a62e4077f142694c4;p=users%2Fsagi%2Fnvme-cli.git nvme: nvme get and set features buffer length clean up Signed-off-by: Gollu Appalanaidu --- 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)) {