aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 72dfbc162856..6dc14cd782b2 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -756,14 +756,23 @@ skip_rio:
756 /* 756 /*
757 * In case of loop down, restore WWPN from 757 * In case of loop down, restore WWPN from
758 * NVRAM in case of FA-WWPN capable ISP 758 * NVRAM in case of FA-WWPN capable ISP
759 * Restore for Physical Port only
759 */ 760 */
760 if (ha->flags.fawwpn_enabled) { 761 if (!vha->vp_idx) {
761 void *wwpn = ha->init_cb->port_name; 762 if (ha->flags.fawwpn_enabled) {
763 void *wwpn = ha->init_cb->port_name;
764 memcpy(vha->port_name, wwpn, WWN_SIZE);
765 fc_host_port_name(vha->host) =
766 wwn_to_u64(vha->port_name);
767 ql_dbg(ql_dbg_init + ql_dbg_verbose,
768 vha, 0x0144, "LOOP DOWN detected,"
769 "restore WWPN %016llx\n",
770 wwn_to_u64(vha->port_name));
771 }
762 772
763 memcpy(vha->port_name, wwpn, WWN_SIZE); 773 clear_bit(VP_CONFIG_OK, &vha->vp_flags);
764 } 774 }
765 775
766 clear_bit(VP_CONFIG_OK, &vha->vp_flags);
767 vha->device_flags |= DFLG_NO_CABLE; 776 vha->device_flags |= DFLG_NO_CABLE;
768 qla2x00_mark_all_devices_lost(vha, 1); 777 qla2x00_mark_all_devices_lost(vha, 1);
769 } 778 }