From be2056fce8f7f680594ba8e28512b45c360e507e Mon Sep 17 00:00:00 2001 From: Ilan Peer Date: Wed, 4 Dec 2013 16:47:14 +0200 Subject: [PATCH] iwlwifi: mvm: Do not allow AP MAC context update if not active Fix a regression introduced in "iwlwifi: mvm: fix ht protection flags" where an AP/IBSS MAC context could have been updated even before the context was added to the FW. This fix avoids the following warning: WARNING: ... at .../drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c:1132 iwl_mvm_mac_ctxt_changed+0x75/0x90 [iwlmvm]() Changing inactive MAC 0c:8b:fd:01:1a:30/3 Modules linked in: [...] Call Trace: [] dump_stack+0x41/0x52 [] warn_slowpath_common+0x84/0xa0 [] ? iwl_mvm_mac_ctxt_changed+0x75/0x90 [iwlmvm] [] ? iwl_mvm_mac_ctxt_changed+0x75/0x90 [iwlmvm] [] warn_slowpath_fmt+0x33/0x40 [] iwl_mvm_mac_ctxt_changed+0x75/0x90 [iwlmvm] [] iwl_mvm_bss_info_changed+0x22a/0x4b0 [iwlmvm] [] ? mutex_unlock+0xd/0x10 [] ? iwl_mvm_configure_filter+0x58/0x70 [iwlmvm] [] ? iwl_mvm_mac_tx+0xc0/0xc0 [iwlmvm] [] ieee80211_bss_info_change_notify+0xa3/0x1d0 [mac80211] [] ? ieee80211_del_virtual_monitor+0x127/0x1f0 [mac80211] [] ieee80211_do_open+0x12c/0xeb0 [mac80211] [] ? __raw_notifier_call_chain+0x1e/0x30 [] ? raw_notifier_call_chain+0x1f/0x30 [] ieee80211_open+0x5d/0x60 [mac80211] [] __dev_open+0xab/0x140 [] ? _raw_spin_unlock_bh+0x2a/0x30 [] __dev_change_flags+0x81/0x160 [] ? __lock_is_held+0x3c/0x60 [] dev_change_flags+0x21/0x60 Signed-off-by: Ilan Peer Reported-by: Johannes Berg Reviewed-by: Johannes Berg Signed-off-by: Emmanuel Grumbach --- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 272aabd25cb8..b61d5a236ebe 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c @@ -1053,11 +1053,16 @@ iwl_mvm_bss_info_changed_ap_ibss(struct iwl_mvm *mvm, struct ieee80211_bss_conf *bss_conf, u32 changes) { + struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); enum ieee80211_bss_change ht_change = BSS_CHANGED_ERP_CTS_PROT | BSS_CHANGED_HT | BSS_CHANGED_BANDWIDTH; int ret; + /* Changes will be applied when the AP/IBSS is started */ + if (!mvmvif->ap_ibss_active) + return; + if (changes & ht_change) { ret = iwl_mvm_mac_ctxt_changed(mvm, vif); if (ret) -- 2.39.5