lkml.org 
[lkml]   [2018]   [Mar]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 029/140] scsi: qla2xxx: Retry switch command on time out
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Quinn Tran <quinn.tran@cavium.com>

    commit 25ad76b703d9ad536f3411b15b1070aeb059ab55 upstream.

    Retry GID_PN & GPN_ID switch commands for time out case.

    Fixes: 726b85487067d ("qla2xxx: Add framework for async fabric discovery")
    Cc: <stable@vger.kernel.org> # 4.10+
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/scsi/qla2xxx/qla_gs.c | 34 ++++++++++++++++++++++++++--------
    1 file changed, 26 insertions(+), 8 deletions(-)

    --- a/drivers/scsi/qla2xxx/qla_gs.c
    +++ b/drivers/scsi/qla2xxx/qla_gs.c
    @@ -175,6 +175,9 @@ qla2x00_chk_ms_status(scsi_qla_host_t *v
    set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
    }
    break;
    + case CS_TIMEOUT:
    + rval = QLA_FUNCTION_TIMEOUT;
    + /* drop through */
    default:
    ql_dbg(ql_dbg_disc, vha, 0x2033,
    "%s failed, completion status (%x) on port_id: "
    @@ -2889,9 +2892,22 @@ static void qla2x00_async_gidpn_sp_done(
    ea.rc = res;
    ea.event = FCME_GIDPN_DONE;

    - ql_dbg(ql_dbg_disc, vha, 0x204f,
    - "Async done-%s res %x, WWPN %8phC ID %3phC \n",
    - sp->name, res, fcport->port_name, id);
    + if (res == QLA_FUNCTION_TIMEOUT) {
    + ql_dbg(ql_dbg_disc, sp->vha, 0xffff,
    + "Async done-%s WWPN %8phC timed out.\n",
    + sp->name, fcport->port_name);
    + qla24xx_post_gidpn_work(sp->vha, fcport);
    + sp->free(sp);
    + return;
    + } else if (res) {
    + ql_dbg(ql_dbg_disc, sp->vha, 0xffff,
    + "Async done-%s fail res %x, WWPN %8phC\n",
    + sp->name, res, fcport->port_name);
    + } else {
    + ql_dbg(ql_dbg_disc, vha, 0x204f,
    + "Async done-%s good WWPN %8phC ID %3phC\n",
    + sp->name, fcport->port_name, id);
    + }

    qla2x00_fcport_event_handler(vha, &ea);

    @@ -3217,11 +3233,6 @@ static void qla2x00_async_gpnid_sp_done(
    sp->name, ct_req->req.port_id.port_id,
    ct_rsp->rsp.gpn_id.port_name);

    - if (res) {
    - sp->free(sp);
    - return;
    - }
    -
    memset(&ea, 0, sizeof(ea));
    memcpy(ea.port_name, ct_rsp->rsp.gpn_id.port_name, WWN_SIZE);
    ea.sp = sp;
    @@ -3231,6 +3242,13 @@ static void qla2x00_async_gpnid_sp_done(
    ea.rc = res;
    ea.event = FCME_GPNID_DONE;

    + if (res) {
    + if (res == QLA_FUNCTION_TIMEOUT)
    + qla24xx_post_gpnid_work(sp->vha, &ea.id);
    + sp->free(sp);
    + return;
    + }
    +
    qla2x00_fcport_event_handler(vha, &ea);

    e = qla2x00_alloc_work(vha, QLA_EVT_GPNID_DONE);

    \
     
     \ /
      Last update: 2018-03-13 17:12    [W:4.123 / U:0.496 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site