Skip to content

Commit 3b286f8

Browse files
amashiana-sdigaw
authored andcommitted
plugins/solidigm: Added extra VU fields to id-ctrl
Added 13 extra VU fields to Solidigm id-ctrl including a buffer for correct offset Signed-off-by: Anant Mashiana <anant.mashiana@solidigm.com>
1 parent be55111 commit 3b286f8

File tree

2 files changed

+64
-5
lines changed

2 files changed

+64
-5
lines changed

plugins/solidigm/solidigm-id-ctrl.c

+63-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#include "common.h"
1010
#include "solidigm-id-ctrl.h"
1111

12-
struct __packed nvme_vu_id_ctrl_field { /* CDR MR5 */
12+
struct __packed nvme_vu_id_ctrl_field { // CPC
1313
__u8 rsvd1[3];
1414
__u8 ss;
1515
char health[20];
@@ -22,6 +22,26 @@ struct __packed nvme_vu_id_ctrl_field { /* CDR MR5 */
2222
__le64 ww;
2323
char mic_bl[4];
2424
char mic_fw[4];
25+
__u8 rsvd3[678];
26+
__u32 signature;
27+
__u8 version;
28+
__u8 product_type;
29+
__u8 nand_type;
30+
__u8 form_factor;
31+
__u32 fw_status;
32+
__u32 p4_revision; // git hash first 8 characters
33+
__u32 customer_id;
34+
__u32 usage_model;
35+
struct{
36+
__u32 zns_nvme : 1; // bit 0
37+
__u32 mfnd_nvme : 1; // bit 1
38+
__u32 cdw1413 : 1; // bit 2: CDW14 remapping into CDW13
39+
__u32 vpd_avail : 1; // bit 3: VPD EEPROM is available
40+
//at moment of id-ctrl response
41+
__u32 rsvd : 28; // bit 4..31 are unused
42+
}
43+
command_set;
44+
2545
};
2646

2747
void sldgm_id_ctrl(uint8_t *vs, struct json_object *root)
@@ -37,6 +57,19 @@ void sldgm_id_ctrl(uint8_t *vs, struct json_object *root)
3757
const char *str_ww = "wwid";
3858
const char *str_mic_bl = "bwLimGran";
3959
const char *str_mic_fw = "ioLimGran";
60+
const char *str_signature = "signature";
61+
const char *str_version = "version";
62+
const char *str_product_type = "prodType";
63+
const char *str_nand_type = "nandType";
64+
const char *str_form_factor = "formFactor";
65+
const char *str_fw_status = "fwStatus";
66+
const char *str_p4_revision = "P4Revision";
67+
const char *str_customer_id = "customerID";
68+
const char *str_usage_model = "usageModel";
69+
const char *str_zns_nvme = "znsNVMe";
70+
const char *str_mfnd_nvme = "mfndNVMe";
71+
const char *str_cdw14_cdw13 = "cdw14map13";
72+
const char *str_vpd_avail = "vpdAvail";
4073

4174
struct nvme_vu_id_ctrl_field *id = (struct nvme_vu_id_ctrl_field *)vs;
4275

@@ -54,20 +87,46 @@ void sldgm_id_ctrl(uint8_t *vs, struct json_object *root)
5487
printf("%-10s: 0x%016"PRIx64"\n", str_ww, le64_to_cpu(id->ww));
5588
printf("%-10s: %.*s\n", str_mic_bl, (int)sizeof(id->mic_bl), id->mic_bl);
5689
printf("%-10s: %.*s\n", str_mic_fw, (int)sizeof(id->mic_fw), id->mic_fw);
90+
printf("%-10s: 0x%08X\n", str_signature, id->signature);
91+
printf("%-10s: 0x%02X\n", str_version, id->version);
92+
printf("%-10s: %u\n", str_product_type, id->product_type);
93+
printf("%-10s: %u\n", str_nand_type, id->nand_type);
94+
printf("%-10s: %u\n", str_form_factor, id->form_factor);
95+
printf("%-10s: %u\n", str_fw_status, id->fw_status);
96+
printf("%-10s: 0x%08X\n", str_p4_revision, id->p4_revision);
97+
printf("%-10s: 0x%08X\n", str_customer_id, id->customer_id);
98+
printf("%-10s: %u\n", str_usage_model, id->usage_model);
99+
printf("%-10s: %u\n", str_zns_nvme, id->command_set.zns_nvme);
100+
printf("%-10s: %u\n", str_mfnd_nvme, id->command_set.mfnd_nvme);
101+
printf("%-10s: %u\n", str_cdw14_cdw13, id->command_set.cdw1413);
102+
printf("%-10s: %u\n", str_vpd_avail, id->command_set.vpd_avail);
57103
return;
58104
}
59105

60106
json_object_add_value_uint(root, str_ss, id->ss);
61107
json_object_object_add(root, str_health,
62-
json_object_new_string_len(health, sizeof(id->health)));
108+
json_object_new_string_len(health, sizeof(id->health)));
63109
json_object_add_value_uint(root, str_cls, id->cls);
64110
json_object_add_value_uint(root, str_nlw, id->nlw);
65111
json_object_add_value_uint(root, str_scap, id->scap);
66112
json_object_add_value_uint(root, str_sstat, id->sstat);
67113
json_object_object_add(root, str_bl, json_object_new_string_len(id->bl, sizeof(id->bl)));
68114
json_object_add_value_uint64(root, str_ww, le64_to_cpu(id->ww));
69115
json_object_object_add(root, str_mic_bl,
70-
json_object_new_string_len(id->mic_bl, sizeof(id->mic_bl)));
116+
json_object_new_string_len(id->mic_bl, sizeof(id->mic_bl)));
71117
json_object_object_add(root, str_mic_fw,
72-
json_object_new_string_len(id->mic_fw, sizeof(id->mic_fw)));
118+
json_object_new_string_len(id->mic_fw, sizeof(id->mic_fw)));
119+
json_object_add_value_uint(root, str_signature, id->signature);
120+
json_object_add_value_uint(root, str_version, id->version);
121+
json_object_add_value_uint(root, str_product_type, id->product_type);
122+
json_object_add_value_uint(root, str_nand_type, id->nand_type);
123+
json_object_add_value_uint(root, str_form_factor, id->form_factor);
124+
json_object_add_value_uint(root, str_fw_status, id->fw_status);
125+
json_object_add_value_uint(root, str_p4_revision, id->p4_revision);
126+
json_object_add_value_uint(root, str_customer_id, id->customer_id);
127+
json_object_add_value_uint(root, str_usage_model, id->usage_model);
128+
json_object_add_value_uint(root, str_zns_nvme, id->command_set.zns_nvme);
129+
json_object_add_value_uint(root, str_mfnd_nvme, id->command_set.mfnd_nvme);
130+
json_object_add_value_uint(root, str_cdw14_cdw13, id->command_set.cdw1413);
131+
json_object_add_value_uint(root, str_vpd_avail, id->command_set.vpd_avail);
73132
}

plugins/solidigm/solidigm-nvme.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
#include "cmd.h"
1515

16-
#define SOLIDIGM_PLUGIN_VERSION "1.4"
16+
#define SOLIDIGM_PLUGIN_VERSION "1.5"
1717

1818
PLUGIN(NAME("solidigm", "Solidigm vendor specific extensions", SOLIDIGM_PLUGIN_VERSION),
1919
COMMAND_LIST(

0 commit comments

Comments
 (0)