On Fri, 2019-04-05 at 16:04 -0700, James Smart wrote: > 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@xxxxxxxxx> > --- > drivers/scsi/lpfc/lpfc_els.c | 8 ++++++++ > drivers/scsi/lpfc/lpfc_hw.h | 4 ++++ > 2 files changed, 12 insertions(+) > > diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c > index 61348915c942..c8fb0b455f2a 100644 > --- a/drivers/scsi/lpfc/lpfc_els.c > +++ b/drivers/scsi/lpfc/lpfc_els.c > @@ -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", > diff --git a/drivers/scsi/lpfc/lpfc_hw.h b/drivers/scsi/lpfc/lpfc_hw.h > index ec1227018913..edd8f3982023 100644 > --- a/drivers/scsi/lpfc/lpfc_hw.h > +++ b/drivers/scsi/lpfc/lpfc_hw.h > @@ -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 > > /* Reviewed-by: Ewan D. Milne <emilne@xxxxxxxxxx>