NVME Identify Controller: decode Optional Admin Command Support.

This commit is contained in:
Constantine Gavrilov 2021-03-11 15:45:40 +02:00 committed by Wireshark GitLab Utility
parent d1f5fa2965
commit 72443746a8
1 changed files with 53 additions and 8 deletions

View File

@ -145,7 +145,7 @@ static int hf_nvme_identify_ctrl_mi_rsvd = -1;
static int hf_nvme_identify_ctrl_mi_nvmsr[] = {[0 ... 3] = -1 };
static int hf_nvme_identify_ctrl_mi_vwci[] = {[0 ... 2] = -1 };
static int hf_nvme_identify_ctrl_mi_mec[] = {[0 ... 3] = -1 };
static int hf_nvme_identify_ctrl_oacs = -1;
static int hf_nvme_identify_ctrl_oacs[] = {[0 ... 11] = -1 };
static int hf_nvme_identify_ctrl_acl = -1;
static int hf_nvme_identify_ctrl_aerl = -1;
static int hf_nvme_identify_ctrl_kas = -1;
@ -885,12 +885,13 @@ static void dissect_nvme_identify_ctrl_resp(tvbuff_t *cmd_tvb,
add_decode_group(hf_nvme_identify_ctrl_mi_vwci, sizeof(hf_nvme_identify_ctrl_mi_vwci)/sizeof(hf_nvme_identify_ctrl_mi_vwci[0]), 254, 1, cmd_tvb, grp);
add_decode_group(hf_nvme_identify_ctrl_mi_mec, sizeof(hf_nvme_identify_ctrl_mi_mec)/sizeof(hf_nvme_identify_ctrl_mi_mec[0]), 255, 1, cmd_tvb, grp);
proto_tree_add_item(cmd_tree, hf_nvme_identify_ctrl_oacs, cmd_tvb,
256, 2, ENC_LITTLE_ENDIAN);
proto_tree_add_item(cmd_tree, hf_nvme_identify_ctrl_acl, cmd_tvb,
258, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(cmd_tree, hf_nvme_identify_ctrl_aerl, cmd_tvb,
259, 1, ENC_LITTLE_ENDIAN);
add_decode_group(hf_nvme_identify_ctrl_oacs, sizeof(hf_nvme_identify_ctrl_oacs)/sizeof(hf_nvme_identify_ctrl_oacs[0]), 256, 2, cmd_tvb, cmd_tree);
ti = proto_tree_add_item_ret_uint(cmd_tree, hf_nvme_identify_ctrl_acl, cmd_tvb,
258, 1, ENC_LITTLE_ENDIAN, &val);
proto_item_append_text(ti, " (%u command%s)", val+1, val ? "s" : "");
ti = proto_tree_add_item_ret_uint(cmd_tree, hf_nvme_identify_ctrl_aerl, cmd_tvb,
259, 1, ENC_LITTLE_ENDIAN, &val);
proto_item_append_text(ti, " (%u event%s)", val+1, val ? "s" : "");
proto_tree_add_item(cmd_tree, hf_nvme_identify_ctrl_kas, cmd_tvb,
320, 2, ENC_LITTLE_ENDIAN);
proto_tree_add_item(cmd_tree, hf_nvme_identify_ctrl_sqes, cmd_tvb,
@ -1709,10 +1710,54 @@ proto_register_nvme(void)
{ "Reserved", "nvme.cmd.identify.ctrl.mi.mec.rsvd",
FT_UINT8, BASE_HEX, NULL, 0xfc, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs,
{ &hf_nvme_identify_ctrl_oacs[0],
{ "Optional Admin Command Support (OACS)", "nvme.cmd.identify.ctrl.oacs",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[1],
{ "Security Send and Security Receive Support", "nvme.cmd.identify.ctrl.oacs.sec",
FT_UINT16, BASE_HEX, NULL, 0x1, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[2],
{ "Format NVM Support", "nvme.cmd.identify.ctrl.oacs.fmt",
FT_UINT16, BASE_HEX, NULL, 0x2, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[3],
{ "Firmware Download and Commit Support", "nvme.cmd.identify.ctrl.oacs.fw",
FT_UINT16, BASE_HEX, NULL, 0x4, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[4],
{ "Namespace Management Support", "nvme.cmd.identify.ctrl.oacs.nsmgmt",
FT_UINT16, BASE_HEX, NULL, 0x8, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[5],
{ "Device Self-Test Support", "nvme.cmd.identify.ctrl.oacs.stst",
FT_UINT16, BASE_HEX, NULL, 0x10, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[6],
{ "Directive Send and Directive Receive Support", "nvme.cmd.identify.ctrl.oacs.dtv",
FT_UINT16, BASE_HEX, NULL, 0x20, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[7],
{ "NVMe-MI Send and NVMe Receive Support", "nvme.cmd.identify.ctrl.oacs.mi",
FT_UINT16, BASE_HEX, NULL, 0x40, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[8],
{ "Virtualization Management Support", "nvme.cmd.identify.ctrl.oacs.vm",
FT_UINT16, BASE_HEX, NULL, 0x80, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[9],
{ "Dorbell Buffer Config Support", "nvme.cmd.identify.ctrl.oacs.db",
FT_UINT16, BASE_HEX, NULL, 0x100, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[10],
{ "Get LBA Status Support", "nvme.cmd.identify.ctrl.oacs.sec.lba",
FT_UINT16, BASE_HEX, NULL, 0x200, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_oacs[11],
{ "Reserevd", "nvme.cmd.identify.ctrl.oacs.sec.rsvd",
FT_UINT16, BASE_HEX, NULL, 0xfc00, NULL, HFILL}
},
{ &hf_nvme_identify_ctrl_acl,
{ "Abort Command Limit (ACL)", "nvme.cmd.identify.ctrl.acl",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}