aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm/mac80211.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-01-24 17:48:23 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-02-12 10:52:25 -0500
commit210a544e78c7ce4e5aa5ec199eeb807b0f03b5b2 (patch)
tree0afac8659a19ab3a93ae636ecb87da0c9c7afe17 /drivers/net/wireless/iwlwifi/mvm/mac80211.c
parent739e42f4f3fc5906db049b54e45498c7ab5bba81 (diff)
iwlwifi: mvm: don't delay the association until after beacon
If we haven't heard a beacon before we associate we can still start the association process and set the MAC in the firmware to associated only after having received a beacon with DTIM period by reacting to the new change flag (BSS_CHANGED_DTIM_PERIOD) from mac80211. This reduces the association time in these cases. 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.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
index e0d79e328d0c..6bfcb3b5bfa6 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
@@ -114,7 +114,6 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
114 IEEE80211_HW_QUEUE_CONTROL | 114 IEEE80211_HW_QUEUE_CONTROL |
115 IEEE80211_HW_WANT_MONITOR_VIF | 115 IEEE80211_HW_WANT_MONITOR_VIF |
116 IEEE80211_HW_SCAN_WHILE_IDLE | 116 IEEE80211_HW_SCAN_WHILE_IDLE |
117 IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC |
118 IEEE80211_HW_SUPPORTS_PS | 117 IEEE80211_HW_SUPPORTS_PS |
119 IEEE80211_HW_SUPPORTS_DYNAMIC_PS | 118 IEEE80211_HW_SUPPORTS_DYNAMIC_PS |
120 IEEE80211_HW_AMPDU_AGGREGATION; 119 IEEE80211_HW_AMPDU_AGGREGATION;
@@ -671,8 +670,6 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
671 IWL_ERR(mvm, "failed to update quotas\n"); 670 IWL_ERR(mvm, "failed to update quotas\n");
672 return; 671 return;
673 } 672 }
674 iwl_mvm_remove_time_event(mvm, mvmvif,
675 &mvmvif->time_event_data);
676 } else if (mvmvif->ap_sta_id != IWL_MVM_STATION_COUNT) { 673 } else if (mvmvif->ap_sta_id != IWL_MVM_STATION_COUNT) {
677 /* remove AP station now that the MAC is unassoc */ 674 /* remove AP station now that the MAC is unassoc */
678 ret = iwl_mvm_rm_sta_id(mvm, vif, mvmvif->ap_sta_id); 675 ret = iwl_mvm_rm_sta_id(mvm, vif, mvmvif->ap_sta_id);
@@ -684,6 +681,13 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
684 if (ret) 681 if (ret)
685 IWL_ERR(mvm, "failed to update quotas\n"); 682 IWL_ERR(mvm, "failed to update quotas\n");
686 } 683 }
684 } else if (changes & BSS_CHANGED_DTIM_PERIOD) {
685 /*
686 * We received a beacon _after_ association so
687 * remove the session protection.
688 */
689 iwl_mvm_remove_time_event(mvm, mvmvif,
690 &mvmvif->time_event_data);
687 } else if (changes & BSS_CHANGED_PS) { 691 } else if (changes & BSS_CHANGED_PS) {
688 /* 692 /*
689 * TODO: remove this temporary code. 693 * TODO: remove this temporary code.