[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;