Here's my proposal how to implement beacon filtering in mac80211. The basic idea is simple, the driver enables filtering whenever mac80211 enables power save and the driver calls ieee80211_beacon_loss() whenever hardware informs about beacon loss. I have tested this with stlc45xx and based on simple tests this seems to work. For reference I earlier sent stlc45xx patch to this list. v2: o rebase to 2.6.29-rc7-wl o rename ieee80211_rx_trigger() to ieee80211_sta_rx_notify() o move check for sta mode in ieee80211_sta_rx_notify() to rx.c o move unicast check from rx.c to ieee80211_sta_rx_notify() o add comment for setting last_beacon in ieee80211_rx_mgmt_assoc_resp() o rename IEEE80211_HW_BEACON_FILTERING to IEEE80211_HW_BEACON_FILTER o send probe request from ieee80211_beacon_loss_work() o API documentation o enable beacon filtering only when power save is enabled o disable power save (and hence beacon filtering) while scanning to make it possible to have reliable scan results even when beacon filtering is enabled TODO: o test with different hardware (without beacon filtering) to avoid regressions --- Kalle Valo (4): mac80211: add beacon filtering support mac80211: disable power save when scanning mac80211: track beacons separately from the rx path activity mac80211: decrease execution of the associated timer include/net/mac80211.h | 30 +++++++++-- net/mac80211/ieee80211_i.h | 5 ++ net/mac80211/iface.c | 3 + net/mac80211/mlme.c | 124 +++++++++++++++++++++++++++++++++----------- net/mac80211/rx.c | 9 +++ net/mac80211/scan.c | 54 ++++++++++++++++++- 6 files changed, 185 insertions(+), 40 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