Allow driver to cache the throttle state when the devie is not
yet started. Configure the cached throttle state while powering
up the device. Since thermal daemon is unaware of the up/down cycle,
it assumes that device is throttled.

Reported-by: Matthias Kaehlcke <m...@google.com>
Signed-off-by: Rajkumar Manoharan <rmano...@qti.qualcomm.com>
---
 drivers/net/wireless/ath/ath10k/thermal.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/thermal.c 
b/drivers/net/wireless/ath/ath10k/thermal.c
index 7aef064..3720c86 100644
--- a/drivers/net/wireless/ath/ath10k/thermal.c
+++ b/drivers/net/wireless/ath/ath10k/thermal.c
@@ -52,19 +52,19 @@ ath10k_thermal_set_cur_throttle_state(struct 
thermal_cooling_device *cdev,
        struct ath10k *ar = cdev->devdata;
        int ret = 0;
 
+       if (throttle_state > ATH10K_THERMAL_THROTTLE_MAX) {
+               ath10k_warn(ar, "throttle state %ld is exceeding the limit 
%d\n",
+                           throttle_state, ATH10K_THERMAL_THROTTLE_MAX);
+               return -EINVAL;
+       }
        mutex_lock(&ar->conf_mutex);
+       ar->thermal.throttle_state = throttle_state;
+
        if (ar->state != ATH10K_STATE_ON) {
                ret = -ENETDOWN;
                goto out;
        }
 
-       if (throttle_state > ATH10K_THERMAL_THROTTLE_MAX) {
-               ath10k_warn(ar, "throttle state %ld is exceeding the limit 
%d\n",
-                           throttle_state, ATH10K_THERMAL_THROTTLE_MAX);
-               ret = -EINVAL;
-               goto out;
-       }
-       ar->thermal.throttle_state = throttle_state;
        ath10k_thermal_set_throttling(ar);
 out:
        mutex_unlock(&ar->conf_mutex);
-- 
2.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to