nvme: add cdw10 union data structure
NVMe command dword 10 and dword 11 have multiple definitions for different commands, add a union data structure here then we can replace the hardcoded cdw10/cdw11 with command specific structure in SPDK NVMe driver. For now add dword 10 for the first step. Change-Id: Ie2c58b3039cfa5843d44224d31a38850ff577ed0 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475207 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
bcfb51b124
commit
bae1750bef
@ -462,6 +462,127 @@ enum spdk_nvme_cc_ams {
|
||||
SPDK_NVME_CC_AMS_VS = 0x7, /**< vendor specific */
|
||||
};
|
||||
|
||||
union spdk_nvme_cmd_cdw10 {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
/* Controller or Namespace Structure */
|
||||
uint32_t cns : 8;
|
||||
uint32_t reserved : 8;
|
||||
/* Controller Identifier */
|
||||
uint32_t cntid : 16;
|
||||
} identify;
|
||||
|
||||
struct {
|
||||
/* Log Page Identifier */
|
||||
uint32_t lid : 8;
|
||||
/* Log Specific Field */
|
||||
uint32_t lsp : 4;
|
||||
uint32_t reserved : 3;
|
||||
/* Retain Asynchronous Event */
|
||||
uint32_t rae : 1;
|
||||
/* Number of Dwords Lower */
|
||||
uint32_t numdl : 16;
|
||||
} get_log_page;
|
||||
|
||||
struct {
|
||||
/* Submission Queue Identifier */
|
||||
uint32_t sqid : 16;
|
||||
/* Command Identifier */
|
||||
uint32_t cid : 16;
|
||||
} abort;
|
||||
|
||||
struct {
|
||||
/* NVMe Security Specific Field */
|
||||
uint32_t nssf : 8;
|
||||
/* SP Specific 0 */
|
||||
uint32_t spsp0 : 8;
|
||||
/* SP Specific 1 */
|
||||
uint32_t spsp1 : 8;
|
||||
/* Security Protocol */
|
||||
uint32_t secp : 8;
|
||||
} sec_send_recv;
|
||||
|
||||
struct {
|
||||
/* Queue Identifier */
|
||||
uint32_t qid : 16;
|
||||
/* Queue Size */
|
||||
uint32_t qsize : 16;
|
||||
} create_io_q;
|
||||
|
||||
struct {
|
||||
/* Queue Identifier */
|
||||
uint32_t qid : 16;
|
||||
uint32_t reserved : 16;
|
||||
} delete_io_q;
|
||||
|
||||
struct {
|
||||
/* Feature Identifier */
|
||||
uint32_t fid : 8;
|
||||
/* Select */
|
||||
uint32_t sel : 3;
|
||||
uint32_t reserved : 21;
|
||||
} get_features;
|
||||
|
||||
struct {
|
||||
/* Feature Identifier */
|
||||
uint32_t fid : 8;
|
||||
uint32_t reserved : 23;
|
||||
/* Save */
|
||||
uint32_t sv : 1;
|
||||
} set_features;
|
||||
|
||||
struct {
|
||||
/* Select */
|
||||
uint32_t sel : 4;
|
||||
uint32_t reserved : 28;
|
||||
} ns_attach;
|
||||
|
||||
struct {
|
||||
/* Select */
|
||||
uint32_t sel : 4;
|
||||
uint32_t reserved : 28;
|
||||
} ns_manage;
|
||||
|
||||
struct {
|
||||
/* Number of Ranges */
|
||||
uint32_t nr : 8;
|
||||
uint32_t reserved : 24;
|
||||
} dsm;
|
||||
|
||||
struct {
|
||||
/* Reservation Register Action */
|
||||
uint32_t rrega : 3;
|
||||
/* Ignore Existing Key */
|
||||
uint32_t iekey : 1;
|
||||
uint32_t reserved : 26;
|
||||
/* Change Persist Through Power Loss State */
|
||||
uint32_t cptpl : 2;
|
||||
} resv_register;
|
||||
|
||||
struct {
|
||||
/* Reservation Release Action */
|
||||
uint32_t rrela : 3;
|
||||
/* Ignore Existing Key */
|
||||
uint32_t iekey : 1;
|
||||
uint32_t reserved1 : 4;
|
||||
/* Reservation Type */
|
||||
uint32_t rtype : 8;
|
||||
uint32_t reserved2 : 16;
|
||||
} resv_release;
|
||||
|
||||
struct {
|
||||
/* Reservation Acquire Action */
|
||||
uint32_t racqa : 3;
|
||||
/* Ignore Existing Key */
|
||||
uint32_t iekey : 1;
|
||||
uint32_t reserved1 : 4;
|
||||
/* Reservation Type */
|
||||
uint32_t rtype : 8;
|
||||
uint32_t reserved2 : 16;
|
||||
} resv_acquire;
|
||||
};
|
||||
SPDK_STATIC_ASSERT(sizeof(union spdk_nvme_cmd_cdw10) == 4, "Incorrect size");
|
||||
|
||||
struct spdk_nvme_cmd {
|
||||
/* dword 0 */
|
||||
uint16_t opc : 8; /* opcode */
|
||||
|
Loading…
Reference in New Issue
Block a user