aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-04-16 11:04:25 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-04-22 16:57:16 -0400
commit955394c98c9cb79bdb3e6b479695af3a90ea0623 (patch)
treedb4e8341606ecd2683ce1649ca3f0dcfd656c675
parentbbbdff9e00449928f228867076a07bdfecd3dca8 (diff)
mac80211: document powersaving/beacon filter future
Document what mac80211 will do in the future to help save power. We're not quite there yet, but a plan helps. Also, while at it, fix the docs wrt. multicast traffic. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Reviewed-by: Kalle Valo <kalle.valo@iki.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--include/net/mac80211.h60
1 files changed, 50 insertions, 10 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index a593bedcfeda..52808bdcc6ca 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1109,11 +1109,9 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw,
1109 * need software support for parsing the TIM bitmap. This is also supported 1109 * need software support for parsing the TIM bitmap. This is also supported
1110 * by mac80211 by combining the %IEEE80211_HW_SUPPORTS_PS and 1110 * by mac80211 by combining the %IEEE80211_HW_SUPPORTS_PS and
1111 * %IEEE80211_HW_PS_NULLFUNC_STACK flags. The hardware is of course still 1111 * %IEEE80211_HW_PS_NULLFUNC_STACK flags. The hardware is of course still
1112 * required to pass up beacons. Additionally, in this case, mac80211 will 1112 * required to pass up beacons. The hardware is still required to handle
1113 * wake up the hardware when multicast traffic is announced in the beacon. 1113 * waking up for multicast traffic; if it cannot the driver must handle that
1114 * 1114 * as best as it can, mac80211 is too slow.
1115 * FIXME: I don't think we can be fast enough in software when we want to
1116 * receive multicast traffic?
1117 * 1115 *
1118 * Dynamic powersave mode is an extension to normal powersave mode in which 1116 * Dynamic powersave mode is an extension to normal powersave mode in which
1119 * the hardware stays awake for a user-specified period of time after sending 1117 * the hardware stays awake for a user-specified period of time after sending
@@ -1134,11 +1132,53 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw,
1134 * way the host will only receive beacons where some relevant information 1132 * way the host will only receive beacons where some relevant information
1135 * (for example ERP protection or WMM settings) have changed. 1133 * (for example ERP protection or WMM settings) have changed.
1136 * 1134 *
1137 * Beacon filter support is informed with %IEEE80211_HW_BEACON_FILTER flag. 1135 * Beacon filter support is advertised with the %IEEE80211_HW_BEACON_FILTER
1138 * The driver needs to enable beacon filter support whenever power save is 1136 * hardware capability. The driver needs to enable beacon filter support
1139 * enabled, that is %IEEE80211_CONF_PS is set. When power save is enabled, 1137 * whenever power save is enabled, that is %IEEE80211_CONF_PS is set. When
1140 * the stack will not check for beacon miss at all and the driver needs to 1138 * power save is enabled, the stack will not check for beacon loss and the
1141 * notify about complete loss of beacons with ieee80211_beacon_loss(). 1139 * driver needs to notify about loss of beacons with ieee80211_beacon_loss().
1140 *
1141 * The time (or number of beacons missed) until the firmware notifies the
1142 * driver of a beacon loss event (which in turn causes the driver to call
1143 * ieee80211_beacon_loss()) should be configurable and will be controlled
1144 * by mac80211 and the roaming algorithm in the future.
1145 *
1146 * Since there may be constantly changing information elements that nothing
1147 * in the software stack cares about, we will, in the future, have mac80211
1148 * tell the driver which information elements are interesting in the sense
1149 * that we want to see changes in them. This will include
1150 * - a list of information element IDs
1151 * - a list of OUIs for the vendor information element
1152 *
1153 * Ideally, the hardware would filter out any beacons without changes in the
1154 * requested elements, but if it cannot support that it may, at the expense
1155 * of some efficiency, filter out only a subset. For example, if the device
1156 * doesn't support checking for OUIs it should pass up all changes in all
1157 * vendor information elements.
1158 *
1159 * Note that change, for the sake of simplification, also includes information
1160 * elements appearing or disappearing from the beacon.
1161 *
1162 * Some hardware supports an "ignore list" instead, just make sure nothing
1163 * that was requested is on the ignore list, and include commonly changing
1164 * information element IDs in the ignore list, for example 11 (BSS load) and
1165 * the various vendor-assigned IEs with unknown contents (128, 129, 133-136,
1166 * 149, 150, 155, 156, 173, 176, 178, 179, 219); for forward compatibility
1167 * it could also include some currently unused IDs.
1168 *
1169 *
1170 * In addition to these capabilities, hardware should support notifying the
1171 * host of changes in the beacon RSSI. This is relevant to implement roaming
1172 * when no traffic is flowing (when traffic is flowing we see the RSSI of
1173 * the received data packets). This can consist in notifying the host when
1174 * the RSSI changes significantly or when it drops below or rises above
1175 * configurable thresholds. In the future these thresholds will also be
1176 * configured by mac80211 (which gets them from userspace) to implement
1177 * them as the roaming algorithm requires.
1178 *
1179 * If the hardware cannot implement this, the driver should ask it to
1180 * periodically pass beacon frames to the host so that software can do the
1181 * signal strength threshold checking.
1142 */ 1182 */
1143 1183
1144/** 1184/**