Bladeren bron

ath10k: cache throttle state when device is down

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>
Rajkumar Manoharan 10 jaren geleden
bovenliggende
commit
28bf0c4e3f
1 gewijzigde bestanden met toevoegingen van 7 en 7 verwijderingen
  1. 7 7
      drivers/net/wireless/ath/ath10k/thermal.c

+ 7 - 7
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;
 	struct ath10k *ar = cdev->devdata;
 	int ret = 0;
 	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);
 	mutex_lock(&ar->conf_mutex);
+	ar->thermal.throttle_state = throttle_state;
+
 	if (ar->state != ATH10K_STATE_ON) {
 	if (ar->state != ATH10K_STATE_ON) {
 		ret = -ENETDOWN;
 		ret = -ENETDOWN;
 		goto out;
 		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);
 	ath10k_thermal_set_throttling(ar);
 out:
 out:
 	mutex_unlock(&ar->conf_mutex);
 	mutex_unlock(&ar->conf_mutex);