]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
ocp: use struct nvme_timestamp type for FAHE-5 timestamp field
authorTokunori Ikegami <ikegami.t@gmail.com>
Fri, 3 Jan 2025 11:07:44 +0000 (20:07 +0900)
committerDaniel Wagner <wagi@monom.org>
Fri, 3 Jan 2025 14:29:22 +0000 (15:29 +0100)
Since the field defined by the NVMe timestamp feature.

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

diff --git a/nvme.h b/nvme.h
index cae43452145e6f673964dc064c1fb719cf5b8d50..363a82d99da0f8e390a66fcb064125d82f681686 100644 (file)
--- a/nvme.h
+++ b/nvme.h
@@ -31,6 +31,7 @@
 #include "util/mem.h"
 #include "util/argconfig.h"
 #include "util/cleanup.h"
+#include "util/types.h"
 
 enum nvme_print_flags {
        NORMAL          = 0,
@@ -147,7 +148,6 @@ const char *nvme_select_to_string(int sel);
 
 void d(unsigned char *buf, int len, int width, int group);
 void d_raw(unsigned char *buf, unsigned len);
-uint64_t int48_to_long(uint8_t *data);
 
 int get_reg_size(int offset);
 bool nvme_is_ctrl_reg(int offset);
index 15733a3fd5d471c03d0db24c8b3a3a23bbee61a9..fa37e4bd60f0ba2159e9a688f05869ab19868eb5 100644 (file)
@@ -4,6 +4,7 @@
  *
  * Authors: karl.dedow@solidigm.com
  */
+#include <libnvme.h>
 #include "common.h"
 #include "linux/types.h"
 
@@ -18,7 +19,7 @@ struct __packed fw_activation_history_entry {
        __u8 entry_length;
        __le16 reserved1;
        __le16 activation_count;
-       __le64 timestamp;
+       struct nvme_timestamp ts;
        __le64 reserved2;
        __le64 power_cycle_count;
        char previous_fw[8];
index 3ed74ffeca0288bcbcc88a94a039af42a19e8adc..b193fc78bec057ce2e4f66a0ed9c6a1a9083e079 100644 (file)
@@ -101,7 +101,7 @@ static void json_fw_activation_history(const struct fw_activation_history *fw_hi
                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)));
+                                            int48_to_long(entry->ts.timestamp));
                json_object_add_value_uint(entry_obj, "power cycle count",
                                           le64_to_cpu(entry->power_cycle_count));
 
index f86c1b8428573a40faa0eb5d3f7eab521f5ab3b4..61309a937ea0d41df2f7af5c9f918d14055c3611 100644 (file)
@@ -75,8 +75,7 @@ static void stdout_fw_activation_history(const struct fw_activation_history *fw_
                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", "timestamp:", int48_to_long(entry->ts.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),
index 20c121b1a64908acc54dcc9e389f5877366ae80b..cc2e7550b180ddf82f782f2a4691823194017362 100644 (file)
@@ -36,7 +36,7 @@ long double int128_to_double(__u8 *data)
        return result;
 }
 
-uint64_t int48_to_long(__u8 *data)
+uint64_t int48_to_long(const __u8 *data)
 {
        int i;
        uint64_t result = 0;
index b2e8fc8df558d38592c85222792c7f504e4b8e93..bb4125f2a144db6598905bb33721b62edda99142 100644 (file)
@@ -36,7 +36,7 @@ typedef union nvme_uint128 nvme_uint128_t;
 
 nvme_uint128_t le128_to_cpu(__u8 *data);
 long double int128_to_double(__u8 *data);
-uint64_t int48_to_long(__u8 *data);
+uint64_t int48_to_long(const __u8 *data);
 
 char *uint128_t_to_string(nvme_uint128_t val);
 char *uint128_t_to_l10n_string(nvme_uint128_t val);