@@ -138,84 +138,84 @@ static void json_fw_activation_history(const struct fw_activation_history *fw_hi
138138 printf ("\n" );
139139}
140140
141- static void json_smart_extended_log_v1 (void * data )
141+ static void json_smart_extended_log_v1 (struct ocp_smart_extended_log * log )
142142{
143143 struct json_object * root ;
144144 struct json_object * pmuw ;
145145 struct json_object * pmur ;
146146 uint16_t smart_log_ver = 0 ;
147- __u8 * log_data = data ;
148147 char guid [40 ];
149148
150149 root = json_create_object ();
151150 pmuw = json_create_object ();
152151 pmur = json_create_object ();
153152
154153 json_object_add_value_uint64 (pmuw , "hi" ,
155- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_PMUW + 8 ]));
154+ le64_to_cpu (* (uint64_t * )& log -> physical_media_units_written [ 8 ]));
156155 json_object_add_value_uint64 (pmuw , "lo" ,
157- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_PMUW ] ));
156+ le64_to_cpu (* (uint64_t * )& log -> physical_media_units_written ));
158157 json_object_add_value_object (root , "Physical media units written" , pmuw );
159158 json_object_add_value_uint64 (pmur , "hi" ,
160- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_PMUR + 8 ]));
159+ le64_to_cpu (* (uint64_t * )& log -> physical_media_units_read [ 8 ]));
161160 json_object_add_value_uint64 (pmur , "lo" ,
162- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_PMUR ] ));
161+ le64_to_cpu (* (uint64_t * )& log -> physical_media_units_read ));
163162 json_object_add_value_object (root , "Physical media units read" , pmur );
164163 json_object_add_value_uint64 (root , "Bad user nand blocks - Raw" ,
165- int48_to_long (& log_data [ SCAO_BUNBR ] ));
164+ int48_to_long (log -> bad_user_nand_blocks_raw ));
166165 json_object_add_value_uint (root , "Bad user nand blocks - Normalized" ,
167- ( uint16_t ) le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_BUNBN ] ));
166+ le16_to_cpu (log -> bad_user_nand_blocks_normalized ));
168167 json_object_add_value_uint64 (root , "Bad system nand blocks - Raw" ,
169- int48_to_long (& log_data [ SCAO_BSNBR ] ));
168+ int48_to_long (log -> bad_system_nand_blocks_raw ));
170169 json_object_add_value_uint (root , "Bad system nand blocks - Normalized" ,
171- ( uint16_t ) le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_BSNBN ] ));
170+ le16_to_cpu (log -> bad_system_nand_blocks_normalized ));
172171 json_object_add_value_uint64 (root , "XOR recovery count" ,
173- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_XRC ] ));
172+ le64_to_cpu (log -> xor_recovery_count ));
174173 json_object_add_value_uint64 (root , "Uncorrectable read error count" ,
175- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_UREC ] ));
174+ le64_to_cpu (log -> uncorrectable_read_err_count ));
176175 json_object_add_value_uint64 (root , "Soft ecc error count" ,
177- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_SEEC ] ));
176+ le64_to_cpu (log -> soft_ecc_err_count ));
178177 json_object_add_value_uint (root , "End to end detected errors" ,
179- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_EEDC ] ));
178+ le32_to_cpu (log -> end_to_end_detected_err ));
180179 json_object_add_value_uint (root , "End to end corrected errors" ,
181- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_EECE ] ));
180+ le32_to_cpu (log -> end_to_end_corrected_err ));
182181 json_object_add_value_uint (root , "System data percent used" ,
183- (__u8 )log_data [SCAO_SDPU ]);
184- json_object_add_value_uint64 (root , "Refresh counts" , int56_to_long (& log_data [SCAO_RFSC ]));
182+ log -> system_data_used_percent );
183+ json_object_add_value_uint64 (root , "Refresh counts" ,
184+ int56_to_long (log -> refresh_counts ));
185185 json_object_add_value_uint (root , "Max User data erase counts" ,
186- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_MXUDEC ] ));
186+ le32_to_cpu (log -> user_data_erase_count_max ));
187187 json_object_add_value_uint (root , "Min User data erase counts" ,
188- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_MNUDEC ] ));
188+ le32_to_cpu (log -> user_data_erase_count_min ));
189189 json_object_add_value_uint (root , "Number of Thermal throttling events" ,
190- ( __u8 ) log_data [ SCAO_NTTE ] );
190+ log -> thermal_throttling_event_count );
191191 json_object_add_value_uint (root , "Current throttling status" ,
192- ( __u8 ) log_data [ SCAO_CTS ] );
192+ log -> thermal_throttling_current_status );
193193 json_object_add_value_uint64 (root , "PCIe correctable error count" ,
194- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_PCEC ] ));
194+ le64_to_cpu (log -> pcie_correctable_err_count ));
195195 json_object_add_value_uint (root , "Incomplete shutdowns" ,
196- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_ICS ] ));
196+ le32_to_cpu (log -> incomplete_shoutdowns ));
197197 json_object_add_value_uint (root , "Percent free blocks" ,
198- ( __u8 ) log_data [ SCAO_PFB ] );
198+ log -> percent_free_blocks );
199199 json_object_add_value_uint (root , "Capacitor health" ,
200- ( uint16_t ) le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_CPH ] ));
200+ le16_to_cpu (log -> capacitor_health ));
201201 json_object_add_value_uint64 (root , "Unaligned I/O" ,
202- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_UIO ] ));
202+ le64_to_cpu (log -> unaligned_io ));
203203 json_object_add_value_uint64 (root , "Security Version Number" ,
204- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_SVN ] ));
204+ le64_to_cpu (log -> security_version ));
205205 json_object_add_value_uint64 (root , "NUSE - Namespace utilization" ,
206- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_NUSE ] ));
206+ le64_to_cpu (log -> total_nuse ));
207207 json_object_add_value_uint128 (root , "PLP start count" ,
208- le128_to_cpu (& log_data [ SCAO_PSC ] ));
208+ le128_to_cpu (log -> plp_start_count ));
209209 json_object_add_value_uint128 (root , "Endurance estimate" ,
210- le128_to_cpu (& log_data [ SCAO_EEST ] ));
211- smart_log_ver = ( uint16_t ) le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_LPV ] );
210+ le128_to_cpu (log -> endurance_estimate ));
211+ smart_log_ver = le16_to_cpu (log -> log_page_version );
212212
213213 json_object_add_value_uint (root , "Log page version" , smart_log_ver );
214214
215215 memset ((void * )guid , 0 , 40 );
216216 sprintf ((char * )guid , "0x%" PRIx64 "%" PRIx64 "" ,
217- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_LPG + 8 ]),
218- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_LPG ] ));
217+ le64_to_cpu (* (uint64_t * )& log -> log_page_guid [ 8 ]),
218+ le64_to_cpu (* (uint64_t * )& log -> log_page_guid ));
219219 json_object_add_value_string (root , "Log page GUID" , guid );
220220
221221 switch (smart_log_ver ) {
@@ -224,110 +224,109 @@ static void json_smart_extended_log_v1(void *data)
224224 default :
225225 case 4 :
226226 json_object_add_value_uint (root , "NVMe Command Set Errata Version" ,
227- ( __u8 ) log_data [ SCAO_NCSEV ] );
227+ log -> nvme_cmdset_errata_version );
228228 json_object_add_value_uint (root , "Lowest Permitted Firmware Revision" ,
229- le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_PSCC ] ));
229+ le64_to_cpu (log -> lowest_permitted_fw_rev ));
230230 fallthrough ;
231231 case 2 ... 3 :
232232 json_object_add_value_uint (root , "Errata Version Field" ,
233- ( __u8 ) log_data [ SCAO_EVF ] );
233+ log -> dssd_errata_version );
234234 json_object_add_value_uint (root , "Point Version Field" ,
235- le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_PVF ] ));
235+ le16_to_cpu (log -> dssd_point_version ));
236236 json_object_add_value_uint (root , "Minor Version Field" ,
237- le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_MIVF ] ));
237+ le16_to_cpu (log -> dssd_minor_version ));
238238 json_object_add_value_uint (root , "Major Version Field" ,
239- ( __u8 ) log_data [ SCAO_MAVF ] );
239+ log -> dssd_major_version );
240240 json_object_add_value_uint (root , "NVMe Base Errata Version" ,
241- ( __u8 ) log_data [ SCAO_NBEV ] );
241+ log -> nvme_base_errata_version );
242242 json_object_add_value_uint (root , "PCIe Link Retraining Count" ,
243- le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_PLRC ] ));
243+ le64_to_cpu (log -> pcie_link_retaining_count ));
244244 json_object_add_value_uint (root , "Power State Change Count" ,
245- le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_PSCC ] ));
245+ le64_to_cpu (log -> power_state_change_count ));
246246 }
247247 json_print_object (root , NULL );
248248 printf ("\n" );
249249 json_free_object (root );
250250}
251251
252- static void json_smart_extended_log_v2 (void * data )
252+ static void json_smart_extended_log_v2 (struct ocp_smart_extended_log * log )
253253{
254254 struct json_object * root ;
255255 struct json_object * pmuw ;
256256 struct json_object * pmur ;
257257 uint16_t smart_log_ver = 0 ;
258- __u8 * log_data = data ;
259258 char guid [40 ];
260259
261260 root = json_create_object ();
262261 pmuw = json_create_object ();
263262 pmur = json_create_object ();
264263
265264 json_object_add_value_uint64 (pmuw , "hi" ,
266- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_PMUW + 8 ] & 0xFFFFFFFFFFFFFFFF ));
265+ le64_to_cpu (* (uint64_t * )& log -> physical_media_units_written [ 8 ] ));
267266 json_object_add_value_uint64 (pmuw , "lo" ,
268- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_PMUW ] & 0xFFFFFFFFFFFFFFFF ));
267+ le64_to_cpu (* (uint64_t * )& log -> physical_media_units_written ));
269268 json_object_add_value_object (root , "physical_media_units_written" , pmuw );
270269 json_object_add_value_uint64 (pmur , "hi" ,
271- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_PMUR + 8 ] & 0xFFFFFFFFFFFFFFFF ));
270+ le64_to_cpu (* (uint64_t * )& log -> physical_media_units_read [ 8 ] ));
272271 json_object_add_value_uint64 (pmur , "lo" ,
273- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_PMUR ] & 0xFFFFFFFFFFFFFFFF ));
272+ le64_to_cpu (* (uint64_t * )& log -> physical_media_units_read ));
274273 json_object_add_value_object (root , "physical_media_units_read" , pmur );
275274 json_object_add_value_uint64 (root , "bad_user_nand_blocks_raw" ,
276- ( uint64_t ) le64_to_cpu ( * ( uint64_t * ) & log_data [ SCAO_BUNBR ] & 0x0000FFFFFFFFFFFF ));
275+ int48_to_long ( log -> bad_user_nand_blocks_raw ));
277276 json_object_add_value_uint (root , "bad_user_nand_blocks_normalized" ,
278- ( uint16_t ) le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_BUNBN ] ));
277+ le16_to_cpu (log -> bad_user_nand_blocks_normalized ));
279278 json_object_add_value_uint64 (root , "bad_system_nand_blocks_raw" ,
280- ( uint64_t ) le64_to_cpu ( * ( uint64_t * ) & log_data [ SCAO_BSNBR ] & 0x0000FFFFFFFFFFFF ));
279+ int48_to_long ( log -> bad_system_nand_blocks_raw ));
281280 json_object_add_value_uint (root , "bad_system_nand_blocks_normalized" ,
282- ( uint16_t ) le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_BSNBN ] ));
281+ le16_to_cpu (log -> bad_system_nand_blocks_normalized ));
283282 json_object_add_value_uint64 (root , "xor_recovery_count" ,
284- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_XRC ] ));
283+ le64_to_cpu (log -> xor_recovery_count ));
285284 json_object_add_value_uint64 (root , "uncorrectable_read_errors" ,
286- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_UREC ] ));
285+ le64_to_cpu (log -> uncorrectable_read_err_count ));
287286 json_object_add_value_uint64 (root , "soft_ecc_error_count" ,
288- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_SEEC ] ));
287+ le64_to_cpu (log -> soft_ecc_err_count ));
289288 json_object_add_value_uint (root , "end_to_end_detected_errors" ,
290- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_EEDC ] ));
289+ le32_to_cpu (log -> end_to_end_detected_err ));
291290 json_object_add_value_uint (root , "end_to_end_corrected_errors" ,
292- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_EECE ] ));
291+ le32_to_cpu (log -> end_to_end_corrected_err ));
293292 json_object_add_value_uint (root , "system_data_percent_used" ,
294- ( __u8 ) log_data [ SCAO_SDPU ] );
293+ log -> system_data_used_percent );
295294 json_object_add_value_uint64 (root , "refresh_count" ,
296- ( uint64_t )( le64_to_cpu ( * ( uint64_t * ) & log_data [ SCAO_RFSC ]) & 0x00FFFFFFFFFFFFFF ));
295+ int56_to_long ( log -> refresh_counts ));
297296 json_object_add_value_uint (root , "max_user_data_erase_count" ,
298- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_MXUDEC ] ));
297+ le32_to_cpu (log -> user_data_erase_count_max ));
299298 json_object_add_value_uint (root , "min_user_data_erase_count" ,
300- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_MNUDEC ] ));
299+ le32_to_cpu (log -> user_data_erase_count_min ));
301300 json_object_add_value_uint (root , "thermal_throttling_events" ,
302- ( __u8 ) log_data [ SCAO_NTTE ] );
301+ log -> thermal_throttling_event_count );
303302 json_object_add_value_uint (root , "current_throttling_status" ,
304- ( __u8 ) log_data [ SCAO_CTS ] );
303+ log -> thermal_throttling_current_status );
305304 json_object_add_value_uint64 (root , "pcie_correctable_errors" ,
306- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_PCEC ] ));
305+ le64_to_cpu (log -> pcie_correctable_err_count ));
307306 json_object_add_value_uint (root , "incomplete_shutdowns" ,
308- ( uint32_t ) le32_to_cpu (* ( uint32_t * ) & log_data [ SCAO_ICS ] ));
307+ le32_to_cpu (log -> incomplete_shoutdowns ));
309308 json_object_add_value_uint (root , "percent_free_blocks" ,
310- ( __u8 ) log_data [ SCAO_PFB ] );
309+ log -> percent_free_blocks );
311310 json_object_add_value_uint (root , "capacitor_health" ,
312- ( uint16_t ) le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_CPH ] ));
311+ le16_to_cpu (log -> capacitor_health ));
313312 json_object_add_value_uint64 (root , "unaligned_io" ,
314- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_UIO ] ));
313+ le64_to_cpu (log -> unaligned_io ));
315314 json_object_add_value_uint64 (root , "security_version_number" ,
316- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_SVN ] ));
315+ le64_to_cpu (log -> security_version ));
317316 json_object_add_value_uint64 (root , "nuse_namespace_utilization" ,
318- ( uint64_t ) le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_NUSE ] ));
317+ le64_to_cpu (log -> total_nuse ));
319318 json_object_add_value_uint128 (root , "plp_start_count" ,
320- le128_to_cpu (& log_data [ SCAO_PSC ] ));
319+ le128_to_cpu (log -> plp_start_count ));
321320 json_object_add_value_uint128 (root , "endurance_estimate" ,
322- le128_to_cpu (& log_data [ SCAO_EEST ] ));
323- smart_log_ver = ( uint16_t ) le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_LPV ] );
321+ le128_to_cpu (log -> endurance_estimate ));
322+ smart_log_ver = le16_to_cpu (log -> log_page_version );
324323
325324 json_object_add_value_uint (root , "log_page_version" , smart_log_ver );
326325
327326 memset ((void * )guid , 0 , 40 );
328327 sprintf ((char * )guid , "0x%" PRIx64 "%" PRIx64 "" ,
329- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_LPG + 8 ]),
330- ( uint64_t ) le64_to_cpu (* (uint64_t * )& log_data [ SCAO_LPG ] ));
328+ le64_to_cpu (* (uint64_t * )& log -> log_page_guid [ 8 ]),
329+ le64_to_cpu (* (uint64_t * )& log -> log_page_guid ));
331330 json_object_add_value_string (root , "log_page_guid" , guid );
332331
333332 switch (smart_log_ver ) {
@@ -336,40 +335,40 @@ static void json_smart_extended_log_v2(void *data)
336335 default :
337336 case 4 :
338337 json_object_add_value_uint (root , "nvme_command_set_errata_version" ,
339- ( __u8 ) log_data [ SCAO_NCSEV ] );
338+ log -> nvme_cmdset_errata_version );
340339 json_object_add_value_uint (root , "lowest_permitted_firmware_revision" ,
341- le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_PSCC ] ));
340+ le64_to_cpu (log -> lowest_permitted_fw_rev ));
342341 fallthrough ;
343342 case 2 ... 3 :
344343 json_object_add_value_uint (root , "errata_version_field" ,
345- ( __u8 ) log_data [ SCAO_EVF ] );
344+ log -> dssd_errata_version );
346345 json_object_add_value_uint (root , "point_version_field" ,
347- le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_PVF ] ));
346+ le16_to_cpu (log -> dssd_point_version ));
348347 json_object_add_value_uint (root , "minor_version_field" ,
349- le16_to_cpu (* ( uint16_t * ) & log_data [ SCAO_MIVF ] ));
348+ le16_to_cpu (log -> dssd_minor_version ));
350349 json_object_add_value_uint (root , "major_version_field" ,
351- ( __u8 ) log_data [ SCAO_MAVF ] );
350+ log -> dssd_major_version );
352351 json_object_add_value_uint (root , "nvme_base_errata_version" ,
353- ( __u8 ) log_data [ SCAO_NBEV ] );
352+ log -> nvme_base_errata_version );
354353 json_object_add_value_uint (root , "pcie_link_retraining_count" ,
355- le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_PLRC ] ));
354+ le64_to_cpu (log -> pcie_link_retaining_count ));
356355 json_object_add_value_uint (root , "power_state_change_count" ,
357- le64_to_cpu (* ( uint64_t * ) & log_data [ SCAO_PSCC ] ));
356+ le64_to_cpu (log -> power_state_change_count ));
358357 }
359358 json_print_object (root , NULL );
360359 printf ("\n" );
361360 json_free_object (root );
362361}
363362
364- static void json_smart_extended_log (void * data , unsigned int version )
363+ static void json_smart_extended_log (struct ocp_smart_extended_log * log , unsigned int version )
365364{
366365 switch (version ) {
367366 default :
368367 case 1 :
369- json_smart_extended_log_v1 (data );
368+ json_smart_extended_log_v1 (log );
370369 break ;
371370 case 2 :
372- json_smart_extended_log_v2 (data );
371+ json_smart_extended_log_v2 (log );
373372 }
374373}
375374static void json_telemetry_log (struct ocp_telemetry_parse_options * options )
0 commit comments