diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 17 |
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 | } |
