NVMe controller initialization options. More...
#include <nvme.h>
Data Fields | |
uint32_t | num_io_queues |
Number of I/O queues to request (used to set Number of Queues feature) | |
bool | use_cmb_sqs |
Enable submission queue in controller memory buffer. | |
bool | no_shn_notification |
Don't initiate shutdown processing. | |
uint8_t | reserved6 [2] |
enum spdk_nvme_cc_ams | arb_mechanism |
Type of arbitration mechanism. | |
uint8_t | arbitration_burst |
Maximum number of commands that the controller may launch at one time. | |
uint8_t | low_priority_weight |
Number of commands that may be executed from the low priority queue in each arbitration round. | |
uint8_t | medium_priority_weight |
Number of commands that may be executed from the medium priority queue in each arbitration round. | |
uint8_t | high_priority_weight |
Number of commands that may be executed from the high priority queue in each arbitration round. | |
uint32_t | keep_alive_timeout_ms |
Keep alive timeout in milliseconds (0 = disabled). | |
uint8_t | transport_retry_count |
Specify the retry number when there is issue with the transport. | |
uint8_t | reserved21 [3] |
uint32_t | io_queue_size |
The queue depth of each NVMe I/O queue. | |
char | hostnqn [SPDK_NVMF_NQN_MAX_LEN+1] |
The host NQN to use when connecting to NVMe over Fabrics controllers. | |
uint32_t | io_queue_requests |
The number of requests to allocate for each NVMe I/O queue. | |
char | src_addr [SPDK_NVMF_TRADDR_MAX_LEN+1] |
Source address for NVMe-oF connections. | |
char | src_svcid [SPDK_NVMF_TRSVCID_MAX_LEN+1] |
Source service ID (port) for NVMe-oF connections. | |
uint8_t | host_id [8] |
The host identifier to use when connecting to controllers with 64-bit host ID support. | |
uint8_t | extended_host_id [16] |
The host identifier to use when connecting to controllers with extended (128-bit) host ID support. | |
uint8_t | reserved570 [2] |
enum spdk_nvme_cc_css | command_set |
The I/O command set to select. | |
uint32_t | admin_timeout_ms |
Admin commands timeout in milliseconds (0 = no timeout). | |
bool | header_digest |
It is used for TCP transport. | |
bool | data_digest |
It is used for TCP transport. | |
bool | disable_error_logging |
Disable logging of requests that are completed with error status. | |
uint8_t | transport_ack_timeout |
It is used for both RDMA & TCP transport Specify the transport ACK timeout. | |
uint16_t | admin_queue_size |
The queue depth of NVMe Admin queue. | |
uint8_t | reserved586 [6] |
size_t | opts_size |
The size of spdk_nvme_ctrlr_opts according to the caller of this library is used for ABI compatibility. | |
uint64_t | fabrics_connect_timeout_us |
The amount of time to spend before timing out during fabric connect on qpairs associated with this controller in microseconds. | |
bool | disable_read_ana_log_page |
Disable reading ANA log page. | |
uint8_t | reserved610 [7] |
uint8_t | disable_read_changed_ns_list_log_page |
Disable reading CHANGED_NS_LIST log page in response to an NS_ATTR_CHANGED AEN The upper layer should reading CHANGED_NS_LIST log page instead if set to true. | |
char | psk [200] |
Set PSK and enable SSL socket implementation for NVMe/TCP only. | |
uint8_t | transport_tos |
It is used for RDMA transport. | |
struct spdk_key * | tls_psk |
Pre-shared key for NVMe/TCP's TLS connection. | |
struct spdk_key * | dhchap_key |
In-band authentication DH-HMAC-CHAP host key. | |
struct spdk_key * | dhchap_ctrlr_key |
In-band authentication DH-HMAC-CHAP controller key. | |
uint32_t | dhchap_digests |
Allowed digests in in-band authentication. | |
uint32_t | dhchap_dhgroups |
Allowed Diffie-Hellman groups in in-band authentication. | |
NVMe controller initialization options.
A pointer to this structure will be provided for each probe callback from spdk_nvme_probe() to allow the user to request non-default options, and the actual options enabled on the controller will be provided during the attach callback.
uint32_t spdk_nvme_ctrlr_opts::admin_timeout_ms |
Admin commands timeout in milliseconds (0 = no timeout).
The timeout value is used for admin commands submitted internally by the nvme driver during initialization, before the user is able to call spdk_nvme_ctrlr_register_timeout_callback(). By default, this is set to 120 seconds, users can change it in the probing callback.
uint8_t spdk_nvme_ctrlr_opts::arbitration_burst |
Maximum number of commands that the controller may launch at one time.
The value is expressed as a power of two, valid values are from 0-7, and 7 means unlimited.
enum spdk_nvme_cc_css spdk_nvme_ctrlr_opts::command_set |
The I/O command set to select.
If the requested command set is not supported, the controller initialization process will not proceed. By default, the NVM command set is used.
bool spdk_nvme_ctrlr_opts::data_digest |
It is used for TCP transport.
Set to true, means having data digest for the data in the NVMe/TCP PDU
uint32_t spdk_nvme_ctrlr_opts::dhchap_dhgroups |
Allowed Diffie-Hellman groups in in-band authentication.
Each bit corresponds to one of the spdk_nvmf_dhchap_dhgroup values.
uint32_t spdk_nvme_ctrlr_opts::dhchap_digests |
Allowed digests in in-band authentication.
Each bit corresponds to one of the spdk_nvmf_dhchap_hash values.
bool spdk_nvme_ctrlr_opts::disable_error_logging |
Disable logging of requests that are completed with error status.
Defaults to 'false' (errors are logged).
bool spdk_nvme_ctrlr_opts::disable_read_ana_log_page |
Disable reading ANA log page.
The upper layer should reading ANA log page instead if set to true.
Default is false
(ANA log page is read).
uint8_t spdk_nvme_ctrlr_opts::disable_read_changed_ns_list_log_page |
Disable reading CHANGED_NS_LIST log page in response to an NS_ATTR_CHANGED AEN The upper layer should reading CHANGED_NS_LIST log page instead if set to true.
Default is false
(CHANGED_NS_LIST log page is read).
uint8_t spdk_nvme_ctrlr_opts::extended_host_id[16] |
The host identifier to use when connecting to controllers with extended (128-bit) host ID support.
Set to all zeroes to specify that no host ID should be provided to the controller.
bool spdk_nvme_ctrlr_opts::header_digest |
It is used for TCP transport.
Set to true, means having header digest for the header in the NVMe/TCP PDU
uint8_t spdk_nvme_ctrlr_opts::high_priority_weight |
Number of commands that may be executed from the high priority queue in each arbitration round.
This field is only valid when arb_mechanism is set to SPDK_NVME_CC_AMS_WRR (weighted round robin).
uint8_t spdk_nvme_ctrlr_opts::host_id[8] |
The host identifier to use when connecting to controllers with 64-bit host ID support.
Set to all zeroes to specify that no host ID should be provided to the controller.
char spdk_nvme_ctrlr_opts::hostnqn[SPDK_NVMF_NQN_MAX_LEN+1] |
The host NQN to use when connecting to NVMe over Fabrics controllers.
If empty, a default value will be used.
uint32_t spdk_nvme_ctrlr_opts::io_queue_requests |
The number of requests to allocate for each NVMe I/O queue.
This should be at least as large as io_queue_size.
A single I/O may allocate more than one request, since splitting may be necessary to conform to the device's maximum transfer size, PRP list compatibility requirements, or driver-assisted striping.
uint32_t spdk_nvme_ctrlr_opts::keep_alive_timeout_ms |
Keep alive timeout in milliseconds (0 = disabled).
The NVMe library will set the Keep Alive Timer feature to this value and automatically send Keep Alive commands as needed. The library user must call spdk_nvme_ctrlr_process_admin_completions() periodically to ensure Keep Alive commands are sent.
uint8_t spdk_nvme_ctrlr_opts::low_priority_weight |
Number of commands that may be executed from the low priority queue in each arbitration round.
This field is only valid when arb_mechanism is set to SPDK_NVME_CC_AMS_WRR (weighted round robin).
uint8_t spdk_nvme_ctrlr_opts::medium_priority_weight |
Number of commands that may be executed from the medium priority queue in each arbitration round.
This field is only valid when arb_mechanism is set to SPDK_NVME_CC_AMS_WRR (weighted round robin).
size_t spdk_nvme_ctrlr_opts::opts_size |
The size of spdk_nvme_ctrlr_opts according to the caller of this library is used for ABI compatibility.
The library uses this field to know how many fields in this structure are valid. And the library will populate any remaining fields with default values.
char spdk_nvme_ctrlr_opts::psk[200] |
Set PSK and enable SSL socket implementation for NVMe/TCP only.
If empty, a default socket implementation will be used. The TLS PSK interchange format is: NVMeTLSkey-1:xx:[Base64 encoded string]: 12B (header) + 2B (hash) + 176B (base64 for 1024b + crc32) + 3B (colons) + 1B (NULL) + 6B (extra space for future)
char spdk_nvme_ctrlr_opts::src_addr[SPDK_NVMF_TRADDR_MAX_LEN+1] |
Source address for NVMe-oF connections.
Set src_addr and src_svcid to empty strings if no source address should be specified.
char spdk_nvme_ctrlr_opts::src_svcid[SPDK_NVMF_TRSVCID_MAX_LEN+1] |
Source service ID (port) for NVMe-oF connections.
Set src_addr and src_svcid to empty strings if no source address should be specified.
uint8_t spdk_nvme_ctrlr_opts::transport_ack_timeout |
It is used for both RDMA & TCP transport Specify the transport ACK timeout.
The value should be in range 0-31 where 0 means use driver-specific default value. RDMA: The value is applied to each qpair and affects the time that qpair waits for transport layer acknowledgement until it retransmits a packet. The value should be chosen empirically to meet the needs of a particular application. A low value means less time the qpair waits for ACK which can increase the number of retransmissions. A large value can increase the time the connection is closed. The value of ACK timeout is calculated according to the formula 4.096 * 2^(transport_ack_timeout) usec. TCP: The value is applied to each qpair and affects the time that qpair waits for transport layer acknowledgement until connection is closed forcefully. The value of ACK timeout is calculated according to the formula 2^(transport_ack_timeout) msec.
uint8_t spdk_nvme_ctrlr_opts::transport_tos |
It is used for RDMA transport.
Set the IP protocol type of service value for RDMA transport. Default is 0, which means that the TOS will not be set.