]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
ocp: split device capabilities log print codes
authorTokunori Ikegami <ikegami.t@gmail.com>
Sun, 20 Oct 2024 16:36:03 +0000 (01:36 +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 666d1a8403f2f3da2b5979c3d5b6f3822a8f3603..48046edea27170bd68f640a150e15ed298a60191 100644 (file)
@@ -1810,7 +1810,6 @@ static int ocp_error_recovery_log(int argc, char **argv, struct command *cmd, st
 
 #define C4_DEV_CAP_REQ_LEN                     0x1000
 #define C4_DEV_CAP_REQ_OPCODE          0xC4
-#define C4_GUID_LENGTH                         16
 static __u8 dev_cap_req_guid[C4_GUID_LENGTH] = {
        0x97, 0x42, 0x05, 0x0d,
        0xd1, 0xe1, 0xc9, 0x98,
@@ -1818,100 +1817,9 @@ static __u8 dev_cap_req_guid[C4_GUID_LENGTH] = {
        0x91, 0x3c, 0x05, 0xb7
 };
 
-/**
- * struct ocp_device_capabilities_log_page -   Device Capability Log page
- * @pcie_exp_port:                                             PCI Express Ports
- * @oob_management_support:                            OOB Management Support
- * @wz_cmd_support:                                            Write Zeroes Command Support
- * @sanitize_cmd_support:                              Sanitize Command Support
- * @dsm_cmd_support:                                   Dataset Management Command Support
- * @wu_cmd_support:                                            Write Uncorrectable Command Support
- * @fused_operation_support:                   Fused Operation Support
- * @min_valid_dssd_pwr_state:                  Minimum Valid DSSD Power State
- * @dssd_pwr_state_desc:                               DSSD Power State Descriptors
- * @vendor_specific_command_timeout:   Vendor Specific Command Timeout
- * @reserved:                                                  Reserved
- * @log_page_version:                                  Log Page Version
- * @log_page_guid:                                             Log Page GUID
- */
-struct __packed ocp_device_capabilities_log_page {
-       __le16  pcie_exp_port;
-       __le16  oob_management_support;
-       __le16  wz_cmd_support;
-       __le16  sanitize_cmd_support;
-       __le16  dsm_cmd_support;
-       __le16  wu_cmd_support;
-       __le16  fused_operation_support;
-       __le16  min_valid_dssd_pwr_state;
-       __u8    dssd_pwr_state_desc[128];
-       __u8    reserved[3934];
-       __le16  log_page_version;
-       __u8    log_page_guid[16];
-};
-
-static void ocp_print_c4_log_normal(struct ocp_device_capabilities_log_page *log_data);
-static void ocp_print_c4_log_json(struct ocp_device_capabilities_log_page *log_data);
-static void ocp_print_c4_log_binary(struct ocp_device_capabilities_log_page *log_data);
 static int get_c4_log_page(struct nvme_dev *dev, char *format);
 static int ocp_device_capabilities_log(int argc, char **argv, struct command *cmd, struct plugin *plugin);
 
-static void ocp_print_c4_log_normal(struct ocp_device_capabilities_log_page *log_data)
-{
-       int i;
-
-       printf("  Device Capability/C4 Log Page Data\n");
-       printf("  PCI Express Ports                                             : 0x%x\n", le16_to_cpu(log_data->pcie_exp_port));
-       printf("  OOB Management Support                                : 0x%x\n", le16_to_cpu(log_data->oob_management_support));
-       printf("  Write Zeroes Command Support                  : 0x%x\n", le16_to_cpu(log_data->wz_cmd_support));
-       printf("  Sanitize Command Support                              : 0x%x\n", le16_to_cpu(log_data->sanitize_cmd_support));
-       printf("  Dataset Management Command Support    : 0x%x\n", le16_to_cpu(log_data->dsm_cmd_support));
-       printf("  Write Uncorrectable Command Support   : 0x%x\n", le16_to_cpu(log_data->wu_cmd_support));
-       printf("  Fused Operation Support                               : 0x%x\n", le16_to_cpu(log_data->fused_operation_support));
-       printf("  Minimum Valid DSSD Power State                : 0x%x\n", le16_to_cpu(log_data->min_valid_dssd_pwr_state));
-       printf("  DSSD Power State Descriptors                                  : 0x");
-       for (i = 0; i <= 127; i++)
-               printf("%x", log_data->dssd_pwr_state_desc[i]);
-       printf("\n");
-       printf("  Log Page Version                                              : 0x%x\n", le16_to_cpu(log_data->log_page_version));
-       printf("  Log page GUID                                                 : 0x");
-       for (i = C4_GUID_LENGTH - 1; i >= 0; i--)
-               printf("%02x", log_data->log_page_guid[i]);
-       printf("\n");
-}
-
-static void ocp_print_c4_log_json(struct ocp_device_capabilities_log_page *log_data)
-{
-       struct json_object *root = json_create_object();
-       char guid[64];
-       int i;
-
-       json_object_add_value_int(root, "PCI Express Ports", le16_to_cpu(log_data->pcie_exp_port));
-       json_object_add_value_int(root, "OOB Management Support", le16_to_cpu(log_data->oob_management_support));
-       json_object_add_value_int(root, "Write Zeroes Command Support", le16_to_cpu(log_data->wz_cmd_support));
-       json_object_add_value_int(root, "Sanitize Command Support", le16_to_cpu(log_data->sanitize_cmd_support));
-       json_object_add_value_int(root, "Dataset Management Command Support", le16_to_cpu(log_data->dsm_cmd_support));
-       json_object_add_value_int(root, "Write Uncorrectable Command Support", le16_to_cpu(log_data->wu_cmd_support));
-       json_object_add_value_int(root, "Fused Operation Support", le16_to_cpu(log_data->fused_operation_support));
-       json_object_add_value_int(root, "Minimum Valid DSSD Power State", le16_to_cpu(log_data->min_valid_dssd_pwr_state));
-       for (i = 0; i <= 127; i++)
-               json_object_add_value_int(root, "DSSD Power State Descriptors", log_data->dssd_pwr_state_desc[i]);
-       json_object_add_value_int(root, "Log Page Version", le16_to_cpu(log_data->log_page_version));
-
-       memset((void *)guid, 0, 64);
-       sprintf((char *)guid, "0x%"PRIx64"%"PRIx64"", (uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[8]),
-               (uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[0]));
-       json_object_add_value_string(root, "Log page GUID", guid);
-
-       json_print_object(root, NULL);
-       printf("\n");
-       json_free_object(root);
-}
-
-static void ocp_print_c4_log_binary(struct ocp_device_capabilities_log_page *log_data)
-{
-       return d_raw((unsigned char *)log_data, sizeof(*log_data));
-}
-
 static int get_c4_log_page(struct nvme_dev *dev, char *format)
 {
        struct ocp_device_capabilities_log_page *log_data;
@@ -1957,20 +1865,7 @@ static int get_c4_log_page(struct nvme_dev *dev, char *format)
                                goto out;
                        }
                }
-
-               switch (fmt) {
-               case NORMAL:
-                       ocp_print_c4_log_normal(log_data);
-                       break;
-               case JSON:
-                       ocp_print_c4_log_json(log_data);
-                       break;
-               case BINARY:
-                       ocp_print_c4_log_binary(log_data);
-                       break;
-               default:
-                       break;
-               }
+               ocp_c4_log(log_data, fmt);
        } else {
                fprintf(stderr, "ERROR : OCP : Unable to read C4 data from buffer\n");
        }
index b9705c03f389b0789f5de158419d62fcae28262e..081171e868f1ca93eacd73a0f4033905c12abd4f 100644 (file)
@@ -162,4 +162,37 @@ struct __packed ocp_error_recovery_log_page {
        __le16  log_page_version;                        /* 2 bytes      - 0x1EE - 0x1EF */
        __u8    log_page_guid[0x10];                     /* 16 bytes     - 0x1F0 - 0x1FF */
 };
+
+#define C4_GUID_LENGTH                         16
+
+/**
+ * struct ocp_device_capabilities_log_page -   Device Capability Log page
+ * @pcie_exp_port:                                             PCI Express Ports
+ * @oob_management_support:                            OOB Management Support
+ * @wz_cmd_support:                                            Write Zeroes Command Support
+ * @sanitize_cmd_support:                              Sanitize Command Support
+ * @dsm_cmd_support:                                   Dataset Management Command Support
+ * @wu_cmd_support:                                            Write Uncorrectable Command Support
+ * @fused_operation_support:                   Fused Operation Support
+ * @min_valid_dssd_pwr_state:                  Minimum Valid DSSD Power State
+ * @dssd_pwr_state_desc:                               DSSD Power State Descriptors
+ * @vendor_specific_command_timeout:   Vendor Specific Command Timeout
+ * @reserved:                                                  Reserved
+ * @log_page_version:                                  Log Page Version
+ * @log_page_guid:                                             Log Page GUID
+ */
+struct __packed ocp_device_capabilities_log_page {
+       __le16  pcie_exp_port;
+       __le16  oob_management_support;
+       __le16  wz_cmd_support;
+       __le16  sanitize_cmd_support;
+       __le16  dsm_cmd_support;
+       __le16  wu_cmd_support;
+       __le16  fused_operation_support;
+       __le16  min_valid_dssd_pwr_state;
+       __u8    dssd_pwr_state_desc[128];
+       __u8    reserved[3934];
+       __le16  log_page_version;
+       __u8    log_page_guid[16];
+};
 #endif /* OCP_NVME_H */
index 2dd1cbfb5dae2d4a08a5cc091a24b3ca0839367f..3c24abb6309d1422d6820246c78935a2c53ae1e6 100644 (file)
@@ -22,10 +22,16 @@ static void binary_c1_log(struct ocp_error_recovery_log_page *log_data)
        d_raw((unsigned char *)log_data, sizeof(*log_data));
 }
 
