On Mon, 2010-02-08 at 17:47 +0530, Vivek Natarajan wrote: > diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h > index 3067fbd..f50a17a 100644 > --- a/net/mac80211/ieee80211_i.h > +++ b/net/mac80211/ieee80211_i.h > @@ -316,6 +316,7 @@ enum ieee80211_sta_flags { > IEEE80211_STA_CSA_RECEIVED = BIT(5), > IEEE80211_STA_MFP_ENABLED = BIT(6), > IEEE80211_STA_UAPSD_ENABLED = BIT(7), > + IEEE80211_STA_NULLFUNC_ACKED = BIT(8), Good idea :) > + if (ieee80211_is_nullfunc(fc) && ieee80211_has_pm(fc) && > + (local->hw.flags & IEEE80211_HW_TX_STATUS) && > + local->ps_sdata && !(local->scanning)) { > + if (info->flags & IEEE80211_TX_STAT_ACK) { > + local->ps_sdata->u.mgd.flags |= > + IEEE80211_STA_NULLFUNC_ACKED; > + ieee80211_queue_work(&local->hw, > + &local->dynamic_ps_enable_work); > + } else > + mod_timer(&local->dynamic_ps_timer, jiffies + > + msecs_to_jiffies(10)); > + } I think this needs to check against injected frames as well [and personally, I'd prefer if you only indented the stuff belonging into the first if by 4 spaces to match up with the "if ("]. Also, you're still missing documentation on IEEE80211_HW_TX_STATUS. Thanks, johannes
Attachment:
signature.asc
Description: This is a digitally signed message part