diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2013-02-11 08:56:01 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-02-12 10:07:14 -0500 |
commit | 5360cfb2bcbdd7a906cf290036bd406985973e88 (patch) | |
tree | b7b4220cfa4df37a368840899a11150ba836a7d5 /drivers/net/wireless/iwlwifi/mvm/mac80211.c | |
parent | a3777e0fdd4abb2f04202580c236d64ecdaac6f2 (diff) |
iwlwifi: mvm: use atomic interface iteration to avoid deadlock
Using the non-atomic version creates a dependency between
mac80211's iflist_mtx and mvm->mutex. Use the atomic version
instead which doesn't take iflist_mtx but can't sleep, so
send the HCMD in ASYNC.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/mac80211.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index a6b05a02cfd4..64acc4a597fb 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
@@ -475,7 +475,7 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw, | |||
475 | if (mvm->vif_count > 1) { | 475 | if (mvm->vif_count > 1) { |
476 | IWL_DEBUG_MAC80211(mvm, | 476 | IWL_DEBUG_MAC80211(mvm, |
477 | "Disable power on existing interfaces\n"); | 477 | "Disable power on existing interfaces\n"); |
478 | ieee80211_iterate_active_interfaces( | 478 | ieee80211_iterate_active_interfaces_atomic( |
479 | mvm->hw, | 479 | mvm->hw, |
480 | IEEE80211_IFACE_ITER_NORMAL, | 480 | IEEE80211_IFACE_ITER_NORMAL, |
481 | iwl_mvm_pm_disable_iterator, mvm); | 481 | iwl_mvm_pm_disable_iterator, mvm); |