diff options
author | Johannes Berg <johannes.berg@intel.com> | 2013-01-24 17:48:23 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-02-12 10:52:25 -0500 |
commit | 210a544e78c7ce4e5aa5ec199eeb807b0f03b5b2 (patch) | |
tree | 0afac8659a19ab3a93ae636ecb87da0c9c7afe17 /drivers/net/wireless/iwlwifi/mvm/mac80211.c | |
parent | 739e42f4f3fc5906db049b54e45498c7ab5bba81 (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.c | 10 |
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. |