scsi: lpfc: add support for posting FC events on FPIN reception
authorJames Smart <jsmart2021@gmail.com>
Fri, 5 Apr 2019 23:04:23 +0000 (16:04 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 9 Apr 2019 01:29:16 +0000 (21:29 -0400)
This patch adds support to recognize FPIN ELS's that are received.  When
one is received, the fc transport will be called to handle the the FPIN.

Signed-off-by: James Smart <jsmart2021@gmail.com>
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_els.c
drivers/scsi/lpfc/lpfc_hw.h

index 61348915c9428e58962420db04e18d6d39f09f96..c8fb0b455f2a8b451baf19531e08bfb21b681148 100644 (file)
@@ -8450,6 +8450,14 @@ lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
                rjt_err = LSRJT_UNABLE_TPC;
                rjt_exp = LSEXP_INVALID_OX_RX;
                break;
+       case ELS_CMD_FPIN:
+               /*
+                * Received FPIN from fabric - pass it to the
+                * transport FPIN handler.
+                */
+               fc_host_fpin_rcv(shost, elsiocb->iocb.unsli3.rcvsli3.acc_len,
+                               (char *)payload);
+               break;
        default:
                lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL,
                        "RCV ELS cmd:     cmd:x%x did:x%x/ste:x%x",
index ec1227018913b9bc5a91642037a6843abdfa6926..edd8f398202363b5dc133c77980f96b064f18e74 100644 (file)
@@ -560,6 +560,8 @@ struct fc_vft_header {
 #define fc_vft_hdr_hopct_WORD          word1
 };
 
+#include <uapi/scsi/fc/fc_els.h>
+
 /*
  *  Extended Link Service LS_COMMAND codes (Payload Word 0)
  */
@@ -603,6 +605,7 @@ struct fc_vft_header {
 #define ELS_CMD_RNID      0x78000000
 #define ELS_CMD_LIRR      0x7A000000
 #define ELS_CMD_LCB      0x81000000
+#define ELS_CMD_FPIN     0x16000000
 #else  /*  __LITTLE_ENDIAN_BITFIELD */
 #define ELS_CMD_MASK      0xffff
 #define ELS_RSP_MASK      0xff
@@ -643,6 +646,7 @@ struct fc_vft_header {
 #define ELS_CMD_RNID      0x78
 #define ELS_CMD_LIRR      0x7A
 #define ELS_CMD_LCB      0x81
+#define ELS_CMD_FPIN     ELS_FPIN
 #endif
 
 /*