]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
ocp: split unsupported requirement log print codes
authorTokunori Ikegami <ikegami.t@gmail.com>
Sun, 20 Oct 2024 16:33:41 +0000 (01:33 +0900)
committerDaniel Wagner <wagi@monom.org>
Wed, 23 Oct 2024 12:24:49 +0000 (14:24 +0200)
Move into ocp-print-stdout.c and ocp-print-json.c.

Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
plugins/ocp/ocp-nvme.c
plugins/ocp/ocp-nvme.h
plugins/ocp/ocp-print-binary.c
plugins/ocp/ocp-print-json.c
plugins/ocp/ocp-print-stdout.c
plugins/ocp/ocp-print.c
plugins/ocp/ocp-print.h

index f8b57d14724fecd1304c7e430f6606967f2e66b6..a2acb2ed23914e0cd6d62dd53822661c8ab4119e 100644 (file)
@@ -1596,10 +1596,8 @@ out:
 /// Unsupported Requirement Log Page (LID : C5h)
 
 /* C5 Unsupported Requirement Log Page */
-#define C5_GUID_LENGTH                     16
 #define C5_UNSUPPORTED_REQS_LEN            4096
 #define C5_UNSUPPORTED_REQS_OPCODE         0xC5
-#define C5_NUM_UNSUPPORTED_REQ_ENTRIES     253
 
 static __u8 unsupported_req_guid[C5_GUID_LENGTH] = {
        0x2F, 0x72, 0x9C, 0x0E,
@@ -1608,86 +1606,10 @@ static __u8 unsupported_req_guid[C5_GUID_LENGTH] = {
        0xB7, 0x98, 0xBB, 0xC7
 };
 
-/*
- * struct unsupported_requirement_log - unsupported requirement list
- * @unsupported_count:        Number of Unsupported Requirement IDs
- * @rsvd1:                    Reserved
- * @unsupported_req_list:     Unsupported Requirements lists upto 253.
- * @rsvd2:                    Reserved
- * @log_page_version:         indicates the version of the mapping this log page uses.
- *                            Shall be set to 0001h
- * @log_page_guid:            Shall be set to C7BB98B7D0324863BB2C23990E9C722Fh.
- */
-struct __packed unsupported_requirement_log {
-       __le16  unsupported_count;
-       __u8    rsvd1[14];
-       __u8    unsupported_req_list[C5_NUM_UNSUPPORTED_REQ_ENTRIES][16];
-       __u8    rsvd2[14];
-       __le16  log_page_version;
-       __u8    log_page_guid[C5_GUID_LENGTH];
-};
-
 /* Function declaration for unsupported requirement log page (LID:C5h) */
 static int ocp_unsupported_requirements_log(int argc, char **argv, struct command *cmd,
                                            struct plugin *plugin);
 
-static int ocp_print_C5_log_normal(struct nvme_dev *dev,
-                                  struct unsupported_requirement_log *log_data)
-{
-       int j;
-
-       printf("Unsupported Requirement-C5 Log Page Data-\n");
-
-       printf("  Number Unsupported Req IDs            : 0x%x\n", le16_to_cpu(log_data->unsupported_count));
-
-       for (j = 0; j < le16_to_cpu(log_data->unsupported_count); j++)
-               printf("  Unsupported Requirement List %d       : %s\n", j, log_data->unsupported_req_list[j]);
-
-       printf("  Log Page Version                      : 0x%x\n", le16_to_cpu(log_data->log_page_version));
-       printf("  Log page GUID                         : 0x");
-       for (j = C5_GUID_LENGTH - 1; j >= 0; j--)
-               printf("%02x", log_data->log_page_guid[j]);
-       printf("\n");
-
-       return 0;
-}
-
-static void ocp_print_C5_log_json(struct unsupported_requirement_log *log_data)
-{
-       int j;
-       struct json_object *root;
-       char unsup_req_list_str[40];
-       char guid_buf[C5_GUID_LENGTH];
-       char *guid = guid_buf;
-
-       root = json_create_object();
-
-       json_object_add_value_int(root, "Number Unsupported Req IDs", le16_to_cpu(log_data->unsupported_count));
-
-       memset((void *)unsup_req_list_str, 0, 40);
-       for (j = 0; j < le16_to_cpu(log_data->unsupported_count); j++) {
-               sprintf((char *)unsup_req_list_str, "Unsupported Requirement List %d", j);
-               json_object_add_value_string(root, unsup_req_list_str, (char *)log_data->unsupported_req_list[j]);
-       }
-
-       json_object_add_value_int(root, "Log Page Version", le16_to_cpu(log_data->log_page_version));
-
-       memset((void *)guid, 0, C5_GUID_LENGTH);
-       for (j = C5_GUID_LENGTH - 1; j >= 0; j--)
-               guid += sprintf(guid, "%02x", log_data->log_page_guid[j]);
-       json_object_add_value_string(root, "Log page GUID", guid_buf);
-
-       json_print_object(root, NULL);
-       printf("\n");
-
-       json_free_object(root);
-}
-
-static void ocp_print_c5_log_binary(struct unsupported_requirement_log *log_data)
-{
-       return d_raw((unsigned char *)log_data, sizeof(*log_data));
-}
-
 static int get_c5_log_page(struct nvme_dev *dev, char *format)
 {
        nvme_print_flags_t fmt;
@@ -1734,20 +1656,7 @@ static int get_c5_log_page(struct nvme_dev *dev, char *format)
                                goto out;
                        }
                }
