Skip to content

Commit 4f4df42

Browse files
author
Karthik
committed
plugins/ocp: fix telemetry string log output format
Fixed the code to handle json output crash Fixed proper display of ASCII Table content Disabling debug logs output while parsing telemetry-string-log data Signed-off-by: Karthik <[email protected]> Reviewed-by: Arunpandian J <[email protected]>
1 parent 98b34e4 commit 4f4df42

File tree

2 files changed

+49
-13
lines changed

2 files changed

+49
-13
lines changed

plugins/ocp/ocp-nvme.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2502,7 +2502,11 @@ static int get_c9_log_page(struct nvme_dev *dev, char *format)
25022502
return ret;
25032503
}
25042504

2505-
ret = get_c9_log_page_data(dev, 1, 0);
2505+
if (fmt == BINARY)
2506+
ret = get_c9_log_page_data(dev, 0, 1);
2507+
else
2508+
ret = get_c9_log_page_data(dev, 0, 0);
2509+
25062510
if (!ret) {
25072511
ocp_c9_log(log_data, pC9_string_buffer, total_log_page_sz, fmt);
25082512
} else {
@@ -2529,7 +2533,8 @@ static int ocp_telemetry_str_log_format(int argc, char **argv, struct command *c
25292533
};
25302534

25312535
OPT_ARGS(opts) = {
2532-
OPT_FMT("output-format", 'o', &cfg.output_format, "output Format: normal|json"),
2536+
OPT_FMT("output-format", 'o', &cfg.output_format,
2537+
"output Format:normal|json|binary"),
25332538
OPT_END()
25342539
};
25352540

plugins/ocp/ocp-print-json.c

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -562,17 +562,16 @@ static void json_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_dat
562562
struct event_id_str_table_entry event_id_str_table_arr[eve_id_index];
563563
struct vu_event_id_str_table_entry vu_event_id_str_table_arr[vu_eve_index];
564564
__u8 ascii_table_info_arr[ascii_table_index];
565-
char ascii_buf[ascii_table_index];
566-
char *ascii = ascii_buf;
565+
char ascii_char[2];
567566
int j;
568567

569568
json_object_add_value_int(root, "Log Page Version",
570569
le16_to_cpu(log_data->log_page_version));
571570

572-
memset((__u8 *)res, 0, 15);
571+
memset((__u8 *)res, 0, 48);
573572
for (j = 0; j < 15; j++)
574573
res += sprintf(res, "%d", log_data->reserved1[j]);
575-
json_object_add_value_string(root, "Reserved", res_arr);
574+
json_object_add_value_string(root, "Reserved[15:01]", res_arr);
576575

577576
memset((void *)guid, 0, GUID_LEN);
578577
for (j = GUID_LEN - 1; j >= 0; j--)
@@ -581,10 +580,11 @@ static void json_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_dat
581580

582581
json_object_add_value_int(root, "Telemetry String Log Size", le64_to_cpu(log_data->sls));
583582

584-
memset((__u8 *)res, 0, 24);
583+
res = res_arr;
584+
memset((__u8 *)res, 0, 48);
585585
for (j = 0; j < 24; j++)
586586
res += sprintf(res, "%d", log_data->reserved2[j]);
587-
json_object_add_value_string(root, "Reserved", res_arr);
587+
json_object_add_value_string(root, "Reserved[63:40]", res_arr);
588588

589589
json_object_add_value_int(root, "Statistics Identifier String Table Start",
590590
le64_to_cpu(log_data->sits));
@@ -604,85 +604,101 @@ static void json_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_dat
604604
fifo += sprintf(fifo, "%c", log_data->fifo1[j]);
605605
json_object_add_value_string(root, "FIFO 1 ASCII String", fifo_arr);
606606

607+
fifo = fifo_arr;
607608
memset((void *)fifo, 0, 16);
608609
for (j = 0; j < 16; j++)
609610
fifo += sprintf(fifo, "%c", log_data->fifo2[j]);
610611
json_object_add_value_string(root, "FIFO 2 ASCII String", fifo_arr);
611612

613+
fifo = fifo_arr;
612614
memset((void *)fifo, 0, 16);
613615
for (j = 0; j < 16; j++)
614616
fifo += sprintf(fifo, "%c", log_data->fifo3[j]);
615617
json_object_add_value_string(root, "FIFO 3 ASCII String", fifo_arr);
616618

619+
fifo = fifo_arr;
617620
memset((void *)fifo, 0, 16);
618621
for (j = 0; j < 16; j++)
619622
fifo += sprintf(fifo, "%c", log_data->fifo4[j]);
620623
json_object_add_value_string(root, "FIFO 4 ASCII String", fifo_arr);
621624

625+
fifo = fifo_arr;
622626
memset((void *)fifo, 0, 16);
623627
for (j = 0; j < 16; j++)
624628
fifo += sprintf(fifo, "%c", log_data->fifo5[j]);
625629
json_object_add_value_string(root, "FIFO 5 ASCII String", fifo_arr);
626630

631+
fifo = fifo_arr;
627632
memset((void *)fifo, 0, 16);
628633
for (j = 0; j < 16; j++)
629634
fifo += sprintf(fifo, "%c", log_data->fifo6[j]);
630635
json_object_add_value_string(root, "FIFO 6 ASCII String", fifo_arr);
631636

637+
fifo = fifo_arr;
632638
memset((void *)fifo, 0, 16);
633639
for (j = 0; j < 16; j++)
634640
fifo += sprintf(fifo, "%c", log_data->fifo7[j]);
635641
json_object_add_value_string(root, "FIFO 7 ASCII String", fifo_arr);
636642

643+
fifo = fifo_arr;
637644
memset((void *)fifo, 0, 16);
638645
for (j = 0; j < 16; j++)
639646
fifo += sprintf(fifo, "%c", log_data->fifo8[j]);
640647
json_object_add_value_string(root, "FIFO 8 ASCII String", fifo_arr);
641648

649+
fifo = fifo_arr;
642650
memset((void *)fifo, 0, 16);
643651
for (j = 0; j < 16; j++)
644652
fifo += sprintf(fifo, "%c", log_data->fifo9[j]);
645653
json_object_add_value_string(root, "FIFO 9 ASCII String", fifo_arr);
646654

655+
fifo = fifo_arr;
647656
memset((void *)fifo, 0, 16);
648657
for (j = 0; j < 16; j++)
649658
fifo += sprintf(fifo, "%c", log_data->fifo10[j]);
650659
json_object_add_value_string(root, "FIFO 10 ASCII String", fifo_arr);
651660

661+
fifo = fifo_arr;
652662
memset((void *)fifo, 0, 16);
653663
for (j = 0; j < 16; j++)
654664
fifo += sprintf(fifo, "%c", log_data->fifo11[j]);
655665
json_object_add_value_string(root, "FIFO 11 ASCII String", fifo_arr);
656666

667+
fifo = fifo_arr;
657668
memset((void *)fifo, 0, 16);
658669
for (j = 0; j < 16; j++)
659670
fifo += sprintf(fifo, "%c", log_data->fifo12[j]);
660671
json_object_add_value_string(root, "FIFO 12 ASCII String", fifo_arr);
661672

673+
fifo = fifo_arr;
662674
memset((void *)fifo, 0, 16);
663675
for (j = 0; j < 16; j++)
664676
fifo += sprintf(fifo, "%c", log_data->fifo13[j]);
665677
json_object_add_value_string(root, "FIFO 13 ASCII String", fifo_arr);
666678

679+
fifo = fifo_arr;
667680
memset((void *)fifo, 0, 16);
668681
for (j = 0; j < 16; j++)
669682
fifo += sprintf(fifo, "%c", log_data->fifo14[j]);
670683
json_object_add_value_string(root, "FIFO 14 ASCII String", fifo_arr);
671684

685+
fifo = fifo_arr;
672686
memset((void *)fifo, 0, 16);
673687
for (j = 0; j < 16; j++)
674688
fifo += sprintf(fifo, "%c", log_data->fifo15[j]);
675689
json_object_add_value_string(root, "FIFO 15 ASCII String", fifo_arr);
676690

691+
fifo = fifo_arr;
677692
memset((void *)fifo, 0, 16);
678693
for (j = 0; j < 16; j++)
679694
fifo += sprintf(fifo, "%c", log_data->fifo16[j]);
680695
json_object_add_value_string(root, "FIFO 16 ASCII String", fifo_arr);
681696

697+
res = res_arr;
682698
memset((__u8 *)res, 0, 48);
683699
for (j = 0; j < 48; j++)
684700
res += sprintf(res, "%d", log_data->reserved3[j]);
685-
json_object_add_value_string(root, "Reserved", res_arr);
701+
json_object_add_value_string(root, "Reserved[431:384]", res_arr);
686702

687703
if (log_data->sitsz != 0) {
688704

@@ -767,13 +783,28 @@ static void json_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_dat
767783
}
768784

769785
if (log_data->asctsz != 0) {
786+
struct json_object *ascii_table = json_create_object();
787+
770788
memcpy(ascii_table_info_arr,
771789
(__u8 *)log_data_buf + ascii_table_ofst,
772790
(log_data->asctsz * 4));
773-
memset((void *)ascii, 0, ascii_table_index);
774-
for (j = 0; j < ascii_table_index; j++)
775-
ascii += sprintf(ascii, "%c", ascii_table_info_arr[j]);
776-
json_object_add_value_string(root, "ASCII Table", ascii_buf);
791+
792+
for (j = 0; j < ascii_table_index; j++) {
793+
struct json_object *entry = json_create_object();
794+
795+
json_object_add_value_int(entry, "Byte",
796+
le16_to_cpu(ascii_table_ofst + j));
797+
json_object_add_value_int(entry, "Data Byte",
798+
le16_to_cpu(ascii_table_info_arr[j]));
799+
sprintf(ascii_char, "%c", (ascii_table_info_arr[j]));
800+
json_object_add_value_string(entry, "ASCII Character",
801+
ascii_char);
802+
sprintf(buf, "ASCII Table Entry %d", j);
803+
json_object_add_value_object(ascii_table, buf, entry);
804+
}
805+
json_object_add_value_object(root,
806+
"ASCII Table Entry",
807+
ascii_table);
777808
}
778809

779810
json_print_object(root, NULL);

0 commit comments

Comments
 (0)