aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_nportdisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_nportdisc.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_nportdisc.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c
index 4cb9882af157..af3b38aba65e 100644
--- a/drivers/scsi/lpfc/lpfc_nportdisc.c
+++ b/drivers/scsi/lpfc/lpfc_nportdisc.c
@@ -661,7 +661,13 @@ lpfc_rcv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
661 lpfc_destroy_vport_work_array(phba, vports); 661 lpfc_destroy_vport_work_array(phba, vports);
662 } 662 }
663 663
664 if (active_vlink_present) { 664 /*
665 * Don't re-instantiate if vport is marked for deletion.
666 * If we are here first then vport_delete is going to wait
667 * for discovery to complete.
668 */
669 if (!(vport->load_flag & FC_UNLOADING) &&
670 active_vlink_present) {
665 /* 671 /*
666 * If there are other active VLinks present, 672 * If there are other active VLinks present,
667 * re-instantiate the Vlink using FDISC. 673 * re-instantiate the Vlink using FDISC.
@@ -1868,7 +1874,7 @@ lpfc_rcv_logo_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
1868 struct lpfc_iocbq *cmdiocb = (struct lpfc_iocbq *)arg; 1874 struct lpfc_iocbq *cmdiocb = (struct lpfc_iocbq *)arg;
1869 1875
1870 spin_lock_irq(shost->host_lock); 1876 spin_lock_irq(shost->host_lock);
1871 ndlp->nlp_flag &= NLP_LOGO_ACC; 1877 ndlp->nlp_flag |= NLP_LOGO_ACC;
1872 spin_unlock_irq(shost->host_lock); 1878 spin_unlock_irq(shost->host_lock);
1873 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); 1879 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL);
1874 return ndlp->nlp_state; 1880 return ndlp->nlp_state;