diff mbox series

[3/4] scsi_transport_fc: Add FPIN fc event codes

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

Commit Message

James Smart April 5, 2019, 11:04 p.m. UTC
Add a new event type - an FPIN event.

Add a new routine, fc_host_fpin_rcv(), that lldd's call when
an FPIN is received. The routine processes the fpin payload.
For now, the routine only logs an FPIN event.

Signed-off-by: Muneendra <muneendra.kumar@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
---
 drivers/scsi/scsi_transport_fc.c | 18 ++++++++++++++++++
 include/scsi/scsi_transport_fc.h |  2 ++
 2 files changed, 20 insertions(+)

Comments

Ewan D. Milne April 8, 2019, 7:49 p.m. UTC | #1
On Fri, 2019-04-05 at 16:04 -0700, James Smart wrote:
> Add a new event type - an FPIN event.
> 
> Add a new routine, fc_host_fpin_rcv(), that lldd's call when
> an FPIN is received. The routine processes the fpin payload.
> For now, the routine only logs an FPIN event.
> 
> Signed-off-by: Muneendra <muneendra.kumar@broadcom.com>
> Signed-off-by: James Smart <jsmart2021@gmail.com>
> ---
>  drivers/scsi/scsi_transport_fc.c | 18 ++++++++++++++++++
>  include/scsi/scsi_transport_fc.h |  2 ++
>  2 files changed, 20 insertions(+)
> 
> diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
> index 9bea4dfbe128..14e510071046 100644
> --- a/drivers/scsi/scsi_transport_fc.c
> +++ b/drivers/scsi/scsi_transport_fc.c
> @@ -147,6 +147,7 @@ static const struct {
>  	{ FCH_EVT_PORT_OFFLINE,		"port_offline" },
>  	{ FCH_EVT_PORT_FABRIC,		"port_fabric" },
>  	{ FCH_EVT_LINK_UNKNOWN,		"link_unknown" },
> +	{ FCH_EVT_LINK_FPIN,		"link_FPIN" },
>  	{ FCH_EVT_VENDOR_UNIQUE,	"vendor_unique" },
>  };
>  fc_enum_name_search(host_event_code, fc_host_event_code,
> @@ -640,6 +641,23 @@ fc_host_post_vendor_event(struct Scsi_Host *shost, u32 event_number,
>  }
>  EXPORT_SYMBOL(fc_host_post_vendor_event);
>  
> +/**
> + * fc_host_rcv_fpin - routine to process a received FPIN.
> + * @shost:		host the FPIN was received on
> + * @fpin_len:		length of FPIN payload, in bytes
> + * @fpin_buf:		pointer to FPIN payload
> + *
> + * Notes:
> + *	This routine assumes no locks are held on entry.
> + */
> +void
> +fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf)
> +{
> +	fc_host_post_fc_event(shost, fc_get_event_number(),
> +				FCH_EVT_LINK_FPIN, fpin_len, fpin_buf, 0);
> +}
> +EXPORT_SYMBOL(fc_host_fpin_rcv);
> +
>  
>  static __init int fc_transport_init(void)
>  {
> diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h
> index 7998b322ed13..3bd59256db3a 100644
> --- a/include/scsi/scsi_transport_fc.h
> +++ b/include/scsi/scsi_transport_fc.h
> @@ -473,6 +473,7 @@ enum fc_host_event_code  {
>  	FCH_EVT_PORT_ONLINE		= 0x202,
>  	FCH_EVT_PORT_FABRIC		= 0x204,
>  	FCH_EVT_LINK_UNKNOWN		= 0x500,
> +	FCH_EVT_LINK_FPIN		= 0x501,
>  	FCH_EVT_VENDOR_UNIQUE		= 0xffff,
>  };
>  
> @@ -808,6 +809,7 @@ void fc_host_post_fc_event(struct Scsi_Host *shost, u32 event_number,
>  	 * Note: when calling fc_host_post_fc_event(), vendor_id may be
>  	 *   specified as 0.
>  	 */
> +void fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf);
>  struct fc_vport *fc_vport_create(struct Scsi_Host *shost, int channel,
>  		struct fc_vport_identifiers *);
>  int fc_vport_terminate(struct fc_vport *vport);

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

Patch

diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index 9bea4dfbe128..14e510071046 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -147,6 +147,7 @@  static const struct {
 	{ FCH_EVT_PORT_OFFLINE,		"port_offline" },
 	{ FCH_EVT_PORT_FABRIC,		"port_fabric" },
 	{ FCH_EVT_LINK_UNKNOWN,		"link_unknown" },
+	{ FCH_EVT_LINK_FPIN,		"link_FPIN" },
 	{ FCH_EVT_VENDOR_UNIQUE,	"vendor_unique" },
 };
 fc_enum_name_search(host_event_code, fc_host_event_code,
@@ -640,6 +641,23 @@  fc_host_post_vendor_event(struct Scsi_Host *shost, u32 event_number,
 }
 EXPORT_SYMBOL(fc_host_post_vendor_event);
 
+/**
+ * fc_host_rcv_fpin - routine to process a received FPIN.
+ * @shost:		host the FPIN was received on
+ * @fpin_len:		length of FPIN payload, in bytes
+ * @fpin_buf:		pointer to FPIN payload
+ *
+ * Notes:
+ *	This routine assumes no locks are held on entry.
+ */
+void
+fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf)
+{
+	fc_host_post_fc_event(shost, fc_get_event_number(),
+				FCH_EVT_LINK_FPIN, fpin_len, fpin_buf, 0);
+}
+EXPORT_SYMBOL(fc_host_fpin_rcv);
+
 
 static __init int fc_transport_init(void)
 {
diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h
index 7998b322ed13..3bd59256db3a 100644
--- a/include/scsi/scsi_transport_fc.h
+++ b/include/scsi/scsi_transport_fc.h
@@ -473,6 +473,7 @@  enum fc_host_event_code  {
 	FCH_EVT_PORT_ONLINE		= 0x202,
 	FCH_EVT_PORT_FABRIC		= 0x204,
 	FCH_EVT_LINK_UNKNOWN		= 0x500,
+	FCH_EVT_LINK_FPIN		= 0x501,
 	FCH_EVT_VENDOR_UNIQUE		= 0xffff,
 };
 
@@ -808,6 +809,7 @@  void fc_host_post_fc_event(struct Scsi_Host *shost, u32 event_number,
 	 * Note: when calling fc_host_post_fc_event(), vendor_id may be
 	 *   specified as 0.
 	 */
+void fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf);
 struct fc_vport *fc_vport_create(struct Scsi_Host *shost, int channel,
 		struct fc_vport_identifiers *);
 int fc_vport_terminate(struct fc_vport *vport);