aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-08-07 16:28:09 +0200
committerJohn W. Linville <linville@tuxdriver.com>2009-08-14 09:13:43 -0400
commitab5b5342fd0ba5b9a2f58a94c5d41dd074b7c48e (patch)
tree1a1797f02a5994981bfa91048ba97878ed410291 /include/net
parentc555b9b3713e05586fabe85f4e46f28859e72930 (diff)
downloadkernel_samsung_tuna-ab5b5342fd0ba5b9a2f58a94c5d41dd074b7c48e.zip
kernel_samsung_tuna-ab5b5342fd0ba5b9a2f58a94c5d41dd074b7c48e.tar.gz
kernel_samsung_tuna-ab5b5342fd0ba5b9a2f58a94c5d41dd074b7c48e.tar.bz2
mac80211: document TX powersave filter requirements
This documents what's required to implement that TX powersave filter properly wrt. handling hardware queues. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/mac80211.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 467eed7..cd4eb20 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -239,7 +239,14 @@ struct ieee80211_bss_conf {
* @IEEE80211_TX_CTL_AMPDU: this frame should be sent as part of an A-MPDU
* @IEEE80211_TX_CTL_INJECTED: Frame was injected, internal to mac80211.
* @IEEE80211_TX_STAT_TX_FILTERED: The frame was not transmitted
- * because the destination STA was in powersave mode.
+ * because the destination STA was in powersave mode. Note that to
+ * avoid race conditions, the filter must be set by the hardware or
+ * firmware upon receiving a frame that indicates that the station
+ * went to sleep (must be done on device to filter frames already on
+ * the queue) and may only be unset after mac80211 gives the OK for
+ * that by setting the IEEE80211_TX_CTL_CLEAR_PS_FILT (see above),
+ * since only then is it guaranteed that no more frames are in the
+ * hardware queue.
* @IEEE80211_TX_STAT_ACK: Frame was acknowledged
* @IEEE80211_TX_STAT_AMPDU: The frame was aggregated, so status
* is for the whole aggregation.