aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRon Rindjunsky <ron.rindjunsky@intel.com>2007-11-14 12:57:38 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:54:38 -0500
commit6b4e324164c683a7b4c1bd0be4d85f9a5a0f0e90 (patch)
treed7b993daf43b7bc8f7edbe368ffb34908a4ff84b
parent48933dea47c947f1d44631ce2292736e6a48eef1 (diff)
mac80211: adding 802.11n definitions in ieee80211.h
This patch adds several structs and definitions to ieee80211.h to support 802.11n draft specifications. As 802.11n depends on and extends the 802.11e standard in several issues, there are also several definitions that belong to 802.11e. Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/linux/ieee80211.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 214821af3d5b..3e641590d0c8 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -54,6 +54,8 @@
54#define IEEE80211_STYPE_ACTION 0x00D0 54#define IEEE80211_STYPE_ACTION 0x00D0
55 55
56/* control */ 56/* control */
57#define IEEE80211_STYPE_BACK_REQ 0x0080
58#define IEEE80211_STYPE_BACK 0x0090
57#define IEEE80211_STYPE_PSPOLL 0x00A0 59#define IEEE80211_STYPE_PSPOLL 0x00A0
58#define IEEE80211_STYPE_RTS 0x00B0 60#define IEEE80211_STYPE_RTS 0x00B0
59#define IEEE80211_STYPE_CTS 0x00C0 61#define IEEE80211_STYPE_CTS 0x00C0
@@ -185,6 +187,25 @@ struct ieee80211_mgmt {
185 u8 new_chan; 187 u8 new_chan;
186 u8 switch_count; 188 u8 switch_count;
187 } __attribute__((packed)) chan_switch; 189 } __attribute__((packed)) chan_switch;
190 struct{
191 u8 action_code;
192 u8 dialog_token;
193 __le16 capab;
194 __le16 timeout;
195 __le16 start_seq_num;
196 } __attribute__((packed)) addba_req;
197 struct{
198 u8 action_code;
199 u8 dialog_token;
200 __le16 status;
201 __le16 capab;
202 __le16 timeout;
203 } __attribute__((packed)) addba_resp;
204 struct{
205 u8 action_code;
206 __le16 params;
207 __le16 reason_code;
208 } __attribute__((packed)) delba;
188 } u; 209 } u;
189 } __attribute__ ((packed)) action; 210 } __attribute__ ((packed)) action;
190 } u; 211 } u;
@@ -205,6 +226,66 @@ struct ieee80211_cts {
205 u8 ra[6]; 226 u8 ra[6];
206} __attribute__ ((packed)); 227} __attribute__ ((packed));
207 228
229/**
230 * struct ieee80211_bar - HT Block Ack Request
231 *
232 * This structure refers to "HT BlockAckReq" as
233 * described in 802.11n draft section 7.2.1.7.1
234 */
235struct ieee80211_bar {
236 __le16 frame_control;
237 __le16 duration;
238 __u8 ra[6];
239 __u8 ta[6];
240 __u16 control;
241 __u16 start_seq_num;
242} __attribute__((packed));
243
244/**
245 * struct ieee80211_ht_cap - HT capabilities
246 *
247 * This structure refers to "HT capabilities element" as
248 * described in 802.11n draft section 7.3.2.52
249 */
250struct ieee80211_ht_cap {
251 __le16 cap_info;
252 u8 ampdu_params_info;
253 u8 supp_mcs_set[16];
254 __le16 extended_ht_cap_info;
255 __le32 tx_BF_cap_info;
256 u8 antenna_selection_info;
257} __attribute__ ((packed));
258
259/**
260 * struct ieee80211_ht_cap - HT additional information
261 *
262 * This structure refers to "HT information element" as
263 * described in 802.11n draft section 7.3.2.53
264 */
265struct ieee80211_ht_addt_info {
266 u8 control_chan;
267 u8 ht_param;
268 __le16 operation_mode;
269 __le16 stbc_param;
270 u8 basic_set[16];
271} __attribute__ ((packed));
272
273/* 802.11n HT capabilities masks */
274#define IEEE80211_HT_CAP_SUP_WIDTH 0x0002
275#define IEEE80211_HT_CAP_MIMO_PS 0x000C
276#define IEEE80211_HT_CAP_GRN_FLD 0x0010
277#define IEEE80211_HT_CAP_SGI_20 0x0020
278#define IEEE80211_HT_CAP_SGI_40 0x0040
279#define IEEE80211_HT_CAP_DELAY_BA 0x0400
280#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800
281#define IEEE80211_HT_CAP_AMPDU_FACTOR 0x03
282#define IEEE80211_HT_CAP_AMPDU_DENSITY 0x1C
283/* 802.11n HT IE masks */
284#define IEEE80211_HT_IE_CHA_SEC_OFFSET 0x03
285#define IEEE80211_HT_IE_CHA_WIDTH 0x04
286#define IEEE80211_HT_IE_HT_PROTECTION 0x0003
287#define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004
288#define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010
208 289
209/* Authentication algorithms */ 290/* Authentication algorithms */
210#define WLAN_AUTH_OPEN 0 291#define WLAN_AUTH_OPEN 0
@@ -271,6 +352,18 @@ enum ieee80211_statuscode {
271 WLAN_STATUS_UNSUPP_RSN_VERSION = 44, 352 WLAN_STATUS_UNSUPP_RSN_VERSION = 44,
272 WLAN_STATUS_INVALID_RSN_IE_CAP = 45, 353 WLAN_STATUS_INVALID_RSN_IE_CAP = 45,
273 WLAN_STATUS_CIPHER_SUITE_REJECTED = 46, 354 WLAN_STATUS_CIPHER_SUITE_REJECTED = 46,
355 /* 802.11e */
356 WLAN_STATUS_UNSPECIFIED_QOS = 32,
357 WLAN_STATUS_ASSOC_DENIED_NOBANDWIDTH = 33,
358 WLAN_STATUS_ASSOC_DENIED_LOWACK = 34,
359 WLAN_STATUS_ASSOC_DENIED_UNSUPP_QOS = 35,
360 WLAN_STATUS_REQUEST_DECLINED = 37,
361 WLAN_STATUS_INVALID_QOS_PARAM = 38,
362 WLAN_STATUS_CHANGE_TSPEC = 39,
363 WLAN_STATUS_WAIT_TS_DELAY = 47,
364 WLAN_STATUS_NO_DIRECT_LINK = 48,
365 WLAN_STATUS_STA_NOT_PRESENT = 49,
366 WLAN_STATUS_STA_NOT_QSTA = 50,
274}; 367};
275 368
276 369
@@ -301,6 +394,16 @@ enum ieee80211_reasoncode {
301 WLAN_REASON_INVALID_RSN_IE_CAP = 22, 394 WLAN_REASON_INVALID_RSN_IE_CAP = 22,
302 WLAN_REASON_IEEE8021X_FAILED = 23, 395 WLAN_REASON_IEEE8021X_FAILED = 23,
303 WLAN_REASON_CIPHER_SUITE_REJECTED = 24, 396 WLAN_REASON_CIPHER_SUITE_REJECTED = 24,
397 /* 802.11e */
398 WLAN_REASON_DISASSOC_UNSPECIFIED_QOS = 32,
399 WLAN_REASON_DISASSOC_QAP_NO_BANDWIDTH = 33,
400 WLAN_REASON_DISASSOC_LOW_ACK = 34,
401 WLAN_REASON_DISASSOC_QAP_EXCEED_TXOP = 35,
402 WLAN_REASON_QSTA_LEAVE_QBSS = 36,
403 WLAN_REASON_QSTA_NOT_USE = 37,
404 WLAN_REASON_QSTA_REQUIRE_SETUP = 38,
405 WLAN_REASON_QSTA_TIMEOUT = 39,
406 WLAN_REASON_QSTA_CIPHER_NOT_SUPP = 45,
304}; 407};
305 408
306 409
@@ -319,6 +422,15 @@ enum ieee80211_eid {
319 WLAN_EID_HP_PARAMS = 8, 422 WLAN_EID_HP_PARAMS = 8,
320 WLAN_EID_HP_TABLE = 9, 423 WLAN_EID_HP_TABLE = 9,
321 WLAN_EID_REQUEST = 10, 424 WLAN_EID_REQUEST = 10,
425 /* 802.11e */
426 WLAN_EID_QBSS_LOAD = 11,
427 WLAN_EID_EDCA_PARAM_SET = 12,
428 WLAN_EID_TSPEC = 13,
429 WLAN_EID_TCLAS = 14,
430 WLAN_EID_SCHEDULE = 15,
431 WLAN_EID_TS_DELAY = 43,
432 WLAN_EID_TCLAS_PROCESSING = 44,
433 WLAN_EID_QOS_CAPA = 46,
322 /* 802.11h */ 434 /* 802.11h */
323 WLAN_EID_PWR_CONSTRAINT = 32, 435 WLAN_EID_PWR_CONSTRAINT = 32,
324 WLAN_EID_PWR_CAPABILITY = 33, 436 WLAN_EID_PWR_CAPABILITY = 33,
@@ -333,6 +445,9 @@ enum ieee80211_eid {
333 /* 802.11g */ 445 /* 802.11g */
334 WLAN_EID_ERP_INFO = 42, 446 WLAN_EID_ERP_INFO = 42,
335 WLAN_EID_EXT_SUPP_RATES = 50, 447 WLAN_EID_EXT_SUPP_RATES = 50,
448 /* 802.11n */
449 WLAN_EID_HT_CAPABILITY = 45,
450 WLAN_EID_HT_EXTRA_INFO = 61,
336 /* 802.11i */ 451 /* 802.11i */
337 WLAN_EID_RSN = 48, 452 WLAN_EID_RSN = 48,
338 WLAN_EID_WPA = 221, 453 WLAN_EID_WPA = 221,
@@ -341,6 +456,25 @@ enum ieee80211_eid {
341 WLAN_EID_QOS_PARAMETER = 222 456 WLAN_EID_QOS_PARAMETER = 222
342}; 457};
343 458
459/* Action category code */
460enum ieee80211_category {
461 WLAN_CATEGORY_SPECTRUM_MGMT = 0,
462 WLAN_CATEGORY_QOS = 1,
463 WLAN_CATEGORY_DLS = 2,
464 WLAN_CATEGORY_BACK = 3,
465 WLAN_CATEGORY_WMM = 17,
466};
467
468/* BACK action code */
469enum ieee80211_back_actioncode {
470 WLAN_ACTION_ADDBA_REQ = 0,
471 WLAN_ACTION_ADDBA_RESP = 1,
472 WLAN_ACTION_DELBA = 2,
473};
474
475/* A-MSDU 802.11n */
476#define IEEE80211_QOS_CONTROL_A_MSDU_PRESENT 0x0080
477
344/* cipher suite selectors */ 478/* cipher suite selectors */
345#define WLAN_CIPHER_SUITE_USE_GROUP 0x000FAC00 479#define WLAN_CIPHER_SUITE_USE_GROUP 0x000FAC00
346#define WLAN_CIPHER_SUITE_WEP40 0x000FAC01 480#define WLAN_CIPHER_SUITE_WEP40 0x000FAC01