diff options
author | James Smart <James.Smart@Emulex.Com> | 2006-03-07 15:04:01 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-03-12 09:56:13 -0500 |
commit | fdcebe282fd8654381852260efec267eff8002fb (patch) | |
tree | 6cde5a6376cfc4880be192a41a5b84407fad0d38 /drivers/scsi/lpfc/lpfc_nportdisc.c | |
parent | 488d1469b318e6bf2b907743d626008340bc4f6e (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.c | 21 |
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 | ||