From 707be384416fefbd5f2d81daed39e24998701471 Mon Sep 17 00:00:00 2001 From: Eliad Peller Date: Thu, 12 Jul 2012 17:35:33 +0300 Subject: [PATCH] --- yaml --- r: 315587 b: refs/heads/master c: 88bc40e8c3d3bca7d26c756bb0b823d4abad3355 h: refs/heads/master i: 315585: fb9274b81360dd596abf4b55f9180511e6dedc4b 315583: 256e6f135e4a80986bac02c0bdf930aca507d184 v: v3 --- [refs] | 2 +- trunk/net/mac80211/mlme.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 39839d0e89c0..3b33126f79f4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 14cdf112019c1d4bc0f1bf9a9c832be641dbe25a +refs/heads/master: 88bc40e8c3d3bca7d26c756bb0b823d4abad3355 diff --git a/trunk/net/mac80211/mlme.c b/trunk/net/mac80211/mlme.c index 4efcbf89a72d..7c0613ce38bc 100644 --- a/trunk/net/mac80211/mlme.c +++ b/trunk/net/mac80211/mlme.c @@ -1364,6 +1364,17 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, } mutex_unlock(&local->sta_mtx); + /* + * if we want to get out of ps before disassoc (why?) we have + * to do it before sending disassoc, as otherwise the null-packet + * won't be valid. + */ + if (local->hw.conf.flags & IEEE80211_CONF_PS) { + local->hw.conf.flags &= ~IEEE80211_CONF_PS; + ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); + } + local->ps_sdata = NULL; + /* flush out any pending frame (e.g. DELBA) before deauth/disassoc */ if (tx) drv_flush(local, false); @@ -1396,12 +1407,6 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, del_timer_sync(&local->dynamic_ps_timer); cancel_work_sync(&local->dynamic_ps_enable_work); - if (local->hw.conf.flags & IEEE80211_CONF_PS) { - local->hw.conf.flags &= ~IEEE80211_CONF_PS; - ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); - } - local->ps_sdata = NULL; - /* Disable ARP filtering */ if (sdata->vif.bss_conf.arp_filter_enabled) { sdata->vif.bss_conf.arp_filter_enabled = false;