]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
ocp: split TCG configuration log print codes
authorTokunori Ikegami <ikegami.t@gmail.com>
Sun, 6 Oct 2024 12:13:15 +0000 (21:13 +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 f9ddec9c98b3c43ad97676ee609cc177b55b1cd0..fb1207b9301aac9bbd6ce511440348c8c0769f13 100644 (file)
@@ -2532,7 +2532,6 @@ static int ocp_telemetry_str_log_format(int argc, char **argv, struct command *c
 /// TCG Configuration Log Page (LID : C7h)
 
 /* C7 TCG Configuration Log Page */
-#define C7_GUID_LENGTH                     16
 #define C7_TCG_CONFIGURATION_LEN           512
 #define C7_TCG_CONFIGURATION_OPCODE        0xC7
 
@@ -2543,162 +2542,10 @@ static __u8 tcg_configuration_guid[C7_GUID_LENGTH] = {
        0x9D, 0x2A, 0xE0, 0x54
 };
 
-/*
- * struct tcg_configuration_log - TCG Configuration Log Page Structure
- * @state:                            state
- * @rsvd1:                            Reserved1
- * @locking_sp_act_count:             Locking SP Activation Count
- * @type_rev_count:                   Tper Revert Count
- * @locking_sp_rev_count:             Locking SP Revert Count.
- * @no_of_locking_obj:                Number of Locking Objects
- * @no_of_single_um_locking_obj:      Number of Single User Mode Locking Objects
- * @no_of_range_prov_locking_obj:     Number of Range Provisioned Locking Objects
- * @no_of_ns_prov_locking_obj:        Number of Namespace Provisioned Locking Objects
- * @no_of_read_lock_locking_obj:      Number of Read Locked Locking Objects
- * @no_of_write_lock_locking_obj:     Number of Write Locked Locking Objects
- * @no_of_read_unlock_locking_obj:    Number of Read Unlocked Locking Objects
- * @no_of_read_unlock_locking_obj:    Number of Write Unlocked Locking Objects
- * @rsvd2:                            Reserved2
- * @sid_auth_try_count:               SID Authentication Try Count
- * @sid_auth_try_limit:               SID Authentication Try Limit
- * @pro_tcg_rc:                       Programmatic TCG Reset Count
- * @pro_rlc:                          Programmatic Reset Lock Count
- * @tcg_ec:                           TCG Error Count
- * @rsvd3:                            Reserved3
- * @log_page_version:                 Log Page Version
- */
-struct __packed tcg_configuration_log {
-       __u8    state;
-       __u8    rsvd1[3];
-       __u8    locking_sp_act_count;
-       __u8    type_rev_count;
-       __u8    locking_sp_rev_count;
-       __u8    no_of_locking_obj;
-       __u8    no_of_single_um_locking_obj;
-       __u8    no_of_range_prov_locking_obj;
-       __u8    no_of_ns_prov_locking_obj;
-       __u8    no_of_read_lock_locking_obj;
-       __u8    no_of_write_lock_locking_obj;
-       __u8    no_of_read_unlock_locking_obj;
-       __u8    no_of_write_unlock_locking_obj;
-       __u8    rsvd2;
-       __u32   sid_auth_try_count;
-       __u32   sid_auth_try_limit;
-       __u32   pro_tcg_rc;
-       __u32   pro_rlc;
-       __u32   tcg_ec;
-       __u8    rsvd3[458];
-       __le16  log_page_version;
-       __u8    log_page_guid[C7_GUID_LENGTH];
-
-};
-
 /* Function declaration for TCG Configuration log page (LID:C7h) */
 static int ocp_tcg_configuration_log(int argc, char **argv, struct command *cmd,
                                            struct plugin *plugin);
 
-static int ocp_print_C7_log_normal(struct nvme_dev *dev,
-                                  struct tcg_configuration_log *log_data)
-{
-       int j;
-
-       printf("TCG Configuration C7 Log Page Data-\n");
-
-       printf("  State                                                  : 0x%x\n", log_data->state);
-       printf("  Reserved1                                              : 0x");
-       for (j = 0; j < 3; j++)
-               printf("%d", log_data->rsvd1[j]);
-       printf("\n");
-       printf("  Locking SP Activation Count                            : 0x%x\n", log_data->locking_sp_act_count);
-       printf("  Tper Revert Count                                      : 0x%x\n", log_data->type_rev_count);
-       printf("  Locking SP Revert Count                                : 0x%x\n", log_data->locking_sp_rev_count);
-       printf("  Number of Locking Objects                              : 0x%x\n", log_data->no_of_locking_obj);
-       printf("  Number of Single User Mode Locking Objects             : 0x%x\n", log_data->no_of_single_um_locking_obj);
-       printf("  Number of Range Provisioned Locking Objects            : 0x%x\n", log_data->no_of_range_prov_locking_obj);
-       printf("  Number of Namespace Provisioned Locking Objects        : 0x%x\n", log_data->no_of_ns_prov_locking_obj);
-       printf("  Number of Read Locked Locking Objects                  : 0x%x\n", log_data->no_of_read_lock_locking_obj);
-       printf("  Number of Write Locked Locking Objects                 : 0x%x\n", log_data->no_of_write_lock_locking_obj);
-       printf("  Number of Read Unlocked Locking Objects                : 0x%x\n", log_data->no_of_read_unlock_locking_obj);
-       printf("  Number of Write Unlocked Locking Objects               : 0x%x\n", log_data->no_of_write_unlock_locking_obj);
-       printf("  Reserved2                                              : 0x%x\n", log_data->rsvd2);
-
-       printf("  SID Authentication Try Count                           : 0x%x\n", le32_to_cpu(log_data->sid_auth_try_count));
-       printf("  SID Authentication Try Limit                           : 0x%x\n", le32_to_cpu(log_data->sid_auth_try_limit));
-       printf("  Programmatic TCG Reset Count                           : 0x%x\n", le32_to_cpu(log_data->pro_tcg_rc));
-       printf("  Programmatic Reset Lock Count                          : 0x%x\n", le32_to_cpu(log_data->pro_rlc));
-       printf("  TCG Error Count                                        : 0x%x\n", le32_to_cpu(log_data->tcg_ec));
-
-       printf("  Reserved3                                              : 0x");
-       for (j = 0; j < 458; j++)
-               printf("%d", log_data->rsvd3[j]);
-       printf("\n");
-
-       printf("  Log Page Version                                       : 0x%x\n", le16_to_cpu(log_data->log_page_version));
-       printf("  Log page GUID                                          : 0x");
-       for (j = C7_GUID_LENGTH - 1; j >= 0; j--)
-               printf("%02x", log_data->log_page_guid[j]);
-       printf("\n");
-
-       return 0;
-}
-
-static void ocp_print_C7_log_json(struct tcg_configuration_log *log_data)
-{
-       int j;
-       struct json_object *root;
-       char guid_buf[C7_GUID_LENGTH];
-       char *guid = guid_buf;
-       char res_arr[458];
-       char *res = res_arr;
-
-       root = json_create_object();
-
-       json_object_add_value_int(root, "State", le16_to_cpu(log_data->state));
-       memset((__u8 *)res, 0, 3);
-       for (j = 0; j < 3; j++)
-               res += sprintf(res, "%d", log_data->rsvd1[j]);
-       json_object_add_value_string(root, "Reserved1", res_arr);
-       json_object_add_value_int(root, "Locking SP Activation Count", le16_to_cpu(log_data->locking_sp_act_count));
-       json_object_add_value_int(root, "Tper Revert Count", le16_to_cpu(log_data->locking_sp_rev_count));
-       json_object_add_value_int(root, "Number of Locking Objects", le16_to_cpu(log_data->no_of_locking_obj));
-       json_object_add_value_int(root, "Number of Single User Mode Locking Objects", le16_to_cpu(log_data->no_of_single_um_locking_obj));
-       json_object_add_value_int(root, "Number of Range Provisioned Locking Objects", le16_to_cpu(log_data->no_of_range_prov_locking_obj));
-       json_object_add_value_int(root, "Number of Namespace Provisioned Locking Objects", le16_to_cpu(log_data->no_of_ns_prov_locking_obj));
-       json_object_add_value_int(root, "Number of Read Locked Locking Objects", le16_to_cpu(log_data->no_of_read_lock_locking_obj));
-       json_object_add_value_int(root, "Number of Write Locked Locking Objects", le16_to_cpu(log_data->no_of_write_lock_locking_obj));
-       json_object_add_value_int(root, "Number of Read Unlocked Locking Objects", le16_to_cpu(log_data->no_of_read_unlock_locking_obj));
-       json_object_add_value_int(root, "Number of Write Unlocked Locking Objects", le16_to_cpu(log_data->no_of_write_unlock_locking_obj));
-       json_object_add_value_int(root, "Reserved2", le16_to_cpu(log_data->rsvd2));
-
-       json_object_add_value_int(root, "SID Authentication Try Count", le16_to_cpu(log_data->sid_auth_try_count));
-       json_object_add_value_int(root, "SID Authentication Try Limit", le16_to_cpu(log_data->sid_auth_try_limit));
-       json_object_add_value_int(root, "Programmatic TCG Reset Count", le16_to_cpu(log_data->pro_tcg_rc));
-       json_object_add_value_int(root, "Programmatic Reset Lock Count", le16_to_cpu(log_data->pro_rlc));
-       json_object_add_value_int(root, "TCG Error Count", le16_to_cpu(log_data->tcg_ec));
-
-       memset((__u8 *)res, 0, 458);
-       for (j = 0; j < 458; j++)
-               res += sprintf(res, "%d", log_data->rsvd3[j]);
-       json_object_add_value_string(root, "Reserved3", res_arr);
-
-       json_object_add_value_int(root, "Log Page Version", le16_to_cpu(log_data->log_page_version));
-
-       memset((void *)guid, 0, C7_GUID_LENGTH);
-       for (j = C7_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_c7_log_binary(struct tcg_configuration_log *log_data)
-{
-       return d_raw((unsigned char *)log_data, sizeof(*log_data));
-}
-
 static int get_c7_log_page(struct nvme_dev *dev, char *format)
 {
        nvme_print_flags_t fmt;
@@ -2745,20 +2592,7 @@ static int get_c7_log_page(struct nvme_dev *dev, char *format)
                                goto out;
                        }
                }
-
-               switch (fmt) {
-               case NORMAL:
-                       ocp_print_C7_log_normal(dev, log_data);
-                       break;
-               case JSON:
-                       ocp_print_C7_log_json(log_data);
-                       break;
-               case BINARY:
-                       ocp_print_c7_log_binary(log_data);
-                       break;
-               default:
-                       break;
-               }
+               ocp_c7_log(dev, log_data, fmt);
        } else {
                fprintf(stderr, "ERROR : OCP : Unable to read C7 data from buffer\n");
        }
index 081171e868f1ca93eacd73a0f4033905c12abd4f..de8ee382c996da3ddbf9e6906feaf203794c6143 100644 (file)
@@ -195,4 +195,56 @@ struct __packed ocp_device_capabilities_log_page {
        __le16  log_page_version;
        __u8    log_page_guid[16];
 };
+
+#define C7_GUID_LENGTH                     16
+
+/*
+ * struct tcg_configuration_log - TCG Configuration Log Page Structure
+ * @state:                            state
+ * @rsvd1:                            Reserved1
+ * @locking_sp_act_count:             Locking SP Activation Count
+ * @type_rev_count:                   Tper Revert Count
+ * @locking_sp_rev_count:             Locking SP Revert Count.
+ * @no_of_locking_obj:                Number of Locking Objects
+ * @no_of_single_um_locking_obj:      Number of Single User Mode Locking Objects
+ * @no_of_range_prov_locking_obj:     Number of Range Provisioned Locking Objects
+ * @no_of_ns_prov_locking_obj:        Number of Namespace Provisioned Locking Objects
+ * @no_of_read_lock_locking_obj:      Number of Read Locked Locking Objects
+ * @no_of_write_lock_locking_obj:     Number of Write Locked Locking Objects
+ * @no_of_read_unlock_locking_obj:    Number of Read Unlocked Locking Objects
+ * @no_of_read_unlock_locking_obj:    Number of Write Unlocked Locking Objects
+ * @rsvd2:                            Reserved2
+ * @sid_auth_try_count:               SID Authentication Try Count
+ * @sid_auth_try_limit:               SID Authentication Try Limit
+ * @pro_tcg_rc:                       Programmatic TCG Reset Count
+ * @pro_rlc:                          Programmatic Reset Lock Count
+ * @tcg_ec:                           TCG Error Count
+ * @rsvd3:                            Reserved3
+ * @log_page_version:                 Log Page Version
+ */
+struct __packed tcg_configuration_log {
+       __u8    state;
+       __u8    rsvd1[3];
+       __u8    locking_sp_act_count;
+       __u8    type_rev_count;
+       __u8    locking_sp_rev_count;
+       __u8    no_of_locking_obj;
+       __u8    no_of_single_um_locking_obj;
+       __u8    no_of_range_prov_locking_obj;
+       __u8    no_of_ns_prov_locking_obj;
+       __u8    no_of_read_lock_locking_obj;
+       __u8    no_of_write_lock_locking_obj;
+       __u8    no_of_read_unlock_locking_obj;
+       __u8    no_of_write_unlock_locking_obj;
+       __u8    rsvd2;
+       __u32   sid_auth_try_count;
+       __u32   sid_auth_try_limit;
+       __u32   pro_tcg_rc;
+       __u32   pro_rlc;
+       __u32   tcg_ec;
+       __u8    rsvd3[458];
+       __le16  log_page_version;
+       __u8    log_page_guid[C7_GUID_LENGTH];
+
+};
 #endif /* OCP_NVME_H */
index 809788876e450e7b94667c9dd4798deeaf50da21..64e1246bc2ddd411e584f037983bd89bf7b79b05 100644 (file)
@@ -33,12 +33,18 @@ static void binary_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_d
        d_raw((unsigned char *)log_data_buf, total_log_page_size);
 }
 
+static void binary_c7_log(struct nvme_dev *dev, struct tcg_configuration_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,
        .c1_log = binary_c1_log,
        .c4_log = binary_c4_log,
        .c9_log = binary_c9_log,
+       .c7_log = binary_c7_log,
 };
 
 struct ocp_print_ops *ocp_get_binary_print_ops(nvme_print_flags_t flags)
index 36e298f504f00ee500c6f8a2c223e7555794dfc8..9442498a79f089fa410948711c290c7b6abaaaa0 100644 (file)
@@ -766,6 +766,73 @@ static int json_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_data
        return 0;
 }
 
