forked from Minki/linux
scsi: qla2xxx: Allow PLOGI in target mode
According to FC-LS-3 (Fibre Channel Link Services) 6.3.2.4 "N_Port Login - No Fabric present", if both parties in the point-to-point connection know N_Port_Names of each other, Nx_Port with the highest N_Port_name shall transmit PLOGI. The specification sets no restrictions on the port role that should send PLOGI. However, FCP-4 (Fibre Channel Protocol for SCSI, Fourth Version) 6.2 "Overview of Process Login and Process Logout", instructs that in point-to-point topology, initiator shall send explicit PRLI ELS. The change fixes stuck P2P login, when target WWPN is higher than initiator WWPN. Cc: Quinn Tran <qutran@marvell.com> Cc: Himanshu Madhani <hmadhani@marvell.com> Link: https://lore.kernel.org/r/20191125165702.1013-7-r.bolshakov@yadro.com Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
58e39a2ce4
commit
a9ed06d4e6
@ -1527,8 +1527,8 @@ int qla24xx_fcport_handle_login(struct scsi_qla_host *vha, fc_port_t *fcport)
|
||||
}
|
||||
}
|
||||
|
||||
/* for pure Target Mode. Login will not be initiated */
|
||||
if (vha->host->active_mode == MODE_TARGET)
|
||||
/* Target won't initiate port login if fabric is present */
|
||||
if (vha->host->active_mode == MODE_TARGET && !N2N_TOPO(vha->hw))
|
||||
return 0;
|
||||
|
||||
if (fcport->flags & FCF_ASYNC_SENT) {
|
||||
@ -1720,6 +1720,10 @@ void qla24xx_handle_relogin_event(scsi_qla_host_t *vha,
|
||||
void qla_handle_els_plogi_done(scsi_qla_host_t *vha,
|
||||
struct event_arg *ea)
|
||||
{
|
||||
/* for pure Target Mode, PRLI will not be initiated */
|
||||
if (vha->host->active_mode == MODE_TARGET)
|
||||
return;
|
||||
|
||||
ql_dbg(ql_dbg_disc, vha, 0x2118,
|
||||
"%s %d %8phC post PRLI\n",
|
||||
__func__, __LINE__, ea->fcport->port_name);
|
||||
|
Loading…
Reference in New Issue
Block a user