|
| 1 | +NVMe Management Interface (NVMe-MI) support |
| 2 | +=========================================== |
| 3 | + |
| 4 | +This libnvme project also includes support for the NVMe Management Interface |
| 5 | +(NVMe-MI), currently over a Management Component Transport (MCTP) |
| 6 | +protocol link. This MCTP link will typically use i2c/SMBus as the |
| 7 | +hardware transport, enabling out-of-band management and control over NVMe |
| 8 | +devices using a simple SMBus interface. |
| 9 | + |
| 10 | +The MI interface is compiled into a separate shared object, ``libnvme-mi.so``. |
| 11 | + |
| 12 | +Most of the MI API is transport-agnostic, except for the endpoint constructor |
| 13 | +functions. Once an endpoint object (``nvme_mi_ep_t``) is created, the generic |
| 14 | +functions can be used to manage it. |
| 15 | + |
| 16 | +MCTP Transport |
| 17 | +-------------- |
| 18 | + |
| 19 | +The MI API is generally transport-agnostic, but the only currently-supported |
| 20 | +transport is MCTP, using the kernel ``AF_MCTP`` socket interface. |
| 21 | + |
| 22 | +MCTP endpoints are addressed by a (network-id, endpoint-id) pair. Endpoint |
| 23 | +IDs (EIDs) are defined by the MCTP standard as an 8-bit value. Since the |
| 24 | +address space is somewhat limited, the Linux `AF_MCTP` support allows for |
| 25 | +separate MCTP "networks", which provide separate address spaces. These networks |
| 26 | +each have a unique ``unsigned int`` as their ID. |
| 27 | + |
| 28 | +The default Network ID is 1; unless you have configured otherwise, MCTP |
| 29 | +endpoints will appear on this network. |
0 commit comments