[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>
This commit is contained in:
James Smart
2007-10-27 13:37:17 -04:00
committed by James Bottomley
parent 57127f1572
commit 7ee5d43e2e
7 changed files with 127 additions and 81 deletions

View File

@@ -2294,12 +2294,24 @@ lpfc_init(void)
printk(LPFC_MODULE_DESC "\n");
printk(LPFC_COPYRIGHT "\n");
if (lpfc_enable_npiv) {
lpfc_transport_functions.vport_create = lpfc_vport_create;
lpfc_transport_functions.vport_delete = lpfc_vport_delete;
}
lpfc_transport_template =
fc_attach_transport(&lpfc_transport_functions);
lpfc_vport_transport_template =
fc_attach_transport(&lpfc_vport_transport_functions);
if (!lpfc_transport_template || !lpfc_vport_transport_template)
if (lpfc_transport_template == NULL)
return -ENOMEM;
if (lpfc_enable_npiv) {
lpfc_transport_functions.vport_create = NULL;
lpfc_transport_functions.vport_delete = NULL;
lpfc_transport_functions.issue_fc_host_lip = NULL;
lpfc_transport_functions.vport_disable = lpfc_vport_disable;
lpfc_vport_transport_template =
fc_attach_transport(&lpfc_transport_functions);
if (lpfc_vport_transport_template == NULL)
return -ENOMEM;
}
error = pci_register_driver(&lpfc_driver);
if (error) {
fc_release_transport(lpfc_transport_template);
@@ -2314,7 +2326,8 @@ lpfc_exit(void)
{
pci_unregister_driver(&lpfc_driver);
fc_release_transport(lpfc_transport_template);
fc_release_transport(lpfc_vport_transport_template);
if (lpfc_enable_npiv)
fc_release_transport(lpfc_vport_transport_template);
}
module_init(lpfc_init);