2007-03-26 22:43:15

by mabbas

[permalink] [raw]
Subject: [patch 4/5] IEEE 802.11n management action frame data structures

Add draft IEEE 802.11n management action frame data structures and
constants

Several Action frame format are defined to support IEEE 802.11n
features.
This patch add the data structure for Block Ack management action frame.

Signed-off-by: Mohamed Abbas <[email protected]>

diff -Nupr wireless-dev/include/linux/ieee80211.h
wireless-dev-new/include/linux/ieee80211.h
--- wireless-dev/include/linux/ieee80211.h 2007-03-23 13:25:24.000000000
-0700
+++ wireless-dev-new/include/linux/ieee80211.h 2007-03-23
13:43:21.000000000 -0700
@@ -105,6 +105,19 @@ struct ieee80211_hdr {
} __attribute__ ((packed));


+struct ieee802_11_addba_param {
+ __le16 reserved:1;
+ __le16 backPolicy:1;
+ __le16 tid:4;
+ __le16 bufSize:10;
+} __attribute__ ((packed));
+
+struct ieee80211_delba_param {
+ __le16 reserved:11;
+ __le16 intiator:1;
+ __le16 tid:4;
+}__attribute__ ((packed));
+
struct ieee80211_ht_capability {
__le16 capabilitiesInfo;
u8 mac_ht_params_info;
@@ -200,6 +213,25 @@ struct ieee80211_mgmt {
__u8 new_chan;
__u8 switch_count;
} __attribute__((packed)) chan_switch;
+ struct{
+ u8 action_code;
+ u8 dialog_token;
+ struct ieee802_11_addba_param capab;
+ __le16 timeout;
+ __le16 start_seq_num;
+ } __attribute__((packed)) addba_req;
+ struct{
+ u8 action_code;
+ u8 dialog_token;
+ __le16 status;
+ struct ieee802_11_addba_param capab;
+ __le16 timeout;
+ } __attribute__((packed)) addba_resp;
+ struct{
+ u8 action_code;
+ struct ieee80211_delba_param params;
+ __le16 reason_code;
+ }__attribute__((packed)) delba;
} u;
} __attribute__ ((packed)) action;
} u;
@@ -266,6 +298,8 @@ enum ieee80211_statuscode {
/* 802.11g */
WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25,
WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26,
+ /* 802.11e */
+ WLAN_STATUS_REQUEST_DECLINED = 37,
/* 802.11i */
WLAN_STATUS_INVALID_IE = 40,
WLAN_STATUS_INVALID_GROUP_CIPHER = 41,
@@ -307,6 +341,23 @@ enum ieee80211_reasoncode {
};


+/* Category Code */
+enum ieee80211_category {
+ WLAN_CATEGORY_SPECTRUM_MGMT = 0,
+ WLAN_CATEGORY_QOS = 1,
+ WLAN_CATEGORY_DLS = 2,
+ WLAN_CATEGORY_BACK = 3,
+ WLAN_CATEGORY_WMM = 17,
+};
+
+
+/* BACK Action Code */
+enum ieee80211_back_actioncode {
+ WLAN_ACTION_ADDBA_REQ = 0,
+ WLAN_ACTION_ADDBA_RESP = 1,
+ WLAN_ACTION_DELBA = 2,
+};
+
/* Information Element IDs */
enum ieee80211_eid {
WLAN_EID_SSID = 0,


2007-03-26 23:45:46

by Randy Dunlap

[permalink] [raw]
Subject: Re: [patch 4/5] IEEE 802.11n management action frame data structures

On Mon, 26 Mar 2007 04:42:22 -0700 mohamed wrote:

> Add draft IEEE 802.11n management action frame data structures and
> constants
>
> Several Action frame format are defined to support IEEE 802.11n
> features.
> This patch add the data structure for Block Ack management action frame.
>
> Signed-off-by: Mohamed Abbas <[email protected]>
>
> diff -Nupr wireless-dev/include/linux/ieee80211.h
> wireless-dev-new/include/linux/ieee80211.h
> --- wireless-dev/include/linux/ieee80211.h 2007-03-23 13:25:24.000000000
> -0700
> +++ wireless-dev-new/include/linux/ieee80211.h 2007-03-23
> 13:43:21.000000000 -0700
> @@ -105,6 +105,19 @@ struct ieee80211_hdr {
> } __attribute__ ((packed));
>
>
> +struct ieee802_11_addba_param {
> + __le16 reserved:1;
> + __le16 backPolicy:1;
> + __le16 tid:4;
> + __le16 bufSize:10;
> +} __attribute__ ((packed));
> +
> +struct ieee80211_delba_param {
> + __le16 reserved:11;
> + __le16 intiator:1;
> + __le16 tid:4;
> +}__attribute__ ((packed));

These bitfields are all local to one machine, not transported
across a network to systems where the bitfields may be represented
differently?


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

2007-03-29 11:07:16

by Johannes Berg

[permalink] [raw]
Subject: Re: [patch 4/5] IEEE 802.11n management action frame data structures

On Mon, 2007-03-26 at 16:45 -0700, Randy Dunlap wrote:

> > +struct ieee802_11_addba_param {
> > + __le16 reserved:1;
> > + __le16 backPolicy:1;
> > + __le16 tid:4;
> > + __le16 bufSize:10;
> > +} __attribute__ ((packed));
> > +
> > +struct ieee80211_delba_param {
> > + __le16 reserved:11;
> > + __le16 intiator:1;
> > + __le16 tid:4;
> > +}__attribute__ ((packed));
>
> These bitfields are all local to one machine, not transported
> across a network to systems where the bitfields may be represented
> differently?

You wish. No, these bitfields need to die, this is actually part of the
"wire" format.

johannes


Attachments:
signature.asc (190.00 B)
This is a digitally signed message part

2007-04-03 22:36:31

by mabbas

[permalink] [raw]
Subject: Re: [patch 4/5] IEEE 802.11n management action frame data structures

modified patch at the end

Randy Dunlap wrote:
> On Mon, 26 Mar 2007 04:42:22 -0700 mohamed wrote:
>
>
>>
>> +struct ieee802_11_addba_param {
>> + __le16 reserved:1;
>> + __le16 backPolicy:1;
>> + __le16 tid:4;
>> + __le16 bufSize:10;
>> +} __attribute__ ((packed));
>> +
>> +struct ieee80211_delba_param {
>> + __le16 reserved:11;
>> + __le16 intiator:1;
>> + __le16 tid:4;
>> +}__attribute__ ((packed));
>>
>
> These bitfields are all local to one machine, not transported
> across a network to systems where the bitfields may be represented
> differently?
>
>
>


Add draft IEEE 802.11n management action frame data structures and constants

Several Action frame format are defined to support IEEE 802.11n features.
This patch add the data structure for Block Ack management action frame.

Signed-off-by: Mohamed Abbas <[email protected]>

diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 6bf824b..6d2c20e 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -201,6 +201,25 @@ struct ieee80211_mgmt {
__u8 new_chan;
__u8 switch_count;
} __attribute__((packed)) chan_switch;
+ struct{
+ u8 action_code;
+ u8 dialog_token;
+ __le16 capab;
+ __le16 timeout;
+ __le16 start_seq_num;
+ } __attribute__((packed)) addba_req;
+ struct{
+ u8 action_code;
+ u8 dialog_token;
+ __le16 status;
+ __le16 capab;
+ __le16 timeout;
+ } __attribute__((packed)) addba_resp;
+ struct{
+ u8 action_code;
+ __le16 params;
+ __le16 reason_code;
+ }__attribute__((packed)) delba;
} u;
} __attribute__ ((packed)) action;
} u;
@@ -268,6 +287,8 @@ enum ieee80211_statuscode {
/* 802.11g */
WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25,
WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26,
+ /* 802.11e */
+ WLAN_STATUS_REQUEST_DECLINED = 37,
/* 802.11i */
WLAN_STATUS_INVALID_IE = 40,
WLAN_STATUS_INVALID_GROUP_CIPHER = 41,
@@ -309,6 +330,23 @@ enum ieee80211_reasoncode {
};


+/* Category Code */
+enum ieee80211_category {
+ WLAN_CATEGORY_SPECTRUM_MGMT = 0,
+ WLAN_CATEGORY_QOS = 1,
+ WLAN_CATEGORY_DLS = 2,
+ WLAN_CATEGORY_BACK = 3,
+ WLAN_CATEGORY_WMM = 17,
+};
+
+
+/* BACK Action Code */
+enum ieee80211_back_actioncode {
+ WLAN_ACTION_ADDBA_REQ = 0,
+ WLAN_ACTION_ADDBA_RESP = 1,
+ WLAN_ACTION_DELBA = 2,
+};
+
/* Information Element IDs */
enum ieee80211_eid {
WLAN_EID_SSID = 0,