Commit 718abbdc authored by Sawan Chandak's avatar Sawan Chandak Committed by James Bottomley

qla2xxx: Restore physical port WWPN only, when port down detected for FA-WWPN port.

For FA-WWPN is enabled port, if NPIV created on that port and,
if port link is brought down, then WWPN was restored from flash for both
physical and NPIV port. This will result in NPIV port and physical port
sharing same WWPN. Any application refreshing ports information  will
not be able to scan NPIV port because of this behavior. So while restoring WWPN,
only restore physical port WWPN.
Signed-off-by: default avatarSawan Chandak <sawan.chandak@qlogic.com>
Signed-off-by: default avatarHimanshu Madhani <himanshu.madhani@qlogic.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarJames Bottomley <JBottomley@Odin.com>
parent ded6411f
......@@ -756,14 +756,23 @@ qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb)
/*
* In case of loop down, restore WWPN from
* NVRAM in case of FA-WWPN capable ISP
* Restore for Physical Port only
*/
if (ha->flags.fawwpn_enabled) {
void *wwpn = ha->init_cb->port_name;
if (!vha->vp_idx) {
if (ha->flags.fawwpn_enabled) {
void *wwpn = ha->init_cb->port_name;
memcpy(vha->port_name, wwpn, WWN_SIZE);
fc_host_port_name(vha->host) =
wwn_to_u64(vha->port_name);
ql_dbg(ql_dbg_init + ql_dbg_verbose,
vha, 0x0144, "LOOP DOWN detected,"
"restore WWPN %016llx\n",
wwn_to_u64(vha->port_name));
}
memcpy(vha->port_name, wwpn, WWN_SIZE);
clear_bit(VP_CONFIG_OK, &vha->vp_flags);
}
clear_bit(VP_CONFIG_OK, &vha->vp_flags);
vha->device_flags |= DFLG_NO_CABLE;
qla2x00_mark_all_devices_lost(vha, 1);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment