Skip to content

Commit

Permalink
example: fix mi identify failed with error cntid
Browse files Browse the repository at this point in the history
This command failed when we try to identify a controller that the
controller id is 1.

Refer to the `Figure 273: Identify - CNS Values`:
+-----------+-------+
| CNS Value | CNTID |
+-----------+-------+
| 01h       | N     |
+-----------+-------+
When CNS is 01h, the CNTID field is ignored.

See `Figure 270: Identify - Command Dword 10`:
If this field is not used as part of the Identify operation, then
* host software shall clear this field to 0h for backwards compatibility
(0h is a valid controller identifier);
* and the controller shall ignore this field.

This filed is set to controller id in the example code, but it should be
0 when CNS is 1.

PS: The NVMe that we are testing does not ignore the CNTID field and
returns an error when the CNTID field is not 0.

Signed-off-by: Jian Zhang <zhangjian.3032@bytedance.com>
  • Loading branch information
zhangjian3032 authored and igaw committed Feb 8, 2024
1 parent 3f89041 commit 24a5580
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions examples/mi-mctp.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ int do_identify(nvme_mi_ep_t ep, int argc, char **argv)

partial = argc > 2 && !strcmp(argv[2], "--partial");

ctrl = nvme_mi_init_ctrl(ep, tmp);
ctrl = nvme_mi_init_ctrl(ep, ctrl_id);
if (!ctrl) {
warn("can't create controller");
return -1;
Expand All @@ -211,7 +211,7 @@ int do_identify(nvme_mi_ep_t ep, int argc, char **argv)
id_args.args_size = sizeof(id_args);
id_args.cns = NVME_IDENTIFY_CNS_CTRL;
id_args.nsid = NVME_NSID_NONE;
id_args.cntid = ctrl_id;
id_args.cntid = 0;
id_args.csi = NVME_CSI_NVM;

/* for this example code, we can either do a full or partial identify;
Expand Down

0 comments on commit 24a5580

Please sign in to comment.