OSDN Git Service

icnss: Avoid qmi exchange when fw is down
authorAnurag Chouhan <achouhan@codeaurora.org>
Fri, 19 Jan 2018 10:29:25 +0000 (15:59 +0530)
committerGerrit - the friendly Code Review server <code-review@localhost>
Thu, 25 Jan 2018 05:30:57 +0000 (21:30 -0800)
Currently wlan Host driver call exported API's which
invoke qmi exchanges irrespective of the firmware status
which leads to QMI timeouts.
To address this issue avoid sending qmi request to
firmware when firmware is down.

CRs-Fixed: 2175302
Change-Id: Ie5e340cebf7ee7f6143472e7dca0dfd9600d1b7d
Signed-off-by: Anurag Chouhan <achouhan@codeaurora.org>
drivers/soc/qcom/icnss.c

index 7f71824..543eeaa 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -3073,6 +3073,12 @@ int icnss_set_fw_log_mode(struct device *dev, uint8_t fw_log_mode)
        if (!dev)
                return -ENODEV;
 
+       if (test_bit(ICNSS_FW_DOWN, &penv->state)) {
+               icnss_pr_err("FW down, ignoring fw_log_mode state: 0x%lx\n",
+                            penv->state);
+               return -EINVAL;
+       }
+
        icnss_pr_dbg("FW log mode: %u\n", fw_log_mode);
 
        ret = wlfw_ini_send_sync_msg(fw_log_mode);
@@ -3166,6 +3172,12 @@ int icnss_wlan_enable(struct device *dev, struct icnss_wlan_enable_cfg *config,
        if (!dev)
                return -ENODEV;
 
+       if (test_bit(ICNSS_FW_DOWN, &penv->state)) {
+               icnss_pr_err("FW down, ignoring wlan_enable state: 0x%lx\n",
+                            penv->state);
+               return -EINVAL;
+       }
+
        icnss_pr_dbg("Mode: %d, config: %p, host_version: %s\n",
                     mode, config, host_version);