diff options
author | Adrian Chadd <adrian@FreeBSD.org> | 2015-05-12 16:55:50 +0000 |
---|---|---|
committer | Adrian Chadd <adrian@FreeBSD.org> | 2015-05-12 16:55:50 +0000 |
commit | c3ebe01919baaa1e049b36208e957ae5363db722 (patch) | |
tree | 716461345caf036699974e8086adfb6b3ba88e3a /sys/net80211/ieee80211.h | |
parent | d27c74649bc757f771b1a0d9142145d72e5ccd33 (diff) | |
download | src-c3ebe01919baaa1e049b36208e957ae5363db722.tar.gz src-c3ebe01919baaa1e049b36208e957ae5363db722.zip |
Do not check sequence number for QoS Null frames; set it for generated QoS Null
frames to 0
From IEEE Std. 802.11-2012, 8.3.2.1 "Data frame format", p. 415 (513):
"The Sequence Control field for QoS (+)Null frames is ignored by the receiver
upon reception."
At this moment, any <mode>_input() function interprets them as regular QoS data
frames with TID = 0. As a result, stations, that use another TX sequence for
QoS Null frames (e.g. wpi(4), where (QoS) Null frames are generated by the
firmware), may experience significant packet loss with any other NIC in hostap
mode.
Tested:
* wpi(4) (author)
* iwn(4) - Intel 5100, STA mode (me)
PR: kern/200128
Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
Notes
Notes:
svn path=/head/; revision=282820
Diffstat (limited to 'sys/net80211/ieee80211.h')
-rw-r--r-- | sys/net80211/ieee80211.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211.h b/sys/net80211/ieee80211.h index 9b005f3d6b89..8e586bdd0152 100644 --- a/sys/net80211/ieee80211.h +++ b/sys/net80211/ieee80211.h @@ -169,6 +169,11 @@ struct ieee80211_qosframe_addr4 { #define IEEE80211_FC1_PROTECTED 0x40 #define IEEE80211_FC1_ORDER 0x80 +#define IEEE80211_HAS_SEQ(type, subtype) \ + ((type) != IEEE80211_FC0_TYPE_CTL && \ + !((type) == IEEE80211_FC0_TYPE_DATA && \ + ((subtype) & IEEE80211_FC0_SUBTYPE_QOS_NULL) == \ + IEEE80211_FC0_SUBTYPE_QOS_NULL)) #define IEEE80211_SEQ_FRAG_MASK 0x000f #define IEEE80211_SEQ_FRAG_SHIFT 0 #define IEEE80211_SEQ_SEQ_MASK 0xfff0 |