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 <jsmart2...@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 <emi...@redhat.com>

Reply via email to