-
-               switch (fmt) {
-               case NORMAL:
-                       ocp_print_C5_log_normal(dev, log_data);
-                       break;
-               case JSON:
-                       ocp_print_C5_log_json(log_data);
-                       break;
-               case BINARY:
-                       ocp_print_c5_log_binary(log_data);
-                       break;
-               default:
-                       break;
-               }
+               ocp_c5_log(dev, log_data, fmt);
        } else {
                fprintf(stderr, "ERROR : OCP : Unable to read C3 data from buffer\n");
        }
index 779ae55623df131f3ac45c1dfd3ff33a8301529f..6f7c149a00d88cbd8c007c6b8f87b5dd50f40e85 100644 (file)
@@ -97,4 +97,26 @@ struct __packed ssd_latency_monitor_log {
 #define READ           3
 #define WRITE          2
 #define TRIM           1
+
+#define C5_GUID_LENGTH                     16
+#define C5_NUM_UNSUPPORTED_REQ_ENTRIES     253
+
+/*
+ * struct unsupported_requirement_log - unsupported requirement list
+ * @unsupported_count:        Number of Unsupported Requirement IDs
+ * @rsvd1:                    Reserved
+ * @unsupported_req_list:     Unsupported Requirements lists up to 253.
+ * @rsvd2:                    Reserved
+ * @log_page_version:         indicates the version of the mapping this log page uses.
+ *                            Shall be set to 0001h
+ * @log_page_guid:            Shall be set to C7BB98B7D0324863BB2C23990E9C722Fh.
+ */
+struct __packed unsupported_requirement_log {
+       __le16  unsupported_count;
+       __u8    rsvd1[14];
+       __u8    unsupported_req_list[C5_NUM_UNSUPPORTED_REQ_ENTRIES][16];
+       __u8    rsvd2[14];
+       __le16  log_page_version;
+       __u8    log_page_guid[C5_GUID_LENGTH];
+};
 #endif /* OCP_NVME_H */
index 5e2ef158018e102a49d7b181865a87520e5cfa85..b3167fc620c76a18d2ea45fdfcb9ea441206f96e 100644 (file)
@@ -12,8 +12,14 @@ static void binary_hwcomp_log(struct hwcomp_log *log, __u32 id, bool list)
        d_raw((unsigned char *)log, offsetof(struct hwcomp_log, desc) + desc_len);
 }
 
+static void binary_c5_log(struct nvme_dev *dev, struct unsupported_requirement_log *log_data)
+{
+       d_raw((unsigned char *)log_data, sizeof(*log_data));
+}
+
 static struct ocp_print_ops binary_print_ops = {
        .hwcomp_log = binary_hwcomp_log,
+       .c5_log = binary_c5_log,
 };
 
 struct ocp_print_ops *ocp_get_binary_print_ops(nvme_print_flags_t flags)
index 7dcdb8bf06ba054dfa3aa12285cfa7b380b630d7..3b00a150f6665b2ff35938e024d0db4faeea9433 100644 (file)
@@ -407,12 +407,47 @@ static void json_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *lo
        json_free_object(root);
 }
 
