nvmf: add discovery log definition based on the NVMF specification

Change-Id: I1af9e59daa927372287988e22c2631b85f0de81b
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
Changpeng Liu 2016-06-22 13:11:38 +08:00 committed by Daniel Verkamp
parent 10a35fa2dc
commit 36981693aa

View File

@ -87,6 +87,74 @@ enum spdk_nvmf_fabric_cmd_status_code {
SPDK_NVMF_FABRIC_SC_AUTH_REQUIRED = 0x91,
};
/**
* RDMA Queue Pair service types
*/
enum spdk_nvmf_rdma_qp_service_types {
/** Reliable connected */
SPDK_NVMF_QP_TYPE_RELIABLE_CONNECTED = 0x1,
/** Reliable datagram */
SPDK_NVMF_OQ_TYPE_RELIABLE_DATAGRAM = 0x2,
};
/**
* RDMA provider types
*/
enum spdk_nvmf_rdma_provider_types {
SPDK_NVMF_RDMA_NO_PROVIDER = 0x1,
SPDK_NVMF_RDMA_PRTYPE_IB = 0x2,
SPDK_NVMF_RDMA_PRTYPE_ROCE = 0x3,
SPDK_NVMF_RDMA_PRTYPE_ROCE2 = 0x4,
SPDK_NVMF_RDMA_PRTYPE_IWARP = 0x5,
};
/**
* RDMA connection management service types
*/
enum spdk_nvmf_rdma_connection_mgmt_service {
/** Sockets based endpoint addressing */
SPDK_NVMF_RDMA_CMS_RDMA_CM = 0x1,
};
/**
* NVMe over Fabrics transport types
*/
enum spdk_nvmf_transport_types {
SPDK_NVMF_TRANS_RDMA = 0x1,
SPDK_NVMF_TRANS_FC = 0x2,
SPDK_NVMF_TRANS_INTRA_HOST = 0xfe,
};
/**
* Address family types
*/
enum spdk_nvmf_address_family_types {
SPDK_NVMF_ADDR_FAMILY_IPV4 = 0x1,
SPDK_NVMF_ADDR_FAMILY_IPV6 = 0x2,
SPDK_NVMF_ADDR_FAMILY_IB = 0x3,
SPDK_NVMF_ADDR_FAMILY_FC = 0x4,
SPDK_NVMF_ADDR_FAMILY_INTRA_HOST = 0xfe,
};
/**
* NVM subsystem types
*/
enum spdk_nvmf_subsystem_types {
/** Discovery type for NVM subsystem */
SPDK_NVMF_SUB_DISCOVERY = 0x1,
/** NVMe type for NVM subsystem */
SPDK_NVMF_SUB_NVME = 0x2,
};
/**
* Connections shall be made over a fabric secure channel
*/
enum spdk_nvmf_tansport_requirements {
SPDK_NVMF_TREQ_NOT_SPECIFIED = 0x0,
SPDK_NVMF_TREQ_REQUIRED = 0x1,
SPDK_NVMF_TREQ_NOT_REQUIRED = 0x2,
};
struct spdk_nvmf_fabric_auth_recv_cmd {
uint8_t opcode;
uint8_t reserved1;
@ -442,7 +510,16 @@ struct spdk_nvmf_discovery_identify_data {
};
SPDK_STATIC_ASSERT(sizeof(struct spdk_nvmf_discovery_identify_data) == 4096, "Incorrect size");
#define SPDK_NVMF_LOG_PAGE_DISCOVERY 0x70
struct spdk_nvmf_rdma_transport_specific_address {
uint8_t rdma_qptype; /* see spdk_nvmf_rdma_qp_service_types */
uint8_t rdma_prtype; /* see spdk_nvmf_rdma_provider_types */
uint8_t rdma_cms; /* see spdk_nvmf_rdma_connection_mgmt_service */
uint8_t reserved0[5];
uint16_t rdma_pkey;
uint8_t reserved2[246];
};
SPDK_STATIC_ASSERT(sizeof(struct spdk_nvmf_rdma_transport_specific_address) == 256,
"Incorrect size");
struct spdk_nvmf_discovery_log_page_entry {
uint8_t trtype; /* transport type */
@ -456,7 +533,9 @@ struct spdk_nvmf_discovery_log_page_entry {
uint8_t reserved1[192];
uint8_t subnqn[256];
uint8_t traddr[256];
uint8_t tsas[256];
union {
struct spdk_nvmf_rdma_transport_specific_address rdma;
} tsas;
};
SPDK_STATIC_ASSERT(sizeof(struct spdk_nvmf_discovery_log_page_entry) == 1024, "Incorrect size");
@ -499,16 +578,7 @@ SPDK_STATIC_ASSERT(sizeof(struct spdk_nvmf_keyed_sgl_descriptor) == 16, "Incorre
#define SPDK_NVME_SGL_SUBTYPE_INVALIDATE_KEY 0xF
struct spdk_nvmf_rdma_transport_specific_address {
uint8_t rdma_qptype; /* see nvmf_rdma_qp_service_types */
uint8_t rdma_prtype; /* see nvmf_rdma_provider_types */
uint8_t rdma_cms; /* nvmf_rdma_connection_mgmt_service */
uint8_t reserved0[5];
uint16_t rdma_pkey;
uint8_t reserved2[246];
};
SPDK_STATIC_ASSERT(sizeof(struct spdk_nvmf_rdma_transport_specific_address) == 256,
"Incorrect size");
struct spdk_nvmf_rdma_request_private_data {
uint16_t recfmt; /* record format */