diff options
author | James Smart <James.Smart@Emulex.Com> | 2007-10-27 13:37:17 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-01-11 19:22:31 -0500 |
commit | 7ee5d43e2ea25336a7638715420c75583bd2ed69 (patch) | |
tree | 2687f4508fa05465b231a61e606b1063c944d107 /drivers/scsi/lpfc/lpfc_vport.c | |
parent | 57127f157298ea2dacbbc878a3c5d2a5daca772c (diff) |
[SCSI] lpfc 8.2.3 : NPIV bug fixes
NPIV bug fixes:
- Remove vport params on physical hba when npiv is disabled
- Implement new DA_ID CT command to remove vport information from
the switch after delete. Some switches didn't clean this up unless
the physical link dropped.
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_vport.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_vport.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_vport.c b/drivers/scsi/lpfc/lpfc_vport.c index dcb415e717c3..3b705ccc771a 100644 --- a/drivers/scsi/lpfc/lpfc_vport.c +++ b/drivers/scsi/lpfc/lpfc_vport.c | |||
@@ -482,8 +482,18 @@ lpfc_vport_delete(struct fc_vport *fc_vport) | |||
482 | 482 | ||
483 | ndlp = lpfc_findnode_did(phba->pport, Fabric_DID); | 483 | ndlp = lpfc_findnode_did(phba->pport, Fabric_DID); |
484 | if (ndlp && ndlp->nlp_state == NLP_STE_UNMAPPED_NODE && | 484 | if (ndlp && ndlp->nlp_state == NLP_STE_UNMAPPED_NODE && |
485 | phba->link_state >= LPFC_LINK_UP) { | 485 | phba->link_state >= LPFC_LINK_UP) { |
486 | 486 | if (vport->cfg_enable_da_id) { | |
487 | timeout = msecs_to_jiffies(phba->fc_ratov * 2000); | ||
488 | if (!lpfc_ns_cmd(vport, SLI_CTNS_DA_ID, 0, 0)) | ||
489 | while (vport->ct_flags && timeout) | ||
490 | timeout = schedule_timeout(timeout); | ||
491 | else | ||
492 | lpfc_printf_log(vport->phba, KERN_WARNING, | ||
493 | LOG_VPORT, | ||
494 | "1829 CT command failed to " | ||
495 | "delete objects on fabric. \n"); | ||
496 | } | ||
487 | /* First look for the Fabric ndlp */ | 497 | /* First look for the Fabric ndlp */ |
488 | ndlp = lpfc_findnode_did(vport, Fabric_DID); | 498 | ndlp = lpfc_findnode_did(vport, Fabric_DID); |
489 | if (!ndlp) { | 499 | if (!ndlp) { |