Here's my suggestion for how to implement ps-poll in mac80211. Also this fixes the case when dynamic_ps_timeout is zero. I decided to use ps-polling when dynamic_ps_timeout is zero. If userspace sets timeout to zero, it means that it's ready to sacrifice throughput over power consumption. But in case there throughput is more, userspace can set timeout to a non-zero value and null frame wakeup is used instead, throughput is higher but power consumption also increases. Most probably this patchset breaks ath9k multicast handling. I recommend ath9k to try do multicast tim bit handling in hardware, I would really assume that to be possible. But if that's really impossible, then it can be done in the driver. But having support for waking up multicast tim bits in mac80211 is unreliable and complicated the implementation, I just recommend dropping it. Open question is that should power save be disabled whenever mac80211 is ps-polling the frames. For example, p54/stlc45xx does not require to disable power save in that case, it just stays awake long enough to receive the data frame from the AP. So I did not disable power save mode in this case, but I would like to hear comments what other hardware needs. v2: o RX_CONTINUE after sending ps-poll frame in ieee80211_rx_h_check_more_data() o remove leftover debug printk o use ps-poll only when dynamic_ps_timeout is zero, otherwise null frame wakeup is used --- Kalle Valo (2): mac80211: use ps-poll when dynamic power save mode is disabled mac80211: remove multicast check from check_tim() net/mac80211/ieee80211_i.h | 3 ++ net/mac80211/mlme.c | 69 +++++++++++++++++++++++++++++++++++++------- net/mac80211/rx.c | 34 ++++++++++++++++++++++ 3 files changed, 95 insertions(+), 11 deletions(-) -- 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