linux_dsm_epyc7002/drivers/scsi/lpfc
James Smart be0709e449 scsi: lpfc: Fix incomplete NVME discovery when target
NVMe device re-discovery does not complete. Dev_loss_tmo messages seen on
initiator after recovery from a link disturbance.

The failing case is the following:

When the driver (as a NVME target) receives a PLOGI, the driver initiates
an "unreg rpi" mailbox command. While the mailbox command is in progress,
the driver requests that an ACC be sent to the initiator. The target's ACC
is received by the initiator and the initiator then transmits a PLOGI. The
driver receives the PLOGI prior to receiving the completion for the PLOGI
response WQE that sent the ACC. (Different delivery sources from the hw so
the race is very possible). Given the PLOGI is prior to the ACC completion
(signifying PLOGI exchange complete), the driver LS_RJT's the PRLI. The
"unreg rpi" mailbox then completes. Since PRLI has been received, the
driver transmits a PLOGI to restart discovery, which the initiator then
ACC's.  If the driver processes the (re)PLOGI ACC prior to the completing
the handling for the earlier ACC it sent the intiators original PLOGI,
there is no state change for completion of the (re)PLOGI. The ndlp remains
in "PLOGI Sent" and the initiator continues sending PRLI's which are
rejected by the target until timeout or retry is reached.

Fix by: When in target mode, defer sending an ACC for the received PLOGI
until unreg RPI completes.

Link: https://lore.kernel.org/r/20191218235808.31922-2-jsmart2021@gmail.com
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-12-21 13:42:41 -05:00
..
lpfc_attr.c scsi: lpfc: Change default IRQ model on AMD architectures 2019-11-06 00:04:04 -05:00
lpfc_attr.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_bsg.c scsi: lpfc: Fix memory leak on lpfc_bsg_write_ebuf_set func 2019-12-09 18:07:34 -05:00
lpfc_bsg.h scsi: lpfc: Update Copyright in driver version 2019-03-19 13:15:10 -04:00
lpfc_compat.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_crtn.h scsi: lpfc: fix inlining of lpfc_sli4_cleanup_poll_list() 2019-11-12 22:21:33 -05:00
lpfc_ct.c scsi: lpfc: Add additional discovery log messages 2019-10-24 21:02:06 -04:00
lpfc_debugfs.c scsi: lpfc: Make lpfc_debugfs_ras_log_data static 2019-10-28 22:02:28 -04:00
lpfc_debugfs.h scsi: lpfc: Merge per-protocol WQ/CQ pairs into single per-cpu pair 2019-08-19 22:41:12 -04:00
lpfc_disc.h scsi: lpfc: Add NVMe sequence level error recovery support 2019-08-19 22:41:12 -04:00
lpfc_els.c scsi: lpfc: fix: Coverity: lpfc_cmpl_els_rsp(): Null pointer dereferences 2019-11-12 22:21:33 -05:00
lpfc_hbadisc.c scsi: lpfc: Clarify FAWNN error message 2019-11-06 00:04:04 -05:00
lpfc_hw4.h scsi: lpfc: Add enablement of multiple adapter dumps 2019-11-06 00:04:04 -05:00
lpfc_hw.h scsi: lpfc: Fix ELS field alignments 2019-08-19 22:41:08 -04:00
lpfc_ids.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_init.c SCSI misc on 20191207 2019-12-08 12:23:42 -08:00
lpfc_logmsg.h scsi: lpfc: Add log macros to allow print by serverity or verbosity setting 2019-10-24 21:02:05 -04:00
lpfc_mbox.c scsi: lpfc: Add FC-AL support to lpe32000 models 2019-10-24 21:02:06 -04:00
lpfc_mem.c scsi: lpfc: Remove lock contention target write path 2019-10-24 21:02:05 -04:00
lpfc_nl.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_nportdisc.c scsi: lpfc: Fix incomplete NVME discovery when target 2019-12-21 13:42:41 -05:00
lpfc_nvme.c for-linus-20191212 2019-12-13 14:27:19 -08:00
lpfc_nvme.h SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_nvmet.c scsi: lpfc: lpfc_nvmet: Fix Use plain integer as NULL pointer 2019-10-24 21:12:08 -04:00
lpfc_nvmet.h scsi: lpfc: Remove lock contention target write path 2019-10-24 21:02:05 -04:00
lpfc_scsi.c SCSI misc on 20191130 2019-12-02 13:37:02 -08:00
lpfc_scsi.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_sli4.h scsi: lpfc: Change default IRQ model on AMD architectures 2019-11-06 00:04:04 -05:00
lpfc_sli.c SCSI misc on 20191130 2019-12-02 13:37:02 -08:00
lpfc_sli.h scsi: lpfc: Fix bad ndlp ptr in xri aborted handling 2019-10-24 21:02:04 -04:00
lpfc_version.h scsi: lpfc: Update lpfc version to 12.6.0.2 2019-11-12 22:21:33 -05:00
lpfc_vport.c scsi: lpfc: Fix issuing init_vpi mbox on SLI-3 card 2019-08-19 22:41:09 -04:00
lpfc_vport.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc.h scsi: lpfc: Change default IRQ model on AMD architectures 2019-11-06 00:04:04 -05:00
Makefile scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00