diff mbox series

[1/4] scsi fc: add FPIN ELS definition

Message ID 20190405230423.4316-2-jsmart2021@gmail.com (mailing list archive)
State Mainlined
Commit a7dff3ad4787381a3aa831d558fb720b8f354435
Headers show
Series scsi fc FPIN event support | expand

Commit Message

James Smart April 5, 2019, 11:04 p.m. UTC
T11 has introduced a new Fabric Notifications mechanism whereby the
fabric can notify a port of events occurring in the fabric.
The notifications are given by the FPIN ELS.

Add the FPIN ELS definitions to the kernel.

Signed-off-by: James Smart <jsmart2021@gmail.com>
---
 include/uapi/scsi/fc/fc_els.h | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

Comments

Ewan D. Milne April 8, 2019, 7:48 p.m. UTC | #1
On Fri, 2019-04-05 at 16:04 -0700, James Smart wrote:
> T11 has introduced a new Fabric Notifications mechanism whereby the
> fabric can notify a port of events occurring in the fabric.
> The notifications are given by the FPIN ELS.
> 
> Add the FPIN ELS definitions to the kernel.
> 
> Signed-off-by: James Smart <jsmart2021@gmail.com>
> ---
>  include/uapi/scsi/fc/fc_els.h | 33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
> 
> diff --git a/include/uapi/scsi/fc/fc_els.h b/include/uapi/scsi/fc/fc_els.h
> index b7e0a5ed40de..a81c53508cc6 100644
> --- a/include/uapi/scsi/fc/fc_els.h
> +++ b/include/uapi/scsi/fc/fc_els.h
> @@ -52,6 +52,7 @@ enum fc_els_cmd {
>  	ELS_RRQ =	0x12,	/* reinstate recovery qualifier */
>  	ELS_REC =	0x13,	/* read exchange concise */
>  	ELS_SRR =	0x14,	/* sequence retransmission request */
> +	ELS_FPIN =	0x16,	/* Fabric Performance Impact Notification */
>  	ELS_PRLI =	0x20,	/* process login */
>  	ELS_PRLO =	0x21,	/* process logout */
>  	ELS_SCN =	0x22,	/* state change notification */
> @@ -119,6 +120,7 @@ enum fc_els_cmd {
>  	[ELS_RRQ] =	"RRQ",			\
>  	[ELS_REC] =	"REC",			\
>  	[ELS_SRR] =	"SRR",			\
> +	[ELS_FPIN] =	"FPIN",			\
>  	[ELS_PRLI] =	"PRLI",			\
>  	[ELS_PRLO] =	"PRLO",			\
>  	[ELS_SCN] =	"SCN",			\
> @@ -829,4 +831,35 @@ enum fc_els_clid_ic {
>  	ELS_CLID_IC_LIP =	8,	/* receiving LIP */
>  };
>  
> +
> +/*
> + * Fabric Notification Descriptor Tag values
> + */
> +enum fc_fn_dtag {
> +	ELS_FN_DTAG_LNK_INTEGRITY =	0x00020001,	/* Link Integrity */
> +	ELS_FN_DTAG_PEER_CONGEST =	0x00020003,	/* Peer Congestion */
> +	ELS_FN_DTAG_CONGESTION =	0x00020004,	/* Congestion */
> +};
> +
> +/*
> + * Fabric Notification Descriptor
> + */
> +struct fc_fn_desc {
> +	__be32		fn_desc_tag;	/* Notification Descriptor Tag */
> +	__be32		fn_desc_value_len; /* Length of Descriptor Value field
> +					    * (in bytes)
> +					    */
> +	__u8		fn_desc_value[0];  /* Descriptor Value */
> +};
> +
> +/*
> + * ELS_FPIN - Fabric Performance Impact Notification
> + */
> +struct fc_els_fpin {
> +	__u8		fpin_cmd;	/* command (0x16) */
> +	__u8		fpin_zero[3];	/* specified as zero - part of cmd */
> +	__be32		fpin_desc_cnt;	/* count of descriptors */
> +	struct fc_fn_desc	fpin_desc[0];	/* Descriptor list */
> +};
> +
>  #endif /* _FC_ELS_H_ */

Reviewed-by: Ewan D. Milne <emilne@redhat.com>
diff mbox series

Patch

diff --git a/include/uapi/scsi/fc/fc_els.h b/include/uapi/scsi/fc/fc_els.h
index b7e0a5ed40de..a81c53508cc6 100644
--- a/include/uapi/scsi/fc/fc_els.h
+++ b/include/uapi/scsi/fc/fc_els.h
@@ -52,6 +52,7 @@  enum fc_els_cmd {
 	ELS_RRQ =	0x12,	/* reinstate recovery qualifier */
 	ELS_REC =	0x13,	/* read exchange concise */
 	ELS_SRR =	0x14,	/* sequence retransmission request */
+	ELS_FPIN =	0x16,	/* Fabric Performance Impact Notification */
 	ELS_PRLI =	0x20,	/* process login */
 	ELS_PRLO =	0x21,	/* process logout */
 	ELS_SCN =	0x22,	/* state change notification */
@@ -119,6 +120,7 @@  enum fc_els_cmd {
 	[ELS_RRQ] =	"RRQ",			\
 	[ELS_REC] =	"REC",			\
 	[ELS_SRR] =	"SRR",			\
+	[ELS_FPIN] =	"FPIN",			\
 	[ELS_PRLI] =	"PRLI",			\
 	[ELS_PRLO] =	"PRLO",			\
 	[ELS_SCN] =	"SCN",			\
@@ -829,4 +831,35 @@  enum fc_els_clid_ic {
 	ELS_CLID_IC_LIP =	8,	/* receiving LIP */
 };
 
+
+/*
+ * Fabric Notification Descriptor Tag values
+ */
+enum fc_fn_dtag {
+	ELS_FN_DTAG_LNK_INTEGRITY =	0x00020001,	/* Link Integrity */
+	ELS_FN_DTAG_PEER_CONGEST =	0x00020003,	/* Peer Congestion */
+	ELS_FN_DTAG_CONGESTION =	0x00020004,	/* Congestion */
+};
+
+/*
+ * Fabric Notification Descriptor
+ */
+struct fc_fn_desc {
+	__be32		fn_desc_tag;	/* Notification Descriptor Tag */
+	__be32		fn_desc_value_len; /* Length of Descriptor Value field
+					    * (in bytes)
+					    */
+	__u8		fn_desc_value[0];  /* Descriptor Value */
+};
+
+/*
+ * ELS_FPIN - Fabric Performance Impact Notification
+ */
+struct fc_els_fpin {
+	__u8		fpin_cmd;	/* command (0x16) */
+	__u8		fpin_zero[3];	/* specified as zero - part of cmd */
+	__be32		fpin_desc_cnt;	/* count of descriptors */
+	struct fc_fn_desc	fpin_desc[0];	/* Descriptor list */
+};
+
 #endif /* _FC_ELS_H_ */