• James Smart's avatar
    scsi: lpfc: Fix PRLI retry handling when target rejects it. · dea37e82
    James Smart authored
    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: default avatarDick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    dea37e82
lpfc_els.c 295 KB