diff options
author | James Smart <James.Smart@Emulex.Com> | 2008-02-08 18:49:39 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-02-11 18:52:57 -0500 |
commit | 1b32f6aa9935ab88eac0d608a4b06369f5d9064a (patch) | |
tree | dfca777d4fcd442d33643536963c259a15d67662 /drivers/scsi/lpfc/lpfc_hbadisc.c | |
parent | e47c9093531d3406a8ae38acca4ce207ef70cc0e (diff) |
[SCSI] lpfc 8.2.5 : Miscellaneous Fixes
Miscellaneous fixes:
- Fix ERRATT flag which was overlapping
- Allow RESTART mbx commands through when stopped.
- Accept incoming PLOGI when connected to an N_Port.
- Fix NPort to NPort pt2pt problems: ADISC and reg_vpi issues
- Fix vport unloading error that erroneously cleaned up RSCN buffers
- Fix memory leak during repeated unloads - in mbox handling
- Fix link bounce vs FLOGI race conditions
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_hbadisc.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_hbadisc.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index 1ee3e62c78a7..25892671bfb0 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c | |||
@@ -800,21 +800,9 @@ lpfc_mbx_cmpl_clear_la(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) | |||
800 | writel(control, phba->HCregaddr); | 800 | writel(control, phba->HCregaddr); |
801 | readl(phba->HCregaddr); /* flush */ | 801 | readl(phba->HCregaddr); /* flush */ |
802 | spin_unlock_irq(&phba->hbalock); | 802 | spin_unlock_irq(&phba->hbalock); |
803 | mempool_free(pmb, phba->mbox_mem_pool); | ||
803 | return; | 804 | return; |
804 | 805 | ||
805 | vport->num_disc_nodes = 0; | ||
806 | /* go thru NPR nodes and issue ELS PLOGIs */ | ||
807 | if (vport->fc_npr_cnt) | ||
808 | lpfc_els_disc_plogi(vport); | ||
809 | |||
810 | if (!vport->num_disc_nodes) { | ||
811 | spin_lock_irq(shost->host_lock); | ||
812 | vport->fc_flag &= ~FC_NDISC_ACTIVE; | ||
813 | spin_unlock_irq(shost->host_lock); | ||
814 | } | ||
815 | |||
816 | vport->port_state = LPFC_VPORT_READY; | ||
817 | |||
818 | out: | 806 | out: |
819 | /* Device Discovery completes */ | 807 | /* Device Discovery completes */ |
820 | lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, | 808 | lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, |
@@ -2484,6 +2472,7 @@ lpfc_disc_start(struct lpfc_vport *vport) | |||
2484 | * continue discovery. | 2472 | * continue discovery. |
2485 | */ | 2473 | */ |
2486 | if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && | 2474 | if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && |
2475 | !(vport->fc_flag & FC_PT2PT) && | ||
2487 | !(vport->fc_flag & FC_RSCN_MODE)) { | 2476 | !(vport->fc_flag & FC_RSCN_MODE)) { |
2488 | lpfc_issue_reg_vpi(phba, vport); | 2477 | lpfc_issue_reg_vpi(phba, vport); |
2489 | return; | 2478 | return; |