2010-01-18 14:25:52

by Andriy Tkachuk

[permalink] [raw]
Subject: Account HT Control field also in Data frame hdrlen according to 802.11n-2009

diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 8427019..1998495 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -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;
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 23557c1..be2ab8c 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -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;
}





2010-01-20 07:39:51

by Holger Schurig

[permalink] [raw]
Subject: Re: Account HT Control field also in Data frame hdrlen according to 802.11n-2009

> Also please prefix your e-mails with [PATCH].

And add a Signed-off-by-line, after you understood it's
implications, see linux/Documentation/SubmittingPatches for more
info.

--
http://www.holgerschurig.de

2010-01-20 09:24:40

by Andriy Tkachuk

[permalink] [raw]
Subject: Re: Account HT Control field also in Data frame hdrlen according to 802.11n-2009

On 2010-01-19 19:49, Luis R. Rodriguez wrote:
> The commit log entry is empty.

Sorry, I thought it will be obvious from the $subj

> Can you describe what this fixes
> verbally and if its a critical fix or not, if it is, its important to
> know whether or not to propagate this to stable,

I would say it is rather feature then a fix. It just makes
ieee80211_hdrlen() to account new HT Control field in 802.11 header of
data frames introduced by IEEE 802.11n-2009 standard. That's it.

> so please explain its
> impact and what the behavior was before this.
>

According to 802.11n-2009 standard HT Control field is present in data
frames when both following items are true:

1. It is QoS data frame.
2. Order bit is 1 in Frame Control field.

The change might be totally compatible with legacy non-11n aware frames,
because 802.11-2007 standard states that for all QoS frames (i.e.
non-11n frames) Order bit must be set to zero.

> Also please prefix your e-mails with [PATCH].
>

Sorry, just forgot to do this. Hope, next time it will be better. :)

Thanks a lot for attention!

Andriy

2010-01-18 22:03:53

by Benoit Papillault

[permalink] [raw]
Subject: Re: Account HT Control field also in Data frame hdrlen according to 802.11n-2009

Andriy Tkachuk a ?crit :
> diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
> index 8427019..1998495 100644
> --- a/include/linux/ieee80211.h
> +++ b/include/linux/ieee80211.h
> @@ -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;
> diff --git a/net/wireless/util.c b/net/wireless/util.c
> index 23557c1..be2ab8c 100644
> --- a/net/wireless/util.c
> +++ b/net/wireless/util.c
> @@ -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;
> }
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
Nice! Acked-by : Benoit Papillault <[email protected]>

Regards,
Benoit



2010-01-19 17:49:52

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: Account HT Control field also in Data frame hdrlen according to 802.11n-2009

On Mon, Jan 18, 2010 at 6:04 AM, Andriy Tkachuk
<[email protected]> wrote:
> diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h

The commit log entry is empty. Can you describe what this fixes
verbally and if its a critical fix or not, if it is, its important to
know whether or not to propagate this to stable, so please explain its
impact and what the behavior was before this.

Also please prefix your e-mails with [PATCH].

Luis
> index 8427019..1998495 100644
> --- a/include/linux/ieee80211.h
> +++ b/include/linux/ieee80211.h
> @@ -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;
> diff --git a/net/wireless/util.c b/net/wireless/util.c
> index 23557c1..be2ab8c 100644
> --- a/net/wireless/util.c
> +++ b/net/wireless/util.c
> @@ -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;
>        }
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>