nvmf: report virtualized NVMe version 1.2.1
The NVMe over Fabrics 1.0 spec corresponds to the NVMe base spec version 1.2.1, so we should pretend to be at least that new. Change-Id: I36fc44c780de01d6c666e87b803cd47dba0e74c5 Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
5e15296025
commit
201843a9eb
@ -196,6 +196,16 @@ union spdk_nvme_vs_register {
|
|||||||
};
|
};
|
||||||
SPDK_STATIC_ASSERT(sizeof(union spdk_nvme_vs_register) == 4, "Incorrect size");
|
SPDK_STATIC_ASSERT(sizeof(union spdk_nvme_vs_register) == 4, "Incorrect size");
|
||||||
|
|
||||||
|
/** Generate raw version in the same format as \ref spdk_nvme_vs_register for comparison. */
|
||||||
|
#define SPDK_NVME_VERSION(mjr, mnr, ter) \
|
||||||
|
(((uint32_t)(mjr) << 16) | \
|
||||||
|
((uint32_t)(mnr) << 8) | \
|
||||||
|
(uint32_t)(ter))
|
||||||
|
|
||||||
|
/* Test that the shifts are correct */
|
||||||
|
SPDK_STATIC_ASSERT(SPDK_NVME_VERSION(1, 0, 0) == 0x00010000, "version macro error");
|
||||||
|
SPDK_STATIC_ASSERT(SPDK_NVME_VERSION(1, 2, 1) == 0x00010201, "version macro error");
|
||||||
|
|
||||||
union spdk_nvme_cmbloc_register {
|
union spdk_nvme_cmbloc_register {
|
||||||
uint32_t raw;
|
uint32_t raw;
|
||||||
struct {
|
struct {
|
||||||
@ -735,7 +745,7 @@ struct __attribute__((packed)) spdk_nvme_ctrlr_data {
|
|||||||
uint16_t cntlid;
|
uint16_t cntlid;
|
||||||
|
|
||||||
/** version */
|
/** version */
|
||||||
uint32_t ver;
|
union spdk_nvme_vs_register ver;
|
||||||
|
|
||||||
/** RTD3 resume latency */
|
/** RTD3 resume latency */
|
||||||
uint32_t rtd3r;
|
uint32_t rtd3r;
|
||||||
|
@ -67,10 +67,11 @@ nvmf_init_discovery_session_properties(struct nvmf_session *session)
|
|||||||
session->vcprop.cap.bits.mpsmin = 0; /* 2 ^ 12 + mpsmin == 4k */
|
session->vcprop.cap.bits.mpsmin = 0; /* 2 ^ 12 + mpsmin == 4k */
|
||||||
session->vcprop.cap.bits.mpsmax = 0; /* 2 ^ 12 + mpsmax == 4k */
|
session->vcprop.cap.bits.mpsmax = 0; /* 2 ^ 12 + mpsmax == 4k */
|
||||||
|
|
||||||
/* Version Supported: 1.0 */
|
/* Version Supported: 1.2.1 */
|
||||||
session->vcprop.vs.bits.mjr = 1;
|
session->vcprop.vs.bits.mjr = 1;
|
||||||
session->vcprop.vs.bits.mnr = 0;
|
session->vcprop.vs.bits.mnr = 2;
|
||||||
session->vcprop.vs.bits.ter = 0;
|
session->vcprop.vs.bits.ter = 1;
|
||||||
|
session->vcdata.ver = session->vcprop.vs;
|
||||||
|
|
||||||
session->vcprop.cc.raw = 0;
|
session->vcprop.cc.raw = 0;
|
||||||
|
|
||||||
@ -135,10 +136,13 @@ nvmf_init_nvme_session_properties(struct nvmf_session *session)
|
|||||||
session->vcprop.cap.bits.mpsmin = 0; /* 2 ^ 12 + mpsmin == 4k */
|
session->vcprop.cap.bits.mpsmin = 0; /* 2 ^ 12 + mpsmin == 4k */
|
||||||
session->vcprop.cap.bits.mpsmax = 0; /* 2 ^ 12 + mpsmax == 4k */
|
session->vcprop.cap.bits.mpsmax = 0; /* 2 ^ 12 + mpsmax == 4k */
|
||||||
|
|
||||||
/* Version Supported: 1.0 */
|
/* Report at least version 1.2.1 */
|
||||||
|
if (session->vcprop.vs.raw < SPDK_NVME_VERSION(1, 2, 1)) {
|
||||||
session->vcprop.vs.bits.mjr = 1;
|
session->vcprop.vs.bits.mjr = 1;
|
||||||
session->vcprop.vs.bits.mnr = 0;
|
session->vcprop.vs.bits.mnr = 2;
|
||||||
session->vcprop.vs.bits.ter = 0;
|
session->vcprop.vs.bits.ter = 1;
|
||||||
|
session->vcdata.ver = session->vcprop.vs;
|
||||||
|
}
|
||||||
|
|
||||||
session->vcprop.cc.raw = 0;
|
session->vcprop.cc.raw = 0;
|
||||||
session->vcprop.cc.bits.en = 0; /* Init controller disabled */
|
session->vcprop.cc.bits.en = 0; /* Init controller disabled */
|
||||||
|
Loading…
Reference in New Issue
Block a user