Thread (18 messages) 18 messages, 1 author, 2011-09-28
DORMANTno replies

[PATCH 16/15] mac80211: don't assign seqno to or aggregate QoS Null frames

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2011-09-28 13:03:50

From: Johannes Berg <redacted>

802.11 says:
"Sequence numbers for QoS (+)Null frames may be
set to any value."

However, if we use the normal counters then peers
will get confused with aggregation since there'll
be holes in the sequence number sequence.

To avoid that, neither assign a sequence number
to QoS null frames nor put them on aggregation.

Cc: stable@kernel.org
Signed-off-by: Johannes Berg <redacted>
---
chr pointed this out to me ... thanks!

Cc stable since I'm changing hostapd to use QoS null frames...

 net/mac80211/tx.c |    4 ++++
 1 file changed, 4 insertions(+)
--- a/net/mac80211/tx.c	2011-09-28 14:13:19.000000000 +0200
+++ b/net/mac80211/tx.c	2011-09-28 14:51:13.000000000 +0200
@@ -804,6 +804,9 @@ ieee80211_tx_h_sequence(struct ieee80211
 	if (ieee80211_hdrlen(hdr->frame_control) < 24)
 		return TX_CONTINUE;
 
+	if (ieee80211_is_qos_nullfunc(hdr->frame_control))
+		return TX_CONTINUE;
+
 	/*
 	 * Anything but QoS data that has a sequence number field
 	 * (is long enough) gets a sequence number from the global
@@ -1236,6 +1239,7 @@ ieee80211_tx_prepare(struct ieee80211_su
 		tx->sta = sta_info_get(sdata, hdr->addr1);
 
 	if (tx->sta && ieee80211_is_data_qos(hdr->frame_control) &&
+	    !ieee80211_is_qos_nullfunc(hdr->frame_control) &&
 	    (local->hw.flags & IEEE80211_HW_AMPDU_AGGREGATION) &&
 	    !(local->hw.flags & IEEE80211_HW_TX_AMPDU_SETUP_IN_HW)) {
 		struct tid_ampdu_tx *tid_tx;

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help