iwlwifi: mvm: change scan timeout to a delayed work
[cascardo/linux.git] / drivers / net / wireless / intel / iwlwifi / mvm / tt.c
index f1f2825..58fc7b3 100644 (file)
@@ -204,20 +204,11 @@ void iwl_mvm_temp_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
        if (WARN_ON(ths_crossed >= IWL_MAX_DTS_TRIPS))
                return;
 
-       /*
-        * We are now handling a temperature notification from the firmware
-        * in ASYNC and hold the mutex. thermal_notify_framework will call
-        * us back through get_temp() which ought to send a SYNC command to
-        * the firmware and hence to take the mutex.
-        * Avoid the deadlock by unlocking the mutex here.
-        */
        if (mvm->tz_device.tzone) {
                struct iwl_mvm_thermal_device *tz_dev = &mvm->tz_device;
 
-               mutex_unlock(&mvm->mutex);
                thermal_notify_framework(tz_dev->tzone,
                                         tz_dev->fw_trips_index[ths_crossed]);
-               mutex_lock(&mvm->mutex);
        }
 #endif /* CONFIG_THERMAL */
 }
@@ -368,16 +359,14 @@ static void iwl_mvm_tt_smps_iterator(void *_data, u8 *mac,
 
 static void iwl_mvm_tt_tx_protection(struct iwl_mvm *mvm, bool enable)
 {
-       struct ieee80211_sta *sta;
        struct iwl_mvm_sta *mvmsta;
        int i, err;
 
        for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
-               sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i],
-                                               lockdep_is_held(&mvm->mutex));
-               if (IS_ERR_OR_NULL(sta))
+               mvmsta = iwl_mvm_sta_from_staid_protected(mvm, i);
+               if (!mvmsta)
                        continue;
-               mvmsta = iwl_mvm_sta_from_mac80211(sta);
+
                if (enable == mvmsta->tt_tx_protection)
                        continue;
                err = iwl_mvm_tx_protection(mvm, mvmsta, enable);
@@ -796,9 +785,6 @@ static int iwl_mvm_tcool_get_cur_state(struct thermal_cooling_device *cdev,
 {
        struct iwl_mvm *mvm = (struct iwl_mvm *)(cdev->devdata);
 
-       if (test_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status))
-               return -EBUSY;
-
        *state = mvm->cooling_dev.cur_state;
 
        return 0;
@@ -813,9 +799,6 @@ static int iwl_mvm_tcool_set_cur_state(struct thermal_cooling_device *cdev,
        if (!mvm->ucode_loaded || !(mvm->cur_ucode == IWL_UCODE_REGULAR))
                return -EIO;
 
-       if (test_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status))
-               return -EBUSY;
-
        mutex_lock(&mvm->mutex);
 
        if (new_state >= ARRAY_SIZE(iwl_mvm_cdev_budgets)) {