diff options
author | Chaya Rachel Ivgi <chaya.rachel.ivgi@intel.com> | 2016-03-13 05:39:53 -0400 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2016-03-30 09:21:20 -0400 |
commit | ec77a33ee59723613d1e3ed6f02e5f9a1c898ce1 (patch) | |
tree | 1d84eca17a9c5e3b3a9c3f3adc806bf00c9a4c33 /drivers/net/wireless/intel/iwlwifi/mvm/tt.c | |
parent | 5d93f3a278b387e3a2ec568c1f03d236bfdbef81 (diff) |
iwlwifi: mvm: handle async temperature notification with unlocked mutex
Use RX_HANDLER_ASYNC_UNLOCKED instead of unlock and re-lock
the mutex independently.
Signed-off-by: Chaya Rachel Ivgi <chaya.rachel.ivgi@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/tt.c')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c index f1f28255a3a6..8d27137a9284 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c | |||
@@ -204,20 +204,11 @@ void iwl_mvm_temp_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) | |||
204 | if (WARN_ON(ths_crossed >= IWL_MAX_DTS_TRIPS)) | 204 | if (WARN_ON(ths_crossed >= IWL_MAX_DTS_TRIPS)) |
205 | return; | 205 | return; |
206 | 206 | ||
207 | /* | ||
208 | * We are now handling a temperature notification from the firmware | ||
209 | * in ASYNC and hold the mutex. thermal_notify_framework will call | ||
210 | * us back through get_temp() which ought to send a SYNC command to | ||
211 | * the firmware and hence to take the mutex. | ||
212 | * Avoid the deadlock by unlocking the mutex here. | ||
213 | */ | ||
214 | if (mvm->tz_device.tzone) { | 207 | if (mvm->tz_device.tzone) { |
215 | struct iwl_mvm_thermal_device *tz_dev = &mvm->tz_device; | 208 | struct iwl_mvm_thermal_device *tz_dev = &mvm->tz_device; |
216 | 209 | ||
217 | mutex_unlock(&mvm->mutex); | ||
218 | thermal_notify_framework(tz_dev->tzone, | 210 | thermal_notify_framework(tz_dev->tzone, |
219 | tz_dev->fw_trips_index[ths_crossed]); | 211 | tz_dev->fw_trips_index[ths_crossed]); |
220 | mutex_lock(&mvm->mutex); | ||
221 | } | 212 | } |
222 | #endif /* CONFIG_THERMAL */ | 213 | #endif /* CONFIG_THERMAL */ |
223 | } | 214 | } |