aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_nportdisc.c
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2006-03-07 15:04:01 -0500
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-03-12 09:56:13 -0500
commitfdcebe282fd8654381852260efec267eff8002fb (patch)
tree6cde5a6376cfc4880be192a41a5b84407fad0d38 /drivers/scsi/lpfc/lpfc_nportdisc.c
parent488d1469b318e6bf2b907743d626008340bc4f6e (diff)
[SCSI] lpfc 8.1.4 : Fixed RSCN handling when a PLOGI is in retry
Fixed RSCN handling when a PLOGI is in retry. Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_nportdisc.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_nportdisc.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c
index 8affc1543c6e..3d77bd999b70 100644
--- a/drivers/scsi/lpfc/lpfc_nportdisc.c
+++ b/drivers/scsi/lpfc/lpfc_nportdisc.c
@@ -259,13 +259,8 @@ lpfc_els_abort(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp,
259 } while(found); 259 } while(found);
260 260
261 /* If we are delaying issuing an ELS command, cancel it */ 261 /* If we are delaying issuing an ELS command, cancel it */
262 if (ndlp->nlp_flag & NLP_DELAY_TMO) { 262 if (ndlp->nlp_flag & NLP_DELAY_TMO)
263 ndlp->nlp_flag &= ~NLP_DELAY_TMO; 263 lpfc_cancel_retry_delay_tmo(phba, ndlp);
264 ndlp->nlp_last_elscmd = 0;
265 del_timer_sync(&ndlp->nlp_delayfunc);
266 if (!list_empty(&ndlp->els_retry_evt.evt_listp))
267 list_del_init(&ndlp->els_retry_evt.evt_listp);
268 }
269 return 0; 264 return 0;
270} 265}
271 266
@@ -1496,7 +1491,7 @@ lpfc_rcv_plogi_npr_node(struct lpfc_hba * phba,
1496 1491
1497 if (lpfc_rcv_plogi(phba, ndlp, cmdiocb)) { 1492 if (lpfc_rcv_plogi(phba, ndlp, cmdiocb)) {
1498 spin_lock_irq(phba->host->host_lock); 1493 spin_lock_irq(phba->host->host_lock);
1499 ndlp->nlp_flag &= ~(NLP_NPR_ADISC | NLP_NPR_2B_DISC); 1494 ndlp->nlp_flag &= ~NLP_NPR_ADISC;
1500 spin_unlock_irq(phba->host->host_lock); 1495 spin_unlock_irq(phba->host->host_lock);
1501 return ndlp->nlp_state; 1496 return ndlp->nlp_state;
1502 } 1497 }
@@ -1693,16 +1688,10 @@ lpfc_device_recov_npr_node(struct lpfc_hba * phba,
1693{ 1688{
1694 spin_lock_irq(phba->host->host_lock); 1689 spin_lock_irq(phba->host->host_lock);
1695 ndlp->nlp_flag &= ~NLP_NPR_2B_DISC; 1690 ndlp->nlp_flag &= ~NLP_NPR_2B_DISC;
1691 spin_unlock_irq(phba->host->host_lock);
1696 if (ndlp->nlp_flag & NLP_DELAY_TMO) { 1692 if (ndlp->nlp_flag & NLP_DELAY_TMO) {
1697 ndlp->nlp_flag &= ~NLP_DELAY_TMO; 1693 lpfc_cancel_retry_delay_tmo(phba, ndlp);
1698 if (!list_empty(&ndlp->els_retry_evt.evt_listp))
1699 list_del_init(&ndlp->els_retry_evt.evt_listp);
1700 spin_unlock_irq(phba->host->host_lock);
1701 ndlp->nlp_last_elscmd = 0;
1702 del_timer_sync(&ndlp->nlp_delayfunc);
1703 return ndlp->nlp_state;
1704 } 1694 }
1705 spin_unlock_irq(phba->host->host_lock);
1706 return ndlp->nlp_state; 1695 return ndlp->nlp_state;
1707} 1696}
1708 1697