X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Fmac80211%2Frx.c;h=3e57f96c9666daf4b420cfd663864878bef34204;hb=084c6c5013af3c62f1c344435214496f5ac999f2;hp=c24ca0d0f4697ea7040c813dbf24d1c32f707329;hpb=0a33d88d072ff589f0cfa18212ef8565dc1c82f2;p=~andy%2Flinux diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index c24ca0d0f46..3e57f96c966 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -1128,6 +1128,13 @@ static void sta_ps_end(struct sta_info *sta) sta->sta.addr, sta->sta.aid); if (test_sta_flag(sta, WLAN_STA_PS_DRIVER)) { + /* + * Clear the flag only if the other one is still set + * so that the TX path won't start TX'ing new frames + * directly ... In the case that the driver flag isn't + * set ieee80211_sta_ps_deliver_wakeup() will clear it. + */ + clear_sta_flag(sta, WLAN_STA_PS_STA); ps_dbg(sta->sdata, "STA %pM aid %d driver-ps-blocked\n", sta->sta.addr, sta->sta.aid); return;