mac80211: Account HT Control field in Data frame hdrlen according to 802.11n-2009
PATCH 1/1 mac80211: Account HT Control field in Data frame hdrlen according to 802.11n-2009
ieee80211_hdrlen() should account account new HT Control field in 802.11 data frame header introduced by IEEE 802.11n standard.
According to 802.11n-2009 HT Control field is present in data frames when both of following are met:
1. It is QoS data frame.
2. Order bit is set in Frame Control field.
The change might be totally compatible with legacy non-11n aware frames, because 802.11-2007 standard states that "all QoS STAs set this subfield to 0".
--- include/linux/ieee80211.h | 2 ++ net/wireless/util.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletions(-)
Prev. patch may be ignored since its format was invalid - it extended tabs to spaces (copy/paste from PuTTY issue). Hope this one will be better. Sorry for inconvenience.
include/linux/ieee80211.h +2 -0
@@ -138,6 +138,8 @@#define IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK 0x03#define IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT 5 +#define IEEE80211_HT_CTL_LEN 4 +struct ieee80211_hdr {__le16 frame_control;__le16 duration_id;
net/wireless/util.c +4 -1
@@ -227,8 +227,11 @@ unsigned int ieee80211_hdrlen(__le16 fc)if (ieee80211_is_data (fc)) {if (ieee80211_has_a4 (fc)) hdrlen =30 ; -if (ieee80211_is_data_qos (fc)) +if (ieee80211_is_data_qos (fc)) { hdrlen +=IEEE80211_QOS_CTL_LEN ; +if (ieee80211_has_order (fc)) + hdrlen +=IEEE80211_HT_CTL_LEN ; + } goto out; }
Quoted 9 lines · Andriy Tkachuk
ieee80211_hdrlen()should account account new HT Control field in 802.11 data frame header introduced by IEEE 802.11n standard.According to 802.11n-2009 HT Control field is present in data frames when both of following are met:
1. It is QoS data frame.
2. Order bit is set in Frame Control field.
Quoted 6 lines
The change might be totally compatible with legacy non-11n aware frames, because 802.11-2007 standard states that "all QoS STAs set this subfield to 0".
Signed-off-by Andriy V. Tkachuk <[email protected]>
Very nice, thanks for the fuller commit log. Hm, the question I also wanted to address was whether or not this is a stable fix to go for 2.6.32 and 2.6.33, I suppose we'd have to look at all callers of ieee80211_hdrlen() but this seems like a stable fix to me.
Luis
Quoted 4 lines · Luis R. Rodriguez
Very nice, thanks for the fuller commit log. Hm, the question I also wanted to address was whether or not this is a stable fix to go for 2.6.32 and 2.6.33, I suppose we'd have to look at all callers of
ieee80211_hdrlen()but this seems like a stable fix to me.
As I already said, I would rather classify this change as a feature then a fix, so I would advise to give the code more time for breaking-in starting from the current branch and not put the stable at an odd risk (which seem to be the minor one, though).
Regards,
Andriy