mac80211: Always send a null data frame if TIM bit is set.
authorVivek Natarajan <vivek.natraj@gmail.com>
Mon, 2 Mar 2009 14:50:30 +0000 (20:20 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 5 Mar 2009 19:39:38 +0000 (14:39 -0500)
If the AP thinks we are in power save state eventhough we are not truly
in that state, it sets the TIM bit and does not send a data frame unless
we send a null data frame to correct the state in the AP.
This might happen if the null data frame for wake up is lost in the air
after we disable power save.

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/mlme.c

index 52d876e..391445c 100644 (file)
@@ -1458,8 +1458,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
        ieee80211_sta_wmm_params(local, ifmgd, elems.wmm_param,
                                 elems.wmm_param_len);
 
        ieee80211_sta_wmm_params(local, ifmgd, elems.wmm_param,
                                 elems.wmm_param_len);
 
-       if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK &&
-           local->hw.conf.flags & IEEE80211_CONF_PS) {
+       if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) {
                directed_tim = ieee80211_check_tim(&elems, ifmgd->aid);
 
                if (directed_tim) {
                directed_tim = ieee80211_check_tim(&elems, ifmgd->aid);
 
                if (directed_tim) {