qla2xxx: Remove wait for online from host reset handler.
[firefly-linux-kernel-4.4.55.git] / drivers / scsi / qla2xxx / qla_os.c
index 5a70e24d9fe393d7d02eca86204bf72d2688bffd..5a430c7bc02715166a987a7aeb2b957a0795de09 100644 (file)
@@ -865,51 +865,6 @@ qla2x00_wait_for_hba_ready(scsi_qla_host_t *vha)
                msleep(1000);
 }
 
-/*
- * qla2x00_wait_for_reset_ready
- *    Wait till the HBA is online after going through
- *    <= MAX_RETRIES_OF_ISP_ABORT  or
- *    finally HBA is disabled ie marked offline or flash
- *    operations are in progress.
- *
- * Input:
- *     ha - pointer to host adapter structure
- *
- * Note:
- *    Does context switching-Release SPIN_LOCK
- *    (if any) before calling this routine.
- *
- * Return:
- *    Success (Adapter is online/no flash ops) : 0
- *    Failed  (Adapter is offline/disabled/flash ops in progress) : 1
- */
-static int
-qla2x00_wait_for_reset_ready(scsi_qla_host_t *vha)
-{
-       int             return_status;
-       unsigned long   wait_online;
-       struct qla_hw_data *ha = vha->hw;
-       scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);
-
-       wait_online = jiffies + (MAX_LOOP_TIMEOUT * HZ);
-       while (((test_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags)) ||
-           test_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags) ||
-           test_bit(ISP_ABORT_RETRY, &base_vha->dpc_flags) ||
-           ha->optrom_state != QLA_SWAITING ||
-           ha->dpc_active) && time_before(jiffies, wait_online))
-               msleep(1000);
-
-       if (base_vha->flags.online &&  ha->optrom_state == QLA_SWAITING)
-               return_status = QLA_SUCCESS;
-       else
-               return_status = QLA_FUNCTION_FAILED;
-
-       ql_dbg(ql_dbg_taskm, vha, 0x8019,
-           "%s return status=%d.\n", __func__, return_status);
-
-       return return_status;
-}
-
 int
 qla2x00_wait_for_chip_reset(scsi_qla_host_t *vha)
 {
@@ -1274,7 +1229,11 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd)
        ql_log(ql_log_info, vha, 0x8018,
            "ADAPTER RESET ISSUED nexus=%ld:%d:%d.\n", vha->host_no, id, lun);
 
-       if (qla2x00_wait_for_reset_ready(vha) != QLA_SUCCESS)
+       /*
+        * No point in issuing another reset if one is active.  Also do not
+        * attempt a reset if we are updating flash.
+        */
+       if (qla2x00_reset_active(vha) || ha->optrom_state != QLA_SWAITING)
                goto eh_host_reset_lock;
 
        if (vha != base_vha) {