1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>Chapter&#160;10.&#160;Beacon filter support</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="The 802.11 subsystems &#8211; for kernel developers"><link rel="up" href="advanced.html" title="Part&#160;II.&#160;Advanced driver interface"><link rel="prev" href="powersave.html" title="Chapter&#160;9.&#160;Powersave support"><link rel="next" href="API-ieee80211-beacon-loss.html" title="ieee80211_beacon_loss"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&#160;10.&#160;Beacon filter support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="powersave.html">Prev</a>&#160;</td><th width="60%" align="center">Part&#160;II.&#160;Advanced driver interface</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-ieee80211-beacon-loss.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="beacon-filter"></a>Chapter&#160;10.&#160;Beacon filter support</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="refentrytitle"><a href="API-ieee80211-beacon-loss.html"><span class="phrase">ieee80211_beacon_loss</span></a></span><span class="refpurpose"> &#8212; 
2  inform hardware does not receive beacons
3 </span></dt></dl></div><p>
4   </p><p>
5   Some hardware have beacon filter support to reduce host cpu wakeups
6   which will reduce system power consumption. It usually works so that
7   the firmware creates a checksum of the beacon but omits all constantly
8   changing elements (TSF, TIM etc). Whenever the checksum changes the
9   beacon is forwarded to the host, otherwise it will be just dropped. That
10   way the host will only receive beacons where some relevant information
11   (for example ERP protection or WMM settings) have changed.
12   </p><p>
13   Beacon filter support is advertised with the <code class="constant">IEEE80211_VIF_BEACON_FILTER</code>
14   interface capability. The driver needs to enable beacon filter support
15   whenever power save is enabled, that is <code class="constant">IEEE80211_CONF_PS</code> is set. When
16   power save is enabled, the stack will not check for beacon loss and the
17   driver needs to notify about loss of beacons with <code class="function">ieee80211_beacon_loss</code>.
18   </p><p>
19   The time (or number of beacons missed) until the firmware notifies the
20   driver of a beacon loss event (which in turn causes the driver to call
21   <code class="function">ieee80211_beacon_loss</code>) should be configurable and will be controlled
22   by mac80211 and the roaming algorithm in the future.
23   </p><p>
24   Since there may be constantly changing information elements that nothing
25   in the software stack cares about, we will, in the future, have mac80211
26   tell the driver which information elements are interesting in the sense
27   that we want to see changes in them. This will include
28   - a list of information element IDs
29   - a list of OUIs for the vendor information element
30   </p><p>
31   Ideally, the hardware would filter out any beacons without changes in the
32   requested elements, but if it cannot support that it may, at the expense
33   of some efficiency, filter out only a subset. For example, if the device
34   doesn't support checking for OUIs it should pass up all changes in all
35   vendor information elements.
36   </p><p>
37   Note that change, for the sake of simplification, also includes information
38   elements appearing or disappearing from the beacon.
39   </p><p>
40   Some hardware supports an <span class="quote">&#8220;<span class="quote">ignore list</span>&#8221;</span> instead, just make sure nothing
41   that was requested is on the ignore list, and include commonly changing
42   information element IDs in the ignore list, for example 11 (BSS load) and
43   the various vendor-assigned IEs with unknown contents (128, 129, 133-136,
44   149, 150, 155, 156, 173, 176, 178, 179, 219); for forward compatibility
45   it could also include some currently unused IDs.
46   </p><p>
47   </p><p>
48   In addition to these capabilities, hardware should support notifying the
49   host of changes in the beacon RSSI. This is relevant to implement roaming
50   when no traffic is flowing (when traffic is flowing we see the RSSI of
51   the received data packets). This can consist in notifying the host when
52   the RSSI changes significantly or when it drops below or rises above
53   configurable thresholds. In the future these thresholds will also be
54   configured by mac80211 (which gets them from userspace) to implement
55   them as the roaming algorithm requires.
56   </p><p>
57   If the hardware cannot implement this, the driver should ask it to
58   periodically pass beacon frames to the host so that software can do the
59   signal strength threshold checking.
60</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="powersave.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="advanced.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-ieee80211-beacon-loss.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&#160;9.&#160;Powersave support&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">ieee80211_beacon_loss</span></td></tr></table></div></body></html>
61