struct json_object *pmuw;
struct json_object *pmur;
uint16_t smart_log_ver = 0;
+ uint16_t dssd_version = 0;
char guid[40];
root = json_create_object();
case 2 ... 3:
json_object_add_value_uint(root, "Errata Version Field",
log->dssd_errata_version);
+ memcpy(&dssd_version, log->dssd_point_version, sizeof(dssd_version));
json_object_add_value_uint(root, "Point Version Field",
- le16_to_cpu(log->dssd_point_version));
+ le16_to_cpu(dssd_version));
+ memcpy(&dssd_version, log->dssd_minor_version, sizeof(dssd_version));
json_object_add_value_uint(root, "Minor Version Field",
- le16_to_cpu(log->dssd_minor_version));
+ le16_to_cpu(dssd_version));
json_object_add_value_uint(root, "Major Version Field",
log->dssd_major_version);
json_object_add_value_uint(root, "NVMe Base Errata Version",
struct json_object *pmuw;
struct json_object *pmur;
uint16_t smart_log_ver = 0;
+ uint16_t dssd_version = 0;
char guid[40];
root = json_create_object();
case 2 ... 3:
json_object_add_value_uint(root, "errata_version_field",
log->dssd_errata_version);
+ memcpy(&dssd_version, log->dssd_point_version, sizeof(dssd_version));
json_object_add_value_uint(root, "point_version_field",
- le16_to_cpu(log->dssd_point_version));
+ le16_to_cpu(dssd_version));
+ memcpy(&dssd_version, log->dssd_minor_version, sizeof(dssd_version));
json_object_add_value_uint(root, "minor_version_field",
- le16_to_cpu(log->dssd_minor_version));
+ le16_to_cpu(dssd_version));
json_object_add_value_uint(root, "major_version_field",
log->dssd_major_version);
json_object_add_value_uint(root, "nvme_base_errata_version",
static void stdout_smart_extended_log(struct ocp_smart_extended_log *log, unsigned int version)
{
uint16_t smart_log_ver = 0;
+ uint16_t dssd_version = 0;
printf("SMART Cloud Attributes :-\n");
case 2 ... 3:
printf(" Errata Version Field %d\n",
log->dssd_errata_version);
+ memcpy(&dssd_version, log->dssd_point_version, sizeof(dssd_version));
printf(" Point Version Field %"PRIu16"\n",
- le16_to_cpu(log->dssd_point_version));
+ le16_to_cpu(dssd_version));
+ memcpy(&dssd_version, log->dssd_minor_version, sizeof(dssd_version));
printf(" Minor Version Field %"PRIu16"\n",
- le16_to_cpu(log->dssd_minor_version));
+ le16_to_cpu(dssd_version));
printf(" Major Version Field %d\n",
log->dssd_major_version);
printf(" NVMe Base Errata Version %d\n",
ocp_print(fw_act_history, flags, fw_history);
}
-void ocp_smart_extended_log(void *data, unsigned int version, nvme_print_flags_t flags)
+void ocp_smart_extended_log(struct ocp_smart_extended_log *log, unsigned int version,
+ nvme_print_flags_t flags)
{
- ocp_print(smart_extended_log, flags, data, version);
+ ocp_print(smart_extended_log, flags, log, version);
}
void ocp_show_telemetry_log(struct ocp_telemetry_parse_options *options, nvme_print_flags_t flags)
void ocp_show_hwcomp_log(struct hwcomp_log *log, __u32 id, bool list, nvme_print_flags_t flags);
void ocp_fw_act_history(const struct fw_activation_history *fw_history, nvme_print_flags_t flags);
-void ocp_smart_extended_log(void *data, unsigned int version, nvme_print_flags_t flags);
+void ocp_smart_extended_log(struct ocp_smart_extended_log *log, unsigned int version,
+ 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);
* @log_page_version: Log page version
* @log_page_guid: Log page GUID
*/
-struct __packed ocp_smart_extended_log {
+struct ocp_smart_extended_log {
__u8 physical_media_units_written[16]; /* [15:0] */
__u8 physical_media_units_read[16]; /* [31:16] */
__u8 bad_user_nand_blocks_raw[6]; /* [37:32] */
__u8 thermal_throttling_event_count; /* [96] */
__u8 thermal_throttling_current_status; /* [97] */
__u8 dssd_errata_version; /* [98] */
- __le16 dssd_point_version; /* [100:99] */
- __le16 dssd_minor_version; /* [102:101] */
+ __u8 dssd_point_version[2]; /* [100:99] */
+ __u8 dssd_minor_version[2]; /* [102:101] */
__u8 dssd_major_version; /* [103] */
__le64 pcie_correctable_err_count; /* [111:104] */
__le32 incomplete_shoutdowns; /* [115:112] */