diff options
author | James Smart <james.smart@emulex.com> | 2009-12-21 17:02:00 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-01-04 12:39:43 -0500 |
commit | 1987807d4a7f52ca86034865283b207ab9be79c8 (patch) | |
tree | 7eacfab124bce1ca9a55a77465142c68a17389aa /drivers | |
parent | eeead8115276a76675dc7cfc823a2461745edd27 (diff) |
[SCSI] lpfc 8.3.7: Fix NPIV operation errors
Fix NPIV operation errors:
- Fix vport not logging out of fabric when being deleted
- Fix vport fails to discover targets after devloss timeout.
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 2 | ||||
-rwxr-xr-x | drivers/scsi/lpfc/lpfc_hbadisc.c | 1 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_vport.c | 2 |
3 files changed, 3 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index ce522702a6c1..bb2e43a9e96c 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -5948,8 +5948,8 @@ lpfc_cmpl_reg_new_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) | |||
5948 | lpfc_initial_fdisc(vport); | 5948 | lpfc_initial_fdisc(vport); |
5949 | break; | 5949 | break; |
5950 | } | 5950 | } |
5951 | |||
5952 | } else { | 5951 | } else { |
5952 | vport->vpi_state |= LPFC_VPI_REGISTERED; | ||
5953 | if (vport == phba->pport) | 5953 | if (vport == phba->pport) |
5954 | if (phba->sli_rev < LPFC_SLI_REV4) | 5954 | if (phba->sli_rev < LPFC_SLI_REV4) |
5955 | lpfc_issue_fabric_reglogin(vport); | 5955 | lpfc_issue_fabric_reglogin(vport); |
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index 3b9424427652..401167de4ff0 100755 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c | |||
@@ -2260,6 +2260,7 @@ lpfc_mbx_cmpl_unreg_vpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) | |||
2260 | break; | 2260 | break; |
2261 | } | 2261 | } |
2262 | vport->vpi_state &= ~LPFC_VPI_REGISTERED; | 2262 | vport->vpi_state &= ~LPFC_VPI_REGISTERED; |
2263 | vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; | ||
2263 | vport->unreg_vpi_cmpl = VPORT_OK; | 2264 | vport->unreg_vpi_cmpl = VPORT_OK; |
2264 | mempool_free(pmb, phba->mbox_mem_pool); | 2265 | mempool_free(pmb, phba->mbox_mem_pool); |
2265 | /* | 2266 | /* |
diff --git a/drivers/scsi/lpfc/lpfc_vport.c b/drivers/scsi/lpfc/lpfc_vport.c index 7d6dd83d3592..c3a70c4c9433 100644 --- a/drivers/scsi/lpfc/lpfc_vport.c +++ b/drivers/scsi/lpfc/lpfc_vport.c | |||
@@ -700,7 +700,7 @@ lpfc_vport_delete(struct fc_vport *fc_vport) | |||
700 | } | 700 | } |
701 | spin_unlock_irq(&phba->ndlp_lock); | 701 | spin_unlock_irq(&phba->ndlp_lock); |
702 | } | 702 | } |
703 | if (vport->vpi_state != LPFC_VPI_REGISTERED) | 703 | if (!(vport->vpi_state & LPFC_VPI_REGISTERED)) |
704 | goto skip_logo; | 704 | goto skip_logo; |
705 | vport->unreg_vpi_cmpl = VPORT_INVAL; | 705 | vport->unreg_vpi_cmpl = VPORT_INVAL; |
706 | timeout = msecs_to_jiffies(phba->fc_ratov * 2000); | 706 | timeout = msecs_to_jiffies(phba->fc_ratov * 2000); |