]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: lpfc: Fix PRLI retry handling when target rejects it.
authorJames Smart <jsmart2021@gmail.com>
Fri, 2 Jun 2017 04:07:07 +0000 (21:07 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 13 Jun 2017 01:37:31 +0000 (21:37 -0400)
commit0a8d73c975b49b7fd54000fde8d2997cc4add50d
tree8d7df483e6d14c9f77341272d8a64c753a775e4f
parente5dfd676316a7e488da094717a95ab7b64b17155
scsi: lpfc: Fix PRLI retry handling when target rejects it.

The nvmet driver was rejecting the initiator's PRLI because its reg_rpi
for the PLOGI was still outstanding.  The initiator would resend the
PRLI without delay and get the same answer.  The PRLI retries would
exhaust causing the nvme initiator to set the nvmet ndlp to UNMAPPED.

The driver's lpfc_els_retry handler did not have a policy for an LS_RJT
with explanation CMD_IN_PROGRESS for PRLI or NVME_PRLI.  This caused the
delay to remain at 0 but retry set 1.

Fix: When the ELS response is LS_RJT, TPC and the command was PRLI or
NVME_PRLI, just set the delay to 1000 mS to get a 1 second delay on the
PRLI retry.  This was enough to allow the REG_RPI to complete at the
target.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_els.c