lkml.org 
[lkml]   [2019]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 18/34] scsi: qla2xxx: Configure local loop for N2N target
    Date
    From: Roman Bolshakov <r.bolshakov@yadro.com>

    [ Upstream commit fd1de5830a5abaf444cc4312871e02c41e24fdc1 ]

    qla2x00_configure_local_loop initializes PLOGI payload for PLOGI ELS using
    Get Parameters mailbox command.

    In the case when the driver is running in target mode, the topology is N2N
    and the target port has higher WWPN, LOCAL_LOOP_UPDATE bit is cleared too
    early and PLOGI payload is not initialized by the Get Parameters
    command. That causes a failure of ELS IOCB carrying the PLOGI with 0x15 aka
    Data Underrun error.

    LOCAL_LOOP_UPDATE has to be set to initialize PLOGI payload.

    Fixes: 48acad099074 ("scsi: qla2xxx: Fix N2N link re-connect")
    Link: https://lore.kernel.org/r/20191125165702.1013-10-r.bolshakov@yadro.com
    Acked-by: Quinn Tran <qutran@marvell.com>
    Acked-by: Himanshu Madhani <hmadhani@marvell.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Tested-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/qla2xxx/qla_init.c | 10 ++--------
    1 file changed, 2 insertions(+), 8 deletions(-)

    diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
    index d734dcf517b92..753338d5343b9 100644
    --- a/drivers/scsi/qla2xxx/qla_init.c
    +++ b/drivers/scsi/qla2xxx/qla_init.c
    @@ -4814,14 +4814,8 @@ qla2x00_configure_loop(scsi_qla_host_t *vha)
    set_bit(RSCN_UPDATE, &flags);
    clear_bit(LOCAL_LOOP_UPDATE, &flags);

    - } else if (ha->current_topology == ISP_CFG_N) {
    - clear_bit(RSCN_UPDATE, &flags);
    - if (qla_tgt_mode_enabled(vha)) {
    - /* allow the other side to start the login */
    - clear_bit(LOCAL_LOOP_UPDATE, &flags);
    - set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
    - }
    - } else if (ha->current_topology == ISP_CFG_NL) {
    + } else if (ha->current_topology == ISP_CFG_NL ||
    + ha->current_topology == ISP_CFG_N) {
    clear_bit(RSCN_UPDATE, &flags);
    set_bit(LOCAL_LOOP_UPDATE, &flags);
    } else if (!vha->flags.online ||
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-20 15:37    [W:7.526 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site