On Fri, 2010-04-09 at 11:46 +0300, Juuso Oikarinen wrote: > Currently the dynamic ps timer is restarted for all non-multicast rx data > frames. Congested networks have lots of broadcast traffic, which will cause > the power save to remain disabled for much of the time, which causes trouble > for battery-powered devices. > > Fix this by preventing rx broadcast data frames from restarting the > dynamic ps timer. > > Signed-off-by: Juuso Oikarinen <juuso.oikarinen@xxxxxxxxx> > --- > net/mac80211/rx.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c > index c0ad7e8..8cdcc4f 100644 > --- a/net/mac80211/rx.c > +++ b/net/mac80211/rx.c > @@ -1786,6 +1786,7 @@ ieee80211_rx_h_data(struct ieee80211_rx_data *rx) > > if (ieee80211_is_data(hdr->frame_control) && > !is_multicast_ether_addr(hdr->addr1) && > + !is_broadcast_ether_addr(hdr->addr1) && > local->hw.conf.dynamic_ps_timeout > 0 && local->ps_sdata) { Huh? I'm starting to doubt my own sanity now! Formal logic: (bcast => mcast) <=> (!mcast => !bcast) Thus (!mcast && !bcast) <=> (!mcast) right? johannes -- 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