+static void binary_c4_log(struct ocp_device_capabilities_log_page *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,
        .c1_log = binary_c1_log,
+       .c4_log = binary_c4_log,
 };
 
 struct ocp_print_ops *ocp_get_binary_print_ops(nvme_print_flags_t flags)
index 019e098717ff3b0bd3bd3de535f9d5285f4b6f4e..89f309e2a3b00e27d250b9c2366ef9f42d9c94f0 100644 (file)
@@ -482,6 +482,44 @@ static void json_c1_log(struct ocp_error_recovery_log_page *log_data)
        json_free_object(root);
 }
 
+static void json_c4_log(struct ocp_device_capabilities_log_page *log_data)
+{
+       struct json_object *root = json_create_object();
+       char guid[64];
+       int i;
+
+       json_object_add_value_int(root, "PCI Express Ports", le16_to_cpu(log_data->pcie_exp_port));
+       json_object_add_value_int(root, "OOB Management Support",
+                                 le16_to_cpu(log_data->oob_management_support));
+       json_object_add_value_int(root, "Write Zeroes Command Support",
+                                 le16_to_cpu(log_data->wz_cmd_support));
+       json_object_add_value_int(root, "Sanitize Command Support",
+                                 le16_to_cpu(log_data->sanitize_cmd_support));
+       json_object_add_value_int(root, "Dataset Management Command Support",
+                                 le16_to_cpu(log_data->dsm_cmd_support));
+       json_object_add_value_int(root, "Write Uncorrectable Command Support",
+                                 le16_to_cpu(log_data->wu_cmd_support));
+       json_object_add_value_int(root, "Fused Operation Support",
+                                 le16_to_cpu(log_data->fused_operation_support));
+       json_object_add_value_int(root, "Minimum Valid DSSD Power State",
+                                 le16_to_cpu(log_data->min_valid_dssd_pwr_state));
+       for (i = 0; i <= 127; i++)
+               json_object_add_value_int(root, "DSSD Power State Descriptors",
+                                         log_data->dssd_pwr_state_desc[i]);
+       json_object_add_value_int(root, "Log Page Version",
+                                 le16_to_cpu(log_data->log_page_version));
+
+       memset((void *)guid, 0, 64);
+       sprintf((char *)guid, "0x%"PRIx64"%"PRIx64"",
+               (uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[8]),
+               (uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[0]));
+       json_object_add_value_string(root, "Log page GUID", guid);
+
+       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,
@@ -490,6 +528,7 @@ static struct ocp_print_ops json_print_ops = {
        .c3_log = json_c3_log,
        .c5_log = json_c5_log,
        .c1_log = json_c1_log,
+       .c4_log = json_c4_log,
 };
 
 struct ocp_print_ops *ocp_get_json_print_ops(nvme_print_flags_t flags)
index 478dd02e15f92f6a7ef092a7d644314d91752199..a15e7ac13d153f95a73f92b12b6efcbc33873655 100644 (file)
@@ -390,6 +390,39 @@ static void stdout_c1_log(struct ocp_error_recovery_log_page *log_data)
        printf("\n");
 }
 
