• James Smart's avatar
    scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop · 7f4c5a26
    James Smart authored
    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: default avatarEwan D. Milne <emilne@redhat.com>
    Signed-off-by: default avatarJames Smart <jsmart2021@gmail.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    7f4c5a26
lpfc_attr.c 230 KB