aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 1374b8c750ab..dac8bd37dcf5 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -744,6 +744,11 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
744 bss_info_changed |= BSS_CHANGED_BASIC_RATES; 744 bss_info_changed |= BSS_CHANGED_BASIC_RATES;
745 ieee80211_bss_info_change_notify(sdata, bss_info_changed); 745 ieee80211_bss_info_change_notify(sdata, bss_info_changed);
746 746
747 if (local->powersave) {
748 local->hw.conf.flags |= IEEE80211_CONF_PS;
749 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
750 }
751
747 netif_tx_start_all_queues(sdata->dev); 752 netif_tx_start_all_queues(sdata->dev);
748 netif_carrier_on(sdata->dev); 753 netif_carrier_on(sdata->dev);
749 754
@@ -812,7 +817,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
812{ 817{
813 struct ieee80211_local *local = sdata->local; 818 struct ieee80211_local *local = sdata->local;
814 struct sta_info *sta; 819 struct sta_info *sta;
815 u32 changed = 0; 820 u32 changed = 0, config_changed = 0;
816 821
817 rcu_read_lock(); 822 rcu_read_lock();
818 823
@@ -859,8 +864,14 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
859 864
860 local->hw.conf.ht.enabled = false; 865 local->hw.conf.ht.enabled = false;
861 local->oper_channel_type = NL80211_CHAN_NO_HT; 866 local->oper_channel_type = NL80211_CHAN_NO_HT;
862 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_HT); 867 config_changed |= IEEE80211_CONF_CHANGE_HT;
868
869 if (local->hw.conf.flags & IEEE80211_CONF_PS) {
870 local->hw.conf.flags &= ~IEEE80211_CONF_PS;
871 config_changed |= IEEE80211_CONF_CHANGE_PS;
872 }
863 873
874 ieee80211_hw_config(local, config_changed);
864 ieee80211_bss_info_change_notify(sdata, changed); 875 ieee80211_bss_info_change_notify(sdata, changed);
865 876
866 rcu_read_lock(); 877 rcu_read_lock();