• James Smart's avatar
    scsi: lpfc: Fix NPIV discovery and Fabric Node detection · b3f2e67c
    James Smart authored
    While testing NPIV and link bounces, the vport would not show a fabric node
    for the F_Port, would not transition into NPR state during a link fault, or
    leave the FDMI node untouched during error injection. Cause for this was
    determined to be an inconsistent manner in which F_Port, Nameserver, and
    FDMI controller nodes were created and linked. In some cases, the nodes
    would never be unregistered from the transport, leaving references
    active. In other cases, the fabric nodes may register with the transport
    multiple times while still registered.
    
    The following changes were made:
    
     - Fix the FDISC issue routine, which starts vport (re)creation, to mark
       the F_Port as a fabric node (NLP_FABRIC) and allow the F_Port node to
       fully be created and show up in the node list.
    
     - When remote ports are cleaned up on vport termination, cleanup the
       nameserver and FDMI controller nodes on the vport so they unregister
       from the transport.
    
     - On link bounces, don't exclude the NPIV Fabric remote ports from
       transitioning to the NPR state, allowing them to avoid re-registration
       if already registered.
    
    Link: https://lore.kernel.org/r/20201115192646.12977-9-james.smart@broadcom.comCo-developed-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
    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>
    b3f2e67c
lpfc_els.c 319 KB