summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2014-01-09 00:00:38 +0100
committerJohannes Berg <johannes.berg@intel.com>2014-01-10 09:50:02 +0100
commitb77cf4f8e1892e192ec52df5dd8c158b300fc496 (patch)
treeae0ba22c24b9c125a004ae672113cf1b8236d4f7 /include
parent03c8c06f2d080b841ecbfc63253228ba6efcab08 (diff)
downloadlinux-b77cf4f8e1892e192ec52df5dd8c158b300fc496.tar.gz
linux-b77cf4f8e1892e192ec52df5dd8c158b300fc496.tar.bz2
linux-b77cf4f8e1892e192ec52df5dd8c158b300fc496.zip
mac80211: handle MMPDUs at EOSP correctly
If a uAPSD service period ends with an MMPDU, we currently just send that MMPDU, but it obviously won't get the EOSP bit set as it doesn't have a QoS header. This contradicts the standard, so add a QoS-nulldata frame after the MMPDU to properly terminate the service period with a frame that has EOSP set. Also fix a bug wrt. the TID for the MMPDU, it shouldn't be set to 0 unconditionally but use the actual TID that was assigned. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include')
-rw-r--r--include/net/mac80211.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 25b18877747f..f4ab2fb4d50c 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2119,6 +2119,11 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb);
* appropriately (only the last frame may have %IEEE80211_TX_STATUS_EOSP)
* and also take care of the EOSP and MORE_DATA bits in the frame.
* The driver may also use ieee80211_sta_eosp() in this case.
+ *
+ * Note that if the driver ever buffers frames other than QoS-data
+ * frames, it must take care to never send a non-QoS-data frame as
+ * the last frame in a service period, adding a QoS-nulldata frame
+ * after a non-QoS-data frame if needed.
*/
/**