+static void json_c5_log(struct nvme_dev *dev, struct unsupported_requirement_log *log_data)
+{
+       int j;
+       struct json_object *root;
+       char unsup_req_list_str[40];
+       char guid_buf[C5_GUID_LENGTH];
+       char *guid = guid_buf;
+
+       root = json_create_object();
+
+       json_object_add_value_int(root, "Number Unsupported Req IDs",
+                                 le16_to_cpu(log_data->unsupported_count));
+
+       memset((void *)unsup_req_list_str, 0, 40);
+       for (j = 0; j < le16_to_cpu(log_data->unsupported_count); j++) {
+               sprintf((char *)unsup_req_list_str, "Unsupported Requirement List %d", j);
+               json_object_add_value_string(root, unsup_req_list_str,
+                                            (char *)log_data->unsupported_req_list[j]);
+       }
+
+       json_object_add_value_int(root, "Log Page Version",
+                                 le16_to_cpu(log_data->log_page_version));
+
+       memset((void *)guid, 0, C5_GUID_LENGTH);
+       for (j = C5_GUID_LENGTH - 1; j >= 0; j--)
+               guid += sprintf(guid, "%02x", log_data->log_page_guid[j]);
+       json_object_add_value_string(root, "Log page GUID", guid_buf);
+
+       json_print_object(root, NULL);
+       printf("\n");
+
+       json_free_object(root);
+}
+
 static struct ocp_print_ops json_print_ops = {
        .hwcomp_log = json_hwcomp_log,
        .fw_act_history = json_fw_activation_history,
        .smart_extended_log = json_smart_extended_log,
        .telemetry_log = json_telemetry_log,
        .c3_log = json_c3_log,
+       .c5_log = json_c5_log,
 };
 
 struct ocp_print_ops *ocp_get_json_print_ops(nvme_print_flags_t flags)
index 1bb252a7b365304ce5aac2e0772dff4e4186b366..9cc7f5a2c99f548409307daed2d8ce9daf1c30cf 100644 (file)
@@ -330,12 +330,36 @@ static int stdout_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *l
        return 0;
 }
 
+static int stdout_c5_log(struct nvme_dev *dev, struct unsupported_requirement_log *log_data)
+{
+       int j;
+
+       printf("Unsupported Requirement-C5 Log Page Data-\n");
+
+       printf("  Number Unsupported Req IDs            : 0x%x\n",
+              le16_to_cpu(log_data->unsupported_count));
+
+       for (j = 0; j < le16_to_cpu(log_data->unsupported_count); j++)
+               printf("  Unsupported Requirement List %d       : %s\n", j,
+                      log_data->unsupported_req_list[j]);
+
+       printf("  Log Page Version                      : 0x%x\n",
+              le16_to_cpu(log_data->log_page_version));
+       printf("  Log page GUID                         : 0x");
+       for (j = C5_GUID_LENGTH - 1; j >= 0; j--)
+               printf("%02x", log_data->log_page_guid[j]);
+       printf("\n");
+
+       return 0;
+}
+
 static struct ocp_print_ops stdout_print_ops = {
        .hwcomp_log = stdout_hwcomp_log,
        .fw_act_history = stdout_fw_activation_history,
        .smart_extended_log = stdout_smart_extended_log,
        .telemetry_log = stdout_telemetry_log,
        .c3_log = (void *)stdout_c3_log,
+       .c5_log = (void *)stdout_c5_log,
 };
 
 struct ocp_print_ops *ocp_get_stdout_print_ops(nvme_print_flags_t flags)
index 45cd4c76ca665c3e12d9c7993fb95d5df30eef8b..68bb6d2822f27c22d131188c19316a02267d8b2e 100644 (file)
@@ -51,3 +51,9 @@ void ocp_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *log_data,
 {
        ocp_print(c3_log, flags, dev, log_data);
 }
+
+void ocp_c5_log(struct nvme_dev *dev, struct unsupported_requirement_log *log_data,
+               nvme_print_flags_t flags)
+{
+       ocp_print(c5_log, flags, dev, log_data);
+}
index db54d21d0b7947165ed6175d7473606fbcefcae7..46f4d04c596f8371aeb513a355fd6847e0cd6876 100644 (file)
@@ -13,6 +13,7 @@ struct ocp_print_ops {
        void (*smart_extended_log)(void *data);
        void (*telemetry_log)(struct ocp_telemetry_parse_options *options);
        void (*c3_log)(struct nvme_dev *dev, struct ssd_latency_monitor_log *log_data);
+       void (*c5_log)(struct nvme_dev *dev, struct unsupported_requirement_log *log_data);
        nvme_print_flags_t flags;
 };
 
@@ -34,4 +35,6 @@ void ocp_smart_extended_log(void *data, nvme_print_flags_t flags);
 void ocp_show_telemetry_log(struct ocp_telemetry_parse_options *options, nvme_print_flags_t flags);
 void ocp_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *log_data,
                nvme_print_flags_t flags);
+void ocp_c5_log(struct nvme_dev *dev, struct unsupported_requirement_log *log_data,
+               nvme_print_flags_t flags);
 #endif /* OCP_PRINT_H */