+static void json_c7_log(struct nvme_dev *dev, struct tcg_configuration_log *log_data)
+{
+       int j;
+       struct json_object *root;
+       char guid_buf[C7_GUID_LENGTH];
+       char *guid = guid_buf;
+       char res_arr[458];
+       char *res = res_arr;
+
+       root = json_create_object();
+
+       json_object_add_value_int(root, "State", le16_to_cpu(log_data->state));
+       memset((__u8 *)res, 0, 3);
+       for (j = 0; j < 3; j++)
+               res += sprintf(res, "%d", log_data->rsvd1[j]);
+       json_object_add_value_string(root, "Reserved1", res_arr);
+       json_object_add_value_int(root, "Locking SP Activation Count",
+                                 le16_to_cpu(log_data->locking_sp_act_count));
+       json_object_add_value_int(root, "Tper Revert Count",
+                                 le16_to_cpu(log_data->locking_sp_rev_count));
+       json_object_add_value_int(root, "Number of Locking Objects",
+                                 le16_to_cpu(log_data->no_of_locking_obj));
+       json_object_add_value_int(root, "Number of Single User Mode Locking Objects",
+                                 le16_to_cpu(log_data->no_of_single_um_locking_obj));
+       json_object_add_value_int(root, "Number of Range Provisioned Locking Objects",
+                                 le16_to_cpu(log_data->no_of_range_prov_locking_obj));
+       json_object_add_value_int(root, "Number of Namespace Provisioned Locking Objects",
+                                 le16_to_cpu(log_data->no_of_ns_prov_locking_obj));
+       json_object_add_value_int(root, "Number of Read Locked Locking Objects",
+                                 le16_to_cpu(log_data->no_of_read_lock_locking_obj));
+       json_object_add_value_int(root, "Number of Write Locked Locking Objects",
+                                 le16_to_cpu(log_data->no_of_write_lock_locking_obj));
+       json_object_add_value_int(root, "Number of Read Unlocked Locking Objects",
+                                 le16_to_cpu(log_data->no_of_read_unlock_locking_obj));
+       json_object_add_value_int(root, "Number of Write Unlocked Locking Objects",
+                                 le16_to_cpu(log_data->no_of_write_unlock_locking_obj));
+       json_object_add_value_int(root, "Reserved2", le16_to_cpu(log_data->rsvd2));
+
+       json_object_add_value_int(root, "SID Authentication Try Count",
+                                 le16_to_cpu(log_data->sid_auth_try_count));
+       json_object_add_value_int(root, "SID Authentication Try Limit",
+                                 le16_to_cpu(log_data->sid_auth_try_limit));
+       json_object_add_value_int(root, "Programmatic TCG Reset Count",
+                                 le16_to_cpu(log_data->pro_tcg_rc));
+       json_object_add_value_int(root, "Programmatic Reset Lock Count",
+                                 le16_to_cpu(log_data->pro_rlc));
+       json_object_add_value_int(root, "TCG Error Count", le16_to_cpu(log_data->tcg_ec));
+
+       memset((__u8 *)res, 0, 458);
+       for (j = 0; j < 458; j++)
+               res += sprintf(res, "%d", log_data->rsvd3[j]);
+       json_object_add_value_string(root, "Reserved3", res_arr);
+
+       json_object_add_value_int(root, "Log Page Version",
+                                 le16_to_cpu(log_data->log_page_version));
+
+       memset((void *)guid, 0, C7_GUID_LENGTH);
+       for (j = C7_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,
@@ -776,6 +843,7 @@ static struct ocp_print_ops json_print_ops = {
        .c1_log = json_c1_log,
        .c4_log = json_c4_log,
        .c9_log = (void *)json_c9_log,
+       .c7_log = json_c7_log,
 };
 
 struct ocp_print_ops *ocp_get_json_print_ops(nvme_print_flags_t flags)
index b1f6e8cc2e18c6e598dd2f9fd7eaa0c6a986c1fc..f72969b7bc84570ce3588154e7b8dd06dc0f9289 100644 (file)
@@ -650,6 +650,69 @@ static int stdout_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_da
        return 0;
 }
 
+static int stdout_c7_log(struct nvme_dev *dev, struct tcg_configuration_log *log_data)
+{
+       int j;
+
+       printf("TCG Configuration C7 Log Page Data-\n");
+
+       printf("  State                                                  : 0x%x\n",
+              log_data->state);
+       printf("  Reserved1                                              : 0x");
+       for (j = 0; j < 3; j++)
+               printf("%d", log_data->rsvd1[j]);
+       printf("\n");
+       printf("  Locking SP Activation Count                            : 0x%x\n",
+              log_data->locking_sp_act_count);
+       printf("  Tper Revert Count                                      : 0x%x\n",
+              log_data->type_rev_count);
+       printf("  Locking SP Revert Count                                : 0x%x\n",
+              log_data->locking_sp_rev_count);
+       printf("  Number of Locking Objects                              : 0x%x\n",
+              log_data->no_of_locking_obj);
+       printf("  Number of Single User Mode Locking Objects             : 0x%x\n",
+              log_data->no_of_single_um_locking_obj);
+       printf("  Number of Range Provisioned Locking Objects            : 0x%x\n",
+              log_data->no_of_range_prov_locking_obj);
+       printf("  Number of Namespace Provisioned Locking Objects        : 0x%x\n",
+              log_data->no_of_ns_prov_locking_obj);
+       printf("  Number of Read Locked Locking Objects                  : 0x%x\n",
+              log_data->no_of_read_lock_locking_obj);
+       printf("  Number of Write Locked Locking Objects                 : 0x%x\n",
+              log_data->no_of_write_lock_locking_obj);
+       printf("  Number of Read Unlocked Locking Objects                : 0x%x\n",
+              log_data->no_of_read_unlock_locking_obj);
+       printf("  Number of Write Unlocked Locking Objects               : 0x%x\n",
+              log_data->no_of_write_unlock_locking_obj);
+       printf("  Reserved2                                              : 0x%x\n",
+              log_data->rsvd2);
+
+       printf("  SID Authentication Try Count                           : 0x%x\n",
+              le32_to_cpu(log_data->sid_auth_try_count));
+       printf("  SID Authentication Try Limit                           : 0x%x\n",
+              le32_to_cpu(log_data->sid_auth_try_limit));
+       printf("  Programmatic TCG Reset Count                           : 0x%x\n",
+              le32_to_cpu(log_data->pro_tcg_rc));
+       printf("  Programmatic Reset Lock Count                          : 0x%x\n",
+              le32_to_cpu(log_data->pro_rlc));
+       printf("  TCG Error Count                                        : 0x%x\n",
+              le32_to_cpu(log_data->tcg_ec));
+
+       printf("  Reserved3                                              : 0x");
+       for (j = 0; j < 458; j++)
+               printf("%d", log_data->rsvd3[j]);
+       printf("\n");
+
+       printf("  Log Page Version                                       : 0x%x\n",
+              le16_to_cpu(log_data->log_page_version));
+       printf("  Log page GUID                                          : 0x");
+       for (j = C7_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,
@@ -660,6 +723,7 @@ static struct ocp_print_ops stdout_print_ops = {
        .c1_log = stdout_c1_log,
        .c4_log = stdout_c4_log,
        .c9_log = (void *)stdout_c9_log,
+       .c7_log = (void *)stdout_c7_log,
 };
 
 struct ocp_print_ops *ocp_get_stdout_print_ops(nvme_print_flags_t flags)
index 502fa864735c7ea66c80b5272c67b819794ae397..916c653d4aaf3aec0a73f42c09e51dd20c1a0ded 100644 (file)
@@ -73,3 +73,9 @@ void ocp_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_data_buf,
 {
        ocp_print(c9_log, flags, log_data, log_data_buf, total_log_page_size);
 }
+
+void ocp_c7_log(struct nvme_dev *dev, struct tcg_configuration_log *log_data,
+               nvme_print_flags_t flags)
+{
+       ocp_print(c7_log, flags, dev, log_data);
+}
index 6df98b63520965d0bee32a27076fa561c5d25d9b..85655b934092c6fbbe612893a007c2bccbcb892f 100644 (file)
@@ -18,6 +18,7 @@ struct ocp_print_ops {
        void (*c4_log)(struct ocp_device_capabilities_log_page *log_data);
        void (*c9_log)(struct telemetry_str_log_format *log_data, __u8 *log_data_buf,
                       int total_log_page_size);
+       void (*c7_log)(struct nvme_dev *dev, struct tcg_configuration_log *log_data);
        nvme_print_flags_t flags;
 };
 
@@ -45,4 +46,6 @@ void ocp_c1_log(struct ocp_error_recovery_log_page *log_data, nvme_print_flags_t
 void ocp_c4_log(struct ocp_device_capabilities_log_page *log_data, nvme_print_flags_t flags);
 void ocp_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_data_buf,
                int total_log_page_size, nvme_print_flags_t flags);
+void ocp_c7_log(struct nvme_dev *dev, struct tcg_configuration_log *log_data,
+               nvme_print_flags_t flags);
 #endif /* OCP_PRINT_H */