Skip to content

Commit 336d636

Browse files
jsmart-ghmartinkpetersen
authored andcommitted
scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology
After issuing a LIP, a specific target vendor does not ACC the FLOGI that lpfc sends. However, it does send its own FLOGI that lpfc ACCs. The target then establishes the port IDs by sending a PLOGI. lpfc PLOGI_ACCs and starts the RPI registration for DID 0x000001. The target then sends a LOGO to the fabric DID. lpfc is currently treating the LOGO from the fabric DID as a link down and cleans up all the ndlps. The ndlp for DID 0x000001 is put back into NPR and discovery stops, leaving the port in stuck in bypassed mode. Change lpfc behavior such that if a LOGO is received for the fabric DID in PT2PT topology skip the lpfc_linkdown_port() routine and just move the fabric DID back to NPR. Link: https://lore.kernel.org/r/[email protected] Co-developed-by: Justin Tee <[email protected]> Signed-off-by: Justin Tee <[email protected]> Signed-off-by: James Smart <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent b1b3440 commit 336d636

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/scsi/lpfc/lpfc_nportdisc.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,8 @@ lpfc_rcv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
834834
lpfc_nvmet_invalidate_host(phba, ndlp);
835835

836836
if (ndlp->nlp_DID == Fabric_DID) {
837-
if (vport->port_state <= LPFC_FDISC)
837+
if (vport->port_state <= LPFC_FDISC ||
838+
vport->fc_flag & FC_PT2PT)
838839
goto out;
839840
lpfc_linkdown_port(vport);
840841
spin_lock_irq(shost->host_lock);

0 commit comments

Comments
 (0)