• James Smart's avatar
    scsi: lpfc: Fix broken Credit Recovery after driver load · 835214f5
    James Smart authored
    When driver is set to enable bb credit recovery, the switch displayed the
    setting as inactive.  If the link bounces, it switches to Active.
    
    During link up processing, the driver currently does a MBX_READ_SPARAM
    followed by a MBX_CONFIG_LINK. These mbox commands are queued to be
    executed, one at a time and the completion is processed by the worker
    thread.  Since the MBX_READ_SPARAM is done BEFORE the MBX_CONFIG_LINK, the
    BB_SC_N bit is never set the the returned values. BB Credit recovery status
    only gets set after the driver requests the feature in CONFIG_LINK, which
    is done after the link up. Thus the ordering of READ_SPARAM needs to follow
    the CONFIG_LINK.
    
    Fix by reordering so that READ_SPARAM is done after CONFIG_LINK.  Added a
    HBA_DEFER_FLOGI flag so that any FLOGI handling waits until after the
    READ_SPARAM is done so that the proper BB credit value is set in the FLOGI
    payload.
    
    Fixes: 6bfb1620 ("scsi: lpfc: Fix configuration of BB credit recovery in service parameters")
    Cc: <stable@vger.kernel.org> # v5.4+
    Link: https://lore.kernel.org/r/20200128002312.16346-4-jsmart2021@gmail.comSigned-off-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: default avatarJames Smart <jsmart2021@gmail.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    835214f5
lpfc.h 43.7 KB