[PATCH] mac80211: correct header length calculation

Subsystems: 802.11 (including cfg80211/nl80211), the rest

STALE4250d

2 messages, 2 authors, 2015-01-19 · open the first message on its own page

[PATCH] mac80211: correct header length calculation

From: Fred Chou <hidden>
Date: 2015-01-19 04:04:58

From: Fred Chou <redacted>

HT Control field may also be present in management frames, as defined
in 8.2.4.1.10 of 802.11-2012. Account for this in calculation of 
header length.

Signed-off-by: Fred Chou <redacted>
---
 net/wireless/util.c | 6 ++++++
 1 file changed, 6 insertions(+)
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 1d2fcfa..ce9617c 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -297,6 +297,12 @@ unsigned int __attribute_const__ ieee80211_hdrlen(__le16 fc)
 {
 	unsigned int hdrlen = 24;
 
+	if (ieee80211_is_mgmt(fc)) {
+		if (ieee80211_has_order(fc))
+			hdrlen += IEEE80211_HT_CTL_LEN;
+		goto out;
+	}
+
 	if (ieee80211_is_data(fc)) {
 		if (ieee80211_has_a4(fc))
 			hdrlen = 30;
-- 
1.9.1

Re: [PATCH] mac80211: correct header length calculation

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2015-01-19 09:58:29

On Mon, 2015-01-19 at 12:07 +0800, Fred Chou wrote:
quoted hunk
From: Fred Chou <redacted>

HT Control field may also be present in management frames, as defined
in 8.2.4.1.10 of 802.11-2012. Account for this in calculation of 
header length.

Signed-off-by: Fred Chou <redacted>
---
 net/wireless/util.c | 6 ++++++
 1 file changed, 6 insertions(+)
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 1d2fcfa..ce9617c 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -297,6 +297,12 @@ unsigned int __attribute_const__ ieee80211_hdrlen(__le16 fc)
 {
 	unsigned int hdrlen = 24;
 
+	if (ieee80211_is_mgmt(fc)) {
+		if (ieee80211_has_order(fc))
+			hdrlen += IEEE80211_HT_CTL_LEN;
+		goto out;
+	}
+
 	if (ieee80211_is_data(fc)) {
I think you should insert this after data since data frames are more
common.

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