Clarification regarding "nvme discover" and setting IOSQES/IOCQES

Belanger, Martin Martin.Belanger at dell.com
Mon Feb 8 11:32:16 EST 2021


I'm using "nvme discover" to retrieve discovery log pages. And I'm using nvmet-tcp as the target.

>From what I understand, "nvme discover" is supposed to set up a connection to a "Discovery Controller (DC)". During the exchange between the Host and the Target, there is a time when the Host must set CC.EN=1 to "enable" the DC. I'm using Wireshark to analyse the packets sent by the Host to the DC. I can see that when it's time to set CC.EN=1, the Host also sets two additional parameters: IOCQES=4 and IOSQES=6. 

In the NVME Base Specification, Figure 78 - Controller Configuration, these fields are defined as parameters to configure an "I/O Controller (IOC)" and not to configure a "Discovery Controller (DC)". In fact, it says that "If the controller does not support I/O queues, then this field shall be read-only with a value of 0h". 

The way I understand it, DCs do not support I/O queues. So why set IOCQES and IOSQES to non-zero values?

Thanks,
Martin


More information about the Linux-nvme mailing list