aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorKalle Valo <kalle.valo@nokia.com>2009-03-22 15:57:35 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-03-27 20:13:13 -0400
commit04de83815993714a7ba2618f637fa1092a5f664b (patch)
tree7e491e890a66a3be3e4eae9636914858a6f3bba8 /include/net
parenta08c1c1ac0c26229ca1ca45d554b209a56edc8be (diff)
mac80211: add beacon filtering support
Add IEEE80211_HW_BEACON_FILTERING flag so that driver inform that it supports beacon filtering. Drivers need to call the new function ieee80211_beacon_loss() to notify about beacon loss. Signed-off-by: Kalle Valo <kalle.valo@nokia.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/mac80211.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 174dc1d7526b..d881ed8ad2c1 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -882,6 +882,10 @@ enum ieee80211_tkip_key_type {
882 * 882 *
883 * @IEEE80211_HW_MFP_CAPABLE: 883 * @IEEE80211_HW_MFP_CAPABLE:
884 * Hardware supports management frame protection (MFP, IEEE 802.11w). 884 * Hardware supports management frame protection (MFP, IEEE 802.11w).
885 *
886 * @IEEE80211_HW_BEACON_FILTER:
887 * Hardware supports dropping of irrelevant beacon frames to
888 * avoid waking up cpu.
885 */ 889 */
886enum ieee80211_hw_flags { 890enum ieee80211_hw_flags {
887 IEEE80211_HW_RX_INCLUDES_FCS = 1<<1, 891 IEEE80211_HW_RX_INCLUDES_FCS = 1<<1,
@@ -897,6 +901,7 @@ enum ieee80211_hw_flags {
897 IEEE80211_HW_PS_NULLFUNC_STACK = 1<<11, 901 IEEE80211_HW_PS_NULLFUNC_STACK = 1<<11,
898 IEEE80211_HW_SUPPORTS_DYNAMIC_PS = 1<<12, 902 IEEE80211_HW_SUPPORTS_DYNAMIC_PS = 1<<12,
899 IEEE80211_HW_MFP_CAPABLE = 1<<13, 903 IEEE80211_HW_MFP_CAPABLE = 1<<13,
904 IEEE80211_HW_BEACON_FILTER = 1<<14,
900}; 905};
901 906
902/** 907/**
@@ -1121,6 +1126,24 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw,
1121 */ 1126 */
1122 1127
1123/** 1128/**
1129 * DOC: Beacon filter support
1130 *
1131 * Some hardware have beacon filter support to reduce host cpu wakeups
1132 * which will reduce system power consumption. It usuallly works so that
1133 * the firmware creates a checksum of the beacon but omits all constantly
1134 * changing elements (TSF, TIM etc). Whenever the checksum changes the
1135 * beacon is forwarded to the host, otherwise it will be just dropped. That
1136 * way the host will only receive beacons where some relevant information
1137 * (for example ERP protection or WMM settings) have changed.
1138 *
1139 * Beacon filter support is informed with %IEEE80211_HW_BEACON_FILTER flag.
1140 * The driver needs to enable beacon filter support whenever power save is
1141 * enabled, that is %IEEE80211_CONF_PS is set. When power save is enabled,
1142 * the stack will not check for beacon miss at all and the driver needs to
1143 * notify about complete loss of beacons with ieee80211_beacon_loss().
1144 */
1145
1146/**
1124 * DOC: Frame filtering 1147 * DOC: Frame filtering
1125 * 1148 *
1126 * mac80211 requires to see many management frames for proper 1149 * mac80211 requires to see many management frames for proper
@@ -1970,6 +1993,16 @@ void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra,
1970struct ieee80211_sta *ieee80211_find_sta(struct ieee80211_hw *hw, 1993struct ieee80211_sta *ieee80211_find_sta(struct ieee80211_hw *hw,
1971 const u8 *addr); 1994 const u8 *addr);
1972 1995
1996/**
1997 * ieee80211_beacon_loss - inform hardware does not receive beacons
1998 *
1999 * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf.
2000 *
2001 * When beacon filtering is enabled with IEEE80211_HW_BEACON_FILTERING and
2002 * IEEE80211_CONF_PS is set, the driver needs to inform whenever the
2003 * hardware is not receiving beacons with this function.
2004 */
2005void ieee80211_beacon_loss(struct ieee80211_vif *vif);
1973 2006
1974/* Rate control API */ 2007/* Rate control API */
1975 2008