diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-04-16 11:04:25 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-04-22 16:57:16 -0400 |
commit | 955394c98c9cb79bdb3e6b479695af3a90ea0623 (patch) | |
tree | db4e8341606ecd2683ce1649ca3f0dcfd656c675 | |
parent | bbbdff9e00449928f228867076a07bdfecd3dca8 (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.h | 60 |
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 | /** |