summaryrefslogtreecommitdiffstats
path: root/plugins/ocp/ocp-fw-activation-history.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ocp/ocp-fw-activation-history.c')
-rw-r--r--plugins/ocp/ocp-fw-activation-history.c129
1 files changed, 3 insertions, 126 deletions
diff --git a/plugins/ocp/ocp-fw-activation-history.c b/plugins/ocp/ocp-fw-activation-history.c
index 543042f..79c03b2 100644
--- a/plugins/ocp/ocp-fw-activation-history.c
+++ b/plugins/ocp/ocp-fw-activation-history.c
@@ -14,135 +14,15 @@
#include "nvme-print.h"
#include "ocp-utils.h"
+#include "ocp-print.h"
-static const unsigned char ocp_fw_activation_history_guid[16] = {
+static const unsigned char ocp_fw_activation_history_guid[GUID_LEN] = {
0x6D, 0x79, 0x9a, 0x76,
0xb4, 0xda, 0xf6, 0xa3,
0xe2, 0x4d, 0xb2, 0x8a,
0xac, 0xf3, 0x1c, 0xd1
};
-struct __packed fw_activation_history_entry {
- __u8 ver_num;
- __u8 entry_length;
- __u16 reserved1;
- __u16 activation_count;
- __u64 timestamp;
- __u64 reserved2;
- __u64 power_cycle_count;
- char previous_fw[8];
- char new_fw[8];
- __u8 slot_number;
- __u8 commit_action;
- __u16 result;
- __u8 reserved3[14];
-};
-
-struct __packed fw_activation_history {
- __u8 log_id;
- __u8 reserved1[3];
- __u32 valid_entries;
- struct fw_activation_history_entry entries[20];
- __u8 reserved2[2790];
- __u16 log_page_version;
- __u64 log_page_guid[2];
-};
-
-static void ocp_fw_activation_history_normal(const struct fw_activation_history *fw_history)
-{
- printf("Firmware History Log:\n");
-
- printf(" %-26s%d\n", "log identifier:", fw_history->log_id);
- printf(" %-26s%d\n", "valid entries:", le32_to_cpu(fw_history->valid_entries));
-
- printf(" entries:\n");
-
- for (int index = 0; index < fw_history->valid_entries; index++) {
- const struct fw_activation_history_entry *entry = &fw_history->entries[index];
-
- printf(" entry[%d]:\n", le32_to_cpu(index));
- printf(" %-22s%d\n", "version number:", entry->ver_num);
- printf(" %-22s%d\n", "entry length:", entry->entry_length);
- printf(" %-22s%d\n", "activation count:",
- le16_to_cpu(entry->activation_count));
- printf(" %-22s%"PRIu64"\n", "timestamp:",
- (0x0000FFFFFFFFFFFF & le64_to_cpu(entry->timestamp)));
- printf(" %-22s%"PRIu64"\n", "power cycle count:",
- le64_to_cpu(entry->power_cycle_count));
- printf(" %-22s%.*s\n", "previous firmware:", (int)sizeof(entry->previous_fw),
- entry->previous_fw);
- printf(" %-22s%.*s\n", "new firmware:", (int)sizeof(entry->new_fw),
- entry->new_fw);
- printf(" %-22s%d\n", "slot number:", entry->slot_number);
- printf(" %-22s%d\n", "commit action type:", entry->commit_action);
- printf(" %-22s%d\n", "result:", le16_to_cpu(entry->result));
- }
-
- printf(" %-26s%d\n", "log page version:",
- le16_to_cpu(fw_history->log_page_version));
-
- printf(" %-26s0x%"PRIx64"%"PRIx64"\n", "log page guid:",
- le64_to_cpu(fw_history->log_page_guid[1]),
- le64_to_cpu(fw_history->log_page_guid[0]));
-
- printf("\n");
-}
-
-static void ocp_fw_activation_history_json(const struct fw_activation_history *fw_history)
-{
- struct json_object *root = json_create_object();
-
- json_object_add_value_uint(root, "log identifier", fw_history->log_id);
- json_object_add_value_uint(root, "valid entries", le32_to_cpu(fw_history->valid_entries));
-
- struct json_object *entries = json_create_array();
-
- for (int index = 0; index < fw_history->valid_entries; index++) {
- const struct fw_activation_history_entry *entry = &fw_history->entries[index];
- struct json_object *entry_obj = json_create_object();
-
- json_object_add_value_uint(entry_obj, "version number", entry->ver_num);
- json_object_add_value_uint(entry_obj, "entry length", entry->entry_length);
- json_object_add_value_uint(entry_obj, "activation count",
- le16_to_cpu(entry->activation_count));
- json_object_add_value_uint64(entry_obj, "timestamp",
- (0x0000FFFFFFFFFFFF & le64_to_cpu(entry->timestamp)));
- json_object_add_value_uint(entry_obj, "power cycle count",
- le64_to_cpu(entry->power_cycle_count));
-
- struct json_object *fw = json_object_new_string_len(entry->previous_fw,
- sizeof(entry->previous_fw));
-
- json_object_add_value_object(entry_obj, "previous firmware", fw);
-
- fw = json_object_new_string_len(entry->new_fw, sizeof(entry->new_fw));
-
- json_object_add_value_object(entry_obj, "new firmware", fw);
- json_object_add_value_uint(entry_obj, "slot number", entry->slot_number);
- json_object_add_value_uint(entry_obj, "commit action type", entry->commit_action);
- json_object_add_value_uint(entry_obj, "result", le16_to_cpu(entry->result));
-
- json_array_add_value_object(entries, entry_obj);
- }
-
- json_object_add_value_array(root, "entries", entries);
-
- json_object_add_value_uint(root, "log page version",
- le16_to_cpu(fw_history->log_page_version));
-
- char guid[2 * sizeof(fw_history->log_page_guid) + 3] = { 0 };
-
- sprintf(guid, "0x%"PRIx64"%"PRIx64"",
- le64_to_cpu(fw_history->log_page_guid[1]),
- le64_to_cpu(fw_history->log_page_guid[0]));
- json_object_add_value_string(root, "log page guid", guid);
-
- json_print_object(root, NULL);
- json_free_object(root);
-
- printf("\n");
-}
-
int ocp_fw_activation_history_log(int argc, char **argv, struct command *cmd,
struct plugin *plugin)
{
@@ -215,10 +95,7 @@ int ocp_fw_activation_history_log(int argc, char **argv, struct command *cmd,
return err;
}
- if (print_flag == JSON)
- ocp_fw_activation_history_json(&fw_history);
- else if (print_flag == NORMAL)
- ocp_fw_activation_history_normal(&fw_history);
+ ocp_fw_act_history(&fw_history, print_flag);
}
return err;