nvmf: merge NVMf ctrlr data into nvme_spec.h
Change-Id: I4c88986b5eebcb30b4b209240df813f91087e4de Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
447cee868e
commit
27c38d2c0c
@ -687,6 +687,15 @@ enum spdk_nvme_identify_cns {
|
||||
SPDK_NVME_IDENTIFY_CTRLR_LIST = 0x13,
|
||||
};
|
||||
|
||||
/** NVMe over Fabrics controller model */
|
||||
enum spdk_nvmf_ctrlr_model {
|
||||
/** NVM subsystem uses dynamic controller model */
|
||||
SPDK_NVMF_CTRLR_MODEL_DYNAMIC = 0,
|
||||
|
||||
/** NVM subsystem uses static controller model */
|
||||
SPDK_NVMF_CTRLR_MODEL_STATIC = 1,
|
||||
};
|
||||
|
||||
struct __attribute__((packed)) spdk_nvme_ctrlr_data {
|
||||
/* bytes 0-255: controller capabilities and features */
|
||||
|
||||
@ -939,7 +948,29 @@ struct __attribute__((packed)) spdk_nvme_ctrlr_data {
|
||||
|
||||
uint8_t reserved5[768];
|
||||
|
||||
uint8_t nvmf_specific[256];
|
||||
/** NVMe over Fabrics-specific fields */
|
||||
struct {
|
||||
/** I/O queue command capsule supported size (16-byte units) */
|
||||
uint32_t ioccsz;
|
||||
|
||||
/** I/O queue response capsule supported size (16-byte units) */
|
||||
uint32_t iorcsz;
|
||||
|
||||
/** In-capsule data offset (16-byte units) */
|
||||
uint16_t icdoff;
|
||||
|
||||
/** Controller attributes */
|
||||
struct {
|
||||
/** Controller model: \ref spdk_nvmf_ctrlr_model */
|
||||
uint8_t ctrlr_model : 1;
|
||||
uint8_t reserved : 7;
|
||||
} ctrattr;
|
||||
|
||||
/** Maximum SGL block descriptors (0 = no limit) */
|
||||
uint8_t msdbd;
|
||||
|
||||
uint8_t reserved[244];
|
||||
} nvmf_specific;
|
||||
|
||||
/* bytes 2048-3071: power state descriptors */
|
||||
struct spdk_nvme_power_state psd[32];
|
||||
|
@ -319,16 +319,6 @@ struct spdk_nvmf_fabric_prop_set_cmd {
|
||||
};
|
||||
SPDK_STATIC_ASSERT(sizeof(struct spdk_nvmf_fabric_prop_set_cmd) == 64, "Incorrect size");
|
||||
|
||||
struct spdk_nvmf_extended_identify_ctrlr_data {
|
||||
uint32_t ioccsz;
|
||||
uint32_t iorcsz;
|
||||
uint16_t icdoff;
|
||||
uint8_t ctrattr;
|
||||
uint8_t msdbd;
|
||||
uint8_t reserved[244];
|
||||
};
|
||||
SPDK_STATIC_ASSERT(sizeof(struct spdk_nvmf_extended_identify_ctrlr_data) == 256, "Incorrect size");
|
||||
|
||||
#define SPDK_NVMF_NQN_MAX_LEN 223
|
||||
#define SPDK_NVMF_DISCOVERY_NQN "nqn.2014-08.org.nvmexpress.discovery"
|
||||
|
||||
|
@ -45,18 +45,15 @@
|
||||
static void
|
||||
nvmf_init_discovery_session_properties(struct nvmf_session *session)
|
||||
{
|
||||
struct spdk_nvmf_extended_identify_ctrlr_data *nvmfdata;
|
||||
|
||||
session->vcdata.maxcmd = g_nvmf_tgt.max_queue_depth;
|
||||
/* extended data for get log page supportted */
|
||||
session->vcdata.lpa.edlp = 1;
|
||||
session->vcdata.cntlid = 0; /* There is one controller per subsystem, so its id is 0 */
|
||||
nvmfdata = (struct spdk_nvmf_extended_identify_ctrlr_data *)session->vcdata.nvmf_specific;
|
||||
nvmfdata->ioccsz = sizeof(struct spdk_nvme_cmd) / 16;
|
||||
nvmfdata->iorcsz = sizeof(struct spdk_nvme_cpl) / 16;
|
||||
nvmfdata->icdoff = 0; /* offset starts directly after SQE */
|
||||
nvmfdata->ctrattr = 0; /* dynamic controller model */
|
||||
nvmfdata->msdbd = 1; /* target supports single SGL in capsule */
|
||||
session->vcdata.nvmf_specific.ioccsz = sizeof(struct spdk_nvme_cmd) / 16;
|
||||
session->vcdata.nvmf_specific.iorcsz = sizeof(struct spdk_nvme_cpl) / 16;
|
||||
session->vcdata.nvmf_specific.icdoff = 0; /* offset starts directly after SQE */
|
||||
session->vcdata.nvmf_specific.ctrattr.ctrlr_model = SPDK_NVMF_CTRLR_MODEL_DYNAMIC;
|
||||
session->vcdata.nvmf_specific.msdbd = 1; /* target supports single SGL in capsule */
|
||||
session->vcdata.sgls.keyed_sgl = 1;
|
||||
session->vcdata.sgls.sgl_offset = 1;
|
||||
|
||||
@ -85,7 +82,6 @@ static void
|
||||
nvmf_init_nvme_session_properties(struct nvmf_session *session)
|
||||
{
|
||||
const struct spdk_nvme_ctrlr_data *cdata;
|
||||
struct spdk_nvmf_extended_identify_ctrlr_data *nvmfdata;
|
||||
|
||||
/*
|
||||
Here we are going to initialize the features, properties, and
|
||||
@ -105,28 +101,27 @@ nvmf_init_nvme_session_properties(struct nvmf_session *session)
|
||||
session->vcdata.sgls.keyed_sgl = 1;
|
||||
session->vcdata.sgls.sgl_offset = 1;
|
||||
|
||||
nvmfdata = (struct spdk_nvmf_extended_identify_ctrlr_data *)session->vcdata.nvmf_specific;
|
||||
nvmfdata->ioccsz = sizeof(struct spdk_nvme_cmd) / 16;
|
||||
nvmfdata->iorcsz = sizeof(struct spdk_nvme_cpl) / 16;
|
||||
nvmfdata->icdoff = 0; /* offset starts directly after SQE */
|
||||
nvmfdata->ctrattr = 0; /* dynamic controller model */
|
||||
nvmfdata->msdbd = 1; /* target supports single SGL in capsule */
|
||||
session->vcdata.nvmf_specific.ioccsz = sizeof(struct spdk_nvme_cmd) / 16;
|
||||
session->vcdata.nvmf_specific.iorcsz = sizeof(struct spdk_nvme_cpl) / 16;
|
||||
session->vcdata.nvmf_specific.icdoff = 0; /* offset starts directly after SQE */
|
||||
session->vcdata.nvmf_specific.ctrattr.ctrlr_model = SPDK_NVMF_CTRLR_MODEL_DYNAMIC;
|
||||
session->vcdata.nvmf_specific.msdbd = 1; /* target supports single SGL in capsule */
|
||||
|
||||
/* TODO: this should be set by the transport */
|
||||
nvmfdata->ioccsz += SPDK_NVMF_MAX_RECV_DATA_TRANSFER_SIZE / 16;
|
||||
session->vcdata.nvmf_specific.ioccsz += SPDK_NVMF_MAX_RECV_DATA_TRANSFER_SIZE / 16;
|
||||
|
||||
SPDK_TRACELOG(SPDK_TRACE_NVMF, " ctrlr data: maxcmd %x\n",
|
||||
session->vcdata.maxcmd);
|
||||
SPDK_TRACELOG(SPDK_TRACE_NVMF, " ext ctrlr data: ioccsz %x\n",
|
||||
nvmfdata->ioccsz);
|
||||
session->vcdata.nvmf_specific.ioccsz);
|
||||
SPDK_TRACELOG(SPDK_TRACE_NVMF, " ext ctrlr data: iorcsz %x\n",
|
||||
nvmfdata->iorcsz);
|
||||
session->vcdata.nvmf_specific.iorcsz);
|
||||
SPDK_TRACELOG(SPDK_TRACE_NVMF, " ext ctrlr data: icdoff %x\n",
|
||||
nvmfdata->icdoff);
|
||||
session->vcdata.nvmf_specific.icdoff);
|
||||
SPDK_TRACELOG(SPDK_TRACE_NVMF, " ext ctrlr data: ctrattr %x\n",
|
||||
nvmfdata->ctrattr);
|
||||
*(uint8_t *)&session->vcdata.nvmf_specific.ctrattr);
|
||||
SPDK_TRACELOG(SPDK_TRACE_NVMF, " ext ctrlr data: msdbd %x\n",
|
||||
nvmfdata->msdbd);
|
||||
session->vcdata.nvmf_specific.msdbd);
|
||||
SPDK_TRACELOG(SPDK_TRACE_NVMF, " sgls data: 0x%x\n",
|
||||
*(uint32_t *)&session->vcdata.sgls);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user