Skip to content

Commit

Permalink
qla2xxx: Restore physical port WWPN only, when port down detected for…
Browse files Browse the repository at this point in the history
… 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: Sawan Chandak <sawan.chandak@qlogic.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
  • Loading branch information
Sawan Chandak authored and James Bottomley committed Apr 10, 2015
1 parent ded6411 commit 718abbd
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions drivers/scsi/qla2xxx/qla_isr.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down

0 comments on commit 718abbd

Please sign in to comment.