diff options
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 15 |
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(); |