@@ -186,16 +186,39 @@ static void obj_print(struct json_object *o)
186186 json_print (o );
187187}
188188
189+ static void json_id_iocs_iocsc (struct json_object * obj_iocsc , __u64 iocsc )
190+ {
191+ __u8 cpncs = NVME_GET (iocsc , IOCS_IOCSC_CPNCS );
192+ __u8 slmcs = NVME_GET (iocsc , IOCS_IOCSC_SLMCS );
193+ __u8 znscs = NVME_GET (iocsc , IOCS_IOCSC_ZNSCS );
194+ __u8 kvcs = NVME_GET (iocsc , IOCS_IOCSC_KVCS );
195+ __u8 nvmcs = NVME_GET (iocsc , IOCS_IOCSC_NVMCS );
196+
197+ obj_add_str (obj_iocsc , "Computational Programs Namespace Command Set" , cpncs ?
198+ "Selected" : "Not selected" );
199+ obj_add_str (obj_iocsc , "Subsystem Local Memory Command Set" , slmcs ?
200+ "Selected" : "Not selected" );
201+ obj_add_str (obj_iocsc , "Zoned Namespace Command Set" , znscs ? "Selected" : "Not selected" );
202+ obj_add_str (obj_iocsc , "Key Value Command Set" , kvcs ? "Selected" : "Not selected" );
203+ obj_add_str (obj_iocsc , "NVM Command Set" , nvmcs ? "Selected" : "Not selected" );
204+ }
205+
189206static void json_id_iocs (struct nvme_id_iocs * iocs )
190207{
191208 struct json_object * r = json_create_object ();
209+ struct json_object * obj_iocsc ;
192210 char json_str [STR_LEN ];
193211 __u16 i ;
194212
195213 for (i = 0 ; i < ARRAY_SIZE (iocs -> iocsc ); i ++ ) {
196214 if (iocs -> iocsc [i ]) {
197215 sprintf (json_str , "I/O Command Set Combination[%u]" , i );
198216 obj_add_uint64 (r , json_str , le64_to_cpu (iocs -> iocsc [i ]));
217+
218+ obj_iocsc = json_create_object ();
219+ sprintf (json_str , "IOCSC%u" , i );
220+ json_id_iocs_iocsc (obj_iocsc , le64_to_cpu (iocs -> iocsc [i ]));
221+ obj_add_obj (r , json_str , obj_iocsc );
199222 }
200223 }
201224
0 commit comments