On Mon, Mar 2, 2009 at 8:20 PM, Vivek Natarajan <vivek.natraj@xxxxxxxxx> wrote: > 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@xxxxxxxxxxx> > --- > net/mac80211/mlme.c | 3 +-- > 1 files changed, 1 insertions(+), 2 deletions(-) > > diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c > index 7f23858..ac10b21 100644 > --- a/net/mac80211/mlme.c > +++ b/net/mac80211/mlme.c > @@ -1457,8 +1457,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); > > - 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) { if (local->hw.conf.dynamic_ps_timeout > 0) { local->hw.conf.flags &= ~IEEE80211_CONF_PS; ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); ieee80211_send_nullfunc(local, sdata, 0); } else { local->pspolling = true; ieee80211_send_pspoll(local, sdata); Although the above patch is a right approach, it opens up an issue with pspolling. In the above chunk of code, if the timeout is zero, instead of sending a null frame to correct the state in the AP, we may keep on sending ps poll frames ( And the ps state in the AP will never be corrected) I have not tested pspolling with ath9k. But this seems to be an issue. Thoughts? VIvek. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html