DOKK / manpages / debian 13 / libnvme-dev / nvme_mi_mi_xfer.2.en
nvme_mi_mi_xfer(2) libnvme API manual nvme_mi_mi_xfer(2)

nvme_mi_mi_xfer - Raw mi transfer interface.

int nvme_mi_mi_xfer (nvme_mi_ep_t ep , struct nvme_mi_mi_req_hdr *mi_req , size_t req_data_size , struct nvme_mi_mi_resp_hdr *mi_resp , size_t *resp_data_size );

endpoint to send the MI command to
request data
size of request data payload
buffer for response data
size of response data buffer, updated to received size

Performs an arbitrary NVMe MI command, using the provided request data, in mi_req. The size of the request data *payload* is specified in req_data_size - this does not include the standard header length (so a header-only request would have a size of 0). Note that the Management Request Doublewords are considered part of the header data.

On success, response data is stored in mi_resp, which has an optional appended payload buffer of resp_data_size bytes. The actual payload size transferred will be stored in resp_data_size. This size does not include the MI response header, so 0 represents no payload.

See: struct nvme_mi_mi_req_hdr and struct nvme_mi_mi_resp_hdr.

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise..

nvme_mi_mi_xfer May 2025