lkml.org 
[lkml]   [2019]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.0 085/238] scsi: qla2xxx: Use complete switch scan for RSCN events
    Date
    5.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Quinn Tran <qtran@marvell.com>

    commit 1560bafdff9ed54857ac3a03c4c8d8f10d791ba6 upstream.

    This patch removes unnecessary code to handle RSCN, instead performs full
    scan everytime driver receives RSCN

    Fixes: d4f7a16aeca6f ("scsi: qla2xxx: Remove ASYNC GIDPN switch command")
    Cc: stable@vger.kernel.org #4.19
    Signed-off-by: Quinn Tran <qtran@marvell.com>
    Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/scsi/qla2xxx/qla_init.c | 86 ----------------------------------------
    1 file changed, 86 deletions(-)

    --- a/drivers/scsi/qla2xxx/qla_init.c
    +++ b/drivers/scsi/qla2xxx/qla_init.c
    @@ -1474,29 +1474,6 @@ int qla24xx_fcport_handle_login(struct s
    return 0;
    }

    -static
    -void qla24xx_handle_rscn_event(fc_port_t *fcport, struct event_arg *ea)
    -{
    - fcport->rscn_gen++;
    -
    - ql_dbg(ql_dbg_disc, fcport->vha, 0x210c,
    - "%s %8phC DS %d LS %d\n",
    - __func__, fcport->port_name, fcport->disc_state,
    - fcport->fw_login_state);
    -
    - if (fcport->flags & FCF_ASYNC_SENT)
    - return;
    -
    - switch (fcport->disc_state) {
    - case DSC_DELETED:
    - case DSC_LOGIN_COMPLETE:
    - qla24xx_post_gpnid_work(fcport->vha, &ea->id);
    - break;
    - default:
    - break;
    - }
    -}
    -
    int qla24xx_post_newsess_work(struct scsi_qla_host *vha, port_id_t *id,
    u8 *port_name, u8 *node_name, void *pla, u8 fc4_type)
    {
    @@ -1563,8 +1540,6 @@ static void qla_handle_els_plogi_done(sc

    void qla2x00_fcport_event_handler(scsi_qla_host_t *vha, struct event_arg *ea)
    {
    - fc_port_t *f, *tf;
    - uint32_t id = 0, mask, rid;
    fc_port_t *fcport;

    switch (ea->event) {
    @@ -1577,10 +1552,6 @@ void qla2x00_fcport_event_handler(scsi_q
    case FCME_RSCN:
    if (test_bit(UNLOADING, &vha->dpc_flags))
    return;
    - switch (ea->id.b.rsvd_1) {
    - case RSCN_PORT_ADDR:
    -#define BIGSCAN 1
    -#if defined BIGSCAN & BIGSCAN > 0
    {
    unsigned long flags;
    fcport = qla2x00_find_fcport_by_nportid
    @@ -1599,59 +1570,6 @@ void qla2x00_fcport_event_handler(scsi_q
    }
    spin_unlock_irqrestore(&vha->work_lock, flags);
    }
    -#else
    - {
    - int rc;
    - fcport = qla2x00_find_fcport_by_nportid(vha, &ea->id, 1);
    - if (!fcport) {
    - /* cable moved */
    - rc = qla24xx_post_gpnid_work(vha, &ea->id);
    - if (rc) {
    - ql_log(ql_log_warn, vha, 0xd044,
    - "RSCN GPNID work failed %06x\n",
    - ea->id.b24);
    - }
    - } else {
    - ea->fcport = fcport;
    - fcport->scan_needed = 1;
    - qla24xx_handle_rscn_event(fcport, ea);
    - }
    - }
    -#endif
    - break;
    - case RSCN_AREA_ADDR:
    - case RSCN_DOM_ADDR:
    - if (ea->id.b.rsvd_1 == RSCN_AREA_ADDR) {
    - mask = 0xffff00;
    - ql_dbg(ql_dbg_async, vha, 0x5044,
    - "RSCN: Area 0x%06x was affected\n",
    - ea->id.b24);
    - } else {
    - mask = 0xff0000;
    - ql_dbg(ql_dbg_async, vha, 0x507a,
    - "RSCN: Domain 0x%06x was affected\n",
    - ea->id.b24);
    - }
    -
    - rid = ea->id.b24 & mask;
    - list_for_each_entry_safe(f, tf, &vha->vp_fcports,
    - list) {
    - id = f->d_id.b24 & mask;
    - if (rid == id) {
    - ea->fcport = f;
    - qla24xx_handle_rscn_event(f, ea);
    - }
    - }
    - break;
    - case RSCN_FAB_ADDR:
    - default:
    - ql_log(ql_log_warn, vha, 0xd045,
    - "RSCN: Fabric was affected. Addr format %d\n",
    - ea->id.b.rsvd_1);
    - qla2x00_mark_all_devices_lost(vha, 1);
    - set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
    - set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
    - }
    break;
    case FCME_GNL_DONE:
    qla24xx_handle_gnl_done_event(vha, ea);
    @@ -1712,11 +1630,7 @@ void qla_rscn_replay(fc_port_t *fcport)
    ea.event = FCME_RSCN;
    ea.id = fcport->d_id;
    ea.id.b.rsvd_1 = RSCN_PORT_ADDR;
    -#if defined BIGSCAN & BIGSCAN > 0
    qla2x00_fcport_event_handler(fcport->vha, &ea);
    -#else
    - qla24xx_post_gpnid_work(fcport->vha, &ea.id);
    -#endif
    }
    }


    \
     
     \ /
      Last update: 2019-03-22 13:33    [W:2.150 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site