ath10k: cache throttle state when device is down
authorRajkumar Manoharan <rmanohar@qti.qualcomm.com>
Sun, 15 Mar 2015 15:06:24 +0000 (20:36 +0530)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 23 Mar 2015 15:16:50 +0000 (17:16 +0200)
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 <mka@google.com>
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/thermal.c

index 604ea002ff6fc70e9aea567b707fa32139a952af..0b4cd3f16ef8e89357a3f411dd971836b63363e6 100644 (file)
@@ -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);