+static void stdout_c4_log(struct ocp_device_capabilities_log_page *log_data)
+{
+       int i;
+
+       printf("  Device Capability/C4 Log Page Data\n");
+       printf("  PCI Express Ports                                             : 0x%x\n",
+              le16_to_cpu(log_data->pcie_exp_port));
+       printf("  OOB Management Support                                : 0x%x\n",
+              le16_to_cpu(log_data->oob_management_support));
+       printf("  Write Zeroes Command Support                  : 0x%x\n",
+              le16_to_cpu(log_data->wz_cmd_support));
+       printf("  Sanitize Command Support                              : 0x%x\n",
+              le16_to_cpu(log_data->sanitize_cmd_support));
+       printf("  Dataset Management Command Support    : 0x%x\n",
+              le16_to_cpu(log_data->dsm_cmd_support));
+       printf("  Write Uncorrectable Command Support   : 0x%x\n",
+              le16_to_cpu(log_data->wu_cmd_support));
+       printf("  Fused Operation Support                               : 0x%x\n",
+              le16_to_cpu(log_data->fused_operation_support));
+       printf("  Minimum Valid DSSD Power State                : 0x%x\n",
+              le16_to_cpu(log_data->min_valid_dssd_pwr_state));
+       printf("  DSSD Power State Descriptors                                  : 0x");
+       for (i = 0; i <= 127; i++)
+               printf("%x", log_data->dssd_pwr_state_desc[i]);
+       printf("\n");
+       printf("  Log Page Version                                              : 0x%x\n",
+              le16_to_cpu(log_data->log_page_version));
+       printf("  Log page GUID                                                 : 0x");
+       for (i = C4_GUID_LENGTH - 1; i >= 0; i--)
+               printf("%02x", log_data->log_page_guid[i]);
+       printf("\n");
+}
+
 static struct ocp_print_ops stdout_print_ops = {
        .hwcomp_log = stdout_hwcomp_log,
        .fw_act_history = stdout_fw_activation_history,
@@ -398,6 +431,7 @@ static struct ocp_print_ops stdout_print_ops = {
        .c3_log = (void *)stdout_c3_log,
        .c5_log = (void *)stdout_c5_log,
        .c1_log = stdout_c1_log,
+       .c4_log = stdout_c4_log,
 };
 
 struct ocp_print_ops *ocp_get_stdout_print_ops(nvme_print_flags_t flags)
index e9b57f8af9d5927d32f38f2c957bbe31c1a053e4..575eed36e91401f619a65b759ee6a22ec42acc81 100644 (file)
@@ -62,3 +62,8 @@ void ocp_c1_log(struct ocp_error_recovery_log_page *log_data, nvme_print_flags_t
 {
        ocp_print(c1_log, flags, log_data);
 }
+
+void ocp_c4_log(struct ocp_device_capabilities_log_page *log_data, nvme_print_flags_t flags)
+{
+       ocp_print(c4_log, flags, log_data);
+}
index d80c417ba409be331f0e73e1df5e91a5edee6d53..ead02acbcbb325a16d5bc31c1c39ee980fd40e14 100644 (file)
@@ -15,6 +15,7 @@ struct ocp_print_ops {
        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);
        void (*c1_log)(struct ocp_error_recovery_log_page *log_data);
+       void (*c4_log)(struct ocp_device_capabilities_log_page *log_data);
        nvme_print_flags_t flags;
 };
 
@@ -39,4 +40,5 @@ void ocp_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *log_data,
 void ocp_c5_log(struct nvme_dev *dev, struct unsupported_requirement_log *log_data,
                nvme_print_flags_t flags);
 void ocp_c1_log(struct ocp_error_recovery_log_page *log_data, nvme_print_flags_t flags);
+void ocp_c4_log(struct ocp_device_capabilities_log_page *log_data, nvme_print_flags_t flags);
 #endif /* OCP_PRINT_H */