diff options
Diffstat (limited to 'include/linux/nvme.h')
| -rw-r--r-- | include/linux/nvme.h | 73 | 
1 files changed, 65 insertions, 8 deletions
diff --git a/include/linux/nvme.h b/include/linux/nvme.h index 818dbe9331be..bbcc83886899 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h @@ -52,15 +52,20 @@ enum {  enum {  	NVMF_TRTYPE_RDMA	= 1,	/* RDMA */  	NVMF_TRTYPE_FC		= 2,	/* Fibre Channel */ +	NVMF_TRTYPE_TCP		= 3,	/* TCP/IP */  	NVMF_TRTYPE_LOOP	= 254,	/* Reserved for host usage */  	NVMF_TRTYPE_MAX,  };  /* Transport Requirements codes for Discovery Log Page entry TREQ field */  enum { -	NVMF_TREQ_NOT_SPECIFIED	= 0,	/* Not specified */ -	NVMF_TREQ_REQUIRED	= 1,	/* Required */ -	NVMF_TREQ_NOT_REQUIRED	= 2,	/* Not Required */ +	NVMF_TREQ_NOT_SPECIFIED	= 0,		/* Not specified */ +	NVMF_TREQ_REQUIRED	= 1,		/* Required */ +	NVMF_TREQ_NOT_REQUIRED	= 2,		/* Not Required */ +#define NVME_TREQ_SECURE_CHANNEL_MASK \ +	(NVMF_TREQ_REQUIRED | NVMF_TREQ_NOT_REQUIRED) + +	NVMF_TREQ_DISABLE_SQFLOW = (1 << 2),	/* Supports SQ flow control disable */  };  /* RDMA QP Service Type codes for Discovery Log Page entry TSAS @@ -198,6 +203,11 @@ enum {  	NVME_PS_FLAGS_NON_OP_STATE	= 1 << 1,  }; +enum nvme_ctrl_attr { +	NVME_CTRL_ATTR_HID_128_BIT	= (1 << 0), +	NVME_CTRL_ATTR_TBKAS		= (1 << 6), +}; +  struct nvme_id_ctrl {  	__le16			vid;  	__le16			ssvid; @@ -214,7 +224,11 @@ struct nvme_id_ctrl {  	__le32			rtd3e;  	__le32			oaes;  	__le32			ctratt; -	__u8			rsvd100[156]; +	__u8			rsvd100[28]; +	__le16			crdt1; +	__le16			crdt2; +	__le16			crdt3; +	__u8			rsvd134[122];  	__le16			oacs;  	__u8			acl;  	__u8			aerl; @@ -481,12 +495,21 @@ enum {  	NVME_AER_NOTICE_NS_CHANGED	= 0x00,  	NVME_AER_NOTICE_FW_ACT_STARTING = 0x01,  	NVME_AER_NOTICE_ANA		= 0x03, +	NVME_AER_NOTICE_DISC_CHANGED	= 0xf0,  };  enum { -	NVME_AEN_CFG_NS_ATTR		= 1 << 8, -	NVME_AEN_CFG_FW_ACT		= 1 << 9, -	NVME_AEN_CFG_ANA_CHANGE		= 1 << 11, +	NVME_AEN_BIT_NS_ATTR		= 8, +	NVME_AEN_BIT_FW_ACT		= 9, +	NVME_AEN_BIT_ANA_CHANGE		= 11, +	NVME_AEN_BIT_DISC_CHANGE	= 31, +}; + +enum { +	NVME_AEN_CFG_NS_ATTR		= 1 << NVME_AEN_BIT_NS_ATTR, +	NVME_AEN_CFG_FW_ACT		= 1 << NVME_AEN_BIT_FW_ACT, +	NVME_AEN_CFG_ANA_CHANGE		= 1 << NVME_AEN_BIT_ANA_CHANGE, +	NVME_AEN_CFG_DISC_CHANGE	= 1 << NVME_AEN_BIT_DISC_CHANGE,  };  struct nvme_lba_range_type { @@ -639,7 +662,12 @@ struct nvme_common_command {  	__le32			cdw2[2];  	__le64			metadata;  	union nvme_data_ptr	dptr; -	__le32			cdw10[6]; +	__le32			cdw10; +	__le32			cdw11; +	__le32			cdw12; +	__le32			cdw13; +	__le32			cdw14; +	__le32			cdw15;  };  struct nvme_rw_command { @@ -738,6 +766,15 @@ enum {  	NVME_HOST_MEM_RETURN	= (1 << 1),  }; +struct nvme_feat_host_behavior { +	__u8 acre; +	__u8 resv1[511]; +}; + +enum { +	NVME_ENABLE_ACRE	= 1, +}; +  /* Admin commands */  enum nvme_admin_opcode { @@ -792,6 +829,7 @@ enum {  	NVME_FEAT_RRL		= 0x12,  	NVME_FEAT_PLM_CONFIG	= 0x13,  	NVME_FEAT_PLM_WINDOW	= 0x14, +	NVME_FEAT_HOST_BEHAVIOR	= 0x16,  	NVME_FEAT_SW_PROGRESS	= 0x80,  	NVME_FEAT_HOST_ID	= 0x81,  	NVME_FEAT_RESV_MASK	= 0x82, @@ -1030,6 +1068,10 @@ struct nvmf_disc_rsp_page_hdr {  	struct nvmf_disc_rsp_page_entry entries[0];  }; +enum { +	NVME_CONNECT_DISABLE_SQFLOW	= (1 << 2), +}; +  struct nvmf_connect_command {  	__u8		opcode;  	__u8		resv1; @@ -1126,6 +1168,20 @@ struct nvme_command {  	};  }; +struct nvme_error_slot { +	__le64		error_count; +	__le16		sqid; +	__le16		cmdid; +	__le16		status_field; +	__le16		param_error_location; +	__le64		lba; +	__le32		nsid; +	__u8		vs; +	__u8		resv[3]; +	__le64		cs; +	__u8		resv2[24]; +}; +  static inline bool nvme_is_write(struct nvme_command *cmd)  {  	/* @@ -1243,6 +1299,7 @@ enum {  	NVME_SC_ANA_TRANSITION		= 0x303,  	NVME_SC_HOST_PATH_ERROR		= 0x370, +	NVME_SC_CRD			= 0x1800,  	NVME_SC_DNR			= 0x4000,  };  |