linux/drivers/scsi/lpfc
James Smart e6da726eb6 scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop
commit 7f4c5a26f7 upstream.

When connected point to point, the driver does not know the FC4's supported
by the other end. In Fabrics, it can query the nameserver.  Thus the driver
must send PRLIs for the FC4s it supports and enable support based on the
acc(ept) or rej(ect) of the respective FC4 PRLI.  Currently the driver
supports SCSI and NVMe PRLIs.

Unfortunately, although the behavior is per standard, many devices have
come to expect only SCSI PRLIs. In this particular example, the NVMe PRLI
is properly RJT'd but the target decided that it must LOGO after seeing the
unexpected NVMe PRLI. The LOGO causes the sequence to restart and login is
now in an infinite failure loop.

Fix the problem by having the driver, on a pt2pt link, remember NVMe PRLI
accept or reject status across logout as long as the link stays "up".  When
retrying login, if the prior NVMe PRLI was rejected, it will not be sent on
the next login.

Link: https://lore.kernel.org/r/20220212163120.15385-1-jsmart2021@gmail.com
Cc: <stable@vger.kernel.org> # v5.4+
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-23 12:03:20 +01:00
..
lpfc_attr.c scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop 2022-02-23 12:03:20 +01:00
lpfc_attr.h
lpfc_bsg.c scsi: lpfc: Add bsg support for retrieving adapter cmf data 2021-08-24 22:56:34 -04:00
lpfc_bsg.h scsi: lpfc: Copyright updates for 14.0.0.1 patches 2021-08-24 22:56:34 -04:00
lpfc_compat.h
lpfc_crtn.h scsi: lpfc: Allow fabric node recovery if recovery is in progress before devloss 2021-11-25 09:48:29 +01:00
lpfc_ct.c scsi: lpfc: Add EDC ELS support 2021-08-24 22:56:33 -04:00
lpfc_debugfs.c scsi: lpfc: Terminate string in lpfc_debugfs_nvmeio_trc_write() 2022-01-05 12:42:34 +01:00
lpfc_debugfs.h scsi: lpfc: Copyright updates for 14.0.0.1 patches 2021-08-24 22:56:34 -04:00
lpfc_disc.h scsi: lpfc: Allow fabric node recovery if recovery is in progress before devloss 2021-11-25 09:48:29 +01:00
lpfc_els.c scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop 2022-02-23 12:03:20 +01:00
lpfc_hbadisc.c scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup 2022-01-27 11:05:00 +01:00
lpfc_hw4.h scsi: lpfc: Fix CPU to/from endian warnings introduced by ELS processing 2021-09-13 22:15:40 -04:00
lpfc_hw.h scsi: lpfc: Add EDC ELS support 2021-08-24 22:56:33 -04:00
lpfc_ids.h scsi: lpfc: Copyright updates for 14.0.0.0 patches 2021-07-27 00:06:41 -04:00
lpfc_init.c scsi: lpfc: Reduce log messages seen after firmware download 2022-02-16 12:56:40 +01:00
lpfc_logmsg.h scsi: lpfc: Copyright updates for 14.0.0.1 patches 2021-08-24 22:56:34 -04:00
lpfc_mbox.c scsi: lpfc: Revise Topology and RAS support checks for new adapters 2021-07-27 00:06:41 -04:00
lpfc_mem.c scsi: lpfc: Copyright updates for 14.0.0.1 patches 2021-08-24 22:56:34 -04:00
lpfc_nl.h
lpfc_nportdisc.c scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop 2022-02-23 12:03:20 +01:00
lpfc_nvme.c scsi: lpfc: Don't release final kref on Fport node while ABTS outstanding 2021-11-18 19:15:51 +01:00
lpfc_nvme.h scsi: lpfc: Add cmf_info sysfs entry 2021-08-24 22:56:34 -04:00
lpfc_nvmet.c scsi: lpfc: Fix possible ABBA deadlock in nvmet_xri_aborted() 2021-07-30 23:47:19 -04:00
lpfc_scsi.c scsi: lpfc: Allow fabric node recovery if recovery is in progress before devloss 2021-11-25 09:48:29 +01:00
lpfc_scsi.h scsi: lpfc: Copyright updates for 14.0.0.0 patches 2021-07-27 00:06:41 -04:00
lpfc_sli4.h scsi: lpfc: Add support for the CM framework 2021-08-24 22:56:34 -04:00
lpfc_sli.c scsi: lpfc: Fix mailbox command failure during driver initialization 2022-02-23 12:03:02 +01:00
lpfc_sli.h scsi: lpfc: Add support for the CM framework 2021-08-24 22:56:34 -04:00
lpfc_version.h scsi: lpfc: Update lpfc version to 14.0.0.1 2021-08-24 22:56:34 -04:00
lpfc_vport.c scsi: lpfc: Update copyrights for 12.8.0.7 and 12.8.0.8 changes 2021-03-04 17:37:06 -05:00
lpfc_vport.h
lpfc.h scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop 2022-02-23 12:03:20 +01:00
Makefile