diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-22 10:38:37 -0500 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-22 10:38:37 -0500 |
commit | fcc9d2e5a6c89d22b8b773a64fb4ad21ac318446 (patch) | |
tree | a57612d1888735a2ec7972891b68c1ac5ec8faea /drivers/net/wireless/bcm4329/include/proto/802.11.h | |
parent | 8dea78da5cee153b8af9c07a2745f6c55057fe12 (diff) |
Diffstat (limited to 'drivers/net/wireless/bcm4329/include/proto/802.11.h')
-rw-r--r-- | drivers/net/wireless/bcm4329/include/proto/802.11.h | 1433 |
1 files changed, 1433 insertions, 0 deletions
diff --git a/drivers/net/wireless/bcm4329/include/proto/802.11.h b/drivers/net/wireless/bcm4329/include/proto/802.11.h new file mode 100644 index 00000000000..fd26317361d --- /dev/null +++ b/drivers/net/wireless/bcm4329/include/proto/802.11.h | |||
@@ -0,0 +1,1433 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999-2010, Broadcom Corporation | ||
3 | * | ||
4 | * Unless you and Broadcom execute a separate written software license | ||
5 | * agreement governing use of this software, this software is licensed to you | ||
6 | * under the terms of the GNU General Public License version 2 (the "GPL"), | ||
7 | * available at http://www.broadcom.com/licenses/GPLv2.php, with the | ||
8 | * following added to such license: | ||
9 | * | ||
10 | * As a special exception, the copyright holders of this software give you | ||
11 | * permission to link this software with independent modules, and to copy and | ||
12 | * distribute the resulting executable under terms of your choice, provided that | ||
13 | * you also meet, for each linked independent module, the terms and conditions of | ||
14 | * the license of that module. An independent module is a module which is not | ||
15 | * derived from this software. The special exception does not apply to any | ||
16 | * modifications of the software. | ||
17 | * | ||
18 | * Notwithstanding the above, under no circumstances may you combine this | ||
19 | * software in any way with any other Broadcom software provided under a license | ||
20 | * other than the GPL, without Broadcom's express prior written consent. | ||
21 | * | ||
22 | * Fundamental types and constants relating to 802.11 | ||
23 | * | ||
24 | * $Id: 802.11.h,v 9.219.4.1.4.5.6.11 2010/02/09 13:23:26 Exp $ | ||
25 | */ | ||
26 | |||
27 | |||
28 | #ifndef _802_11_H_ | ||
29 | #define _802_11_H_ | ||
30 | |||
31 | #ifndef _TYPEDEFS_H_ | ||
32 | #include <typedefs.h> | ||
33 | #endif | ||
34 | |||
35 | #ifndef _NET_ETHERNET_H_ | ||
36 | #include <proto/ethernet.h> | ||
37 | #endif | ||
38 | |||
39 | #include <proto/wpa.h> | ||
40 | |||
41 | |||
42 | #include <packed_section_start.h> | ||
43 | |||
44 | |||
45 | #define DOT11_TU_TO_US 1024 | ||
46 | |||
47 | |||
48 | #define DOT11_A3_HDR_LEN 24 | ||
49 | #define DOT11_A4_HDR_LEN 30 | ||
50 | #define DOT11_MAC_HDR_LEN DOT11_A3_HDR_LEN | ||
51 | #define DOT11_FCS_LEN 4 | ||
52 | #define DOT11_ICV_LEN 4 | ||
53 | #define DOT11_ICV_AES_LEN 8 | ||
54 | #define DOT11_QOS_LEN 2 | ||
55 | #define DOT11_HTC_LEN 4 | ||
56 | |||
57 | #define DOT11_KEY_INDEX_SHIFT 6 | ||
58 | #define DOT11_IV_LEN 4 | ||
59 | #define DOT11_IV_TKIP_LEN 8 | ||
60 | #define DOT11_IV_AES_OCB_LEN 4 | ||
61 | #define DOT11_IV_AES_CCM_LEN 8 | ||
62 | #define DOT11_IV_MAX_LEN 8 | ||
63 | |||
64 | |||
65 | #define DOT11_MAX_MPDU_BODY_LEN 2304 | ||
66 | |||
67 | #define DOT11_MAX_MPDU_LEN (DOT11_A4_HDR_LEN + \ | ||
68 | DOT11_QOS_LEN + \ | ||
69 | DOT11_IV_AES_CCM_LEN + \ | ||
70 | DOT11_MAX_MPDU_BODY_LEN + \ | ||
71 | DOT11_ICV_LEN + \ | ||
72 | DOT11_FCS_LEN) | ||
73 | |||
74 | #define DOT11_MAX_SSID_LEN 32 | ||
75 | |||
76 | |||
77 | #define DOT11_DEFAULT_RTS_LEN 2347 | ||
78 | #define DOT11_MAX_RTS_LEN 2347 | ||
79 | |||
80 | |||
81 | #define DOT11_MIN_FRAG_LEN 256 | ||
82 | #define DOT11_MAX_FRAG_LEN 2346 | ||
83 | #define DOT11_DEFAULT_FRAG_LEN 2346 | ||
84 | |||
85 | |||
86 | #define DOT11_MIN_BEACON_PERIOD 1 | ||
87 | #define DOT11_MAX_BEACON_PERIOD 0xFFFF | ||
88 | |||
89 | |||
90 | #define DOT11_MIN_DTIM_PERIOD 1 | ||
91 | #define DOT11_MAX_DTIM_PERIOD 0xFF | ||
92 | |||
93 | |||
94 | #define DOT11_LLC_SNAP_HDR_LEN 8 | ||
95 | #define DOT11_OUI_LEN 3 | ||
96 | BWL_PRE_PACKED_STRUCT struct dot11_llc_snap_header { | ||
97 | uint8 dsap; | ||
98 | uint8 ssap; | ||
99 | uint8 ctl; | ||
100 | uint8 oui[DOT11_OUI_LEN]; | ||
101 | uint16 type; | ||
102 | } BWL_POST_PACKED_STRUCT; | ||
103 | |||
104 | |||
105 | #define RFC1042_HDR_LEN (ETHER_HDR_LEN + DOT11_LLC_SNAP_HDR_LEN) | ||
106 | |||
107 | |||
108 | |||
109 | BWL_PRE_PACKED_STRUCT struct dot11_header { | ||
110 | uint16 fc; | ||
111 | uint16 durid; | ||
112 | struct ether_addr a1; | ||
113 | struct ether_addr a2; | ||
114 | struct ether_addr a3; | ||
115 | uint16 seq; | ||
116 | struct ether_addr a4; | ||
117 | } BWL_POST_PACKED_STRUCT; | ||
118 | |||
119 | |||
120 | |||
121 | BWL_PRE_PACKED_STRUCT struct dot11_rts_frame { | ||
122 | uint16 fc; | ||
123 | uint16 durid; | ||
124 | struct ether_addr ra; | ||
125 | struct ether_addr ta; | ||
126 | } BWL_POST_PACKED_STRUCT; | ||
127 | #define DOT11_RTS_LEN 16 | ||
128 | |||
129 | BWL_PRE_PACKED_STRUCT struct dot11_cts_frame { | ||
130 | uint16 fc; | ||
131 | uint16 durid; | ||
132 | struct ether_addr ra; | ||
133 | } BWL_POST_PACKED_STRUCT; | ||
134 | #define DOT11_CTS_LEN 10 | ||
135 | |||
136 | BWL_PRE_PACKED_STRUCT struct dot11_ack_frame { | ||
137 | uint16 fc; | ||
138 | uint16 durid; | ||
139 | struct ether_addr ra; | ||
140 | } BWL_POST_PACKED_STRUCT; | ||
141 | #define DOT11_ACK_LEN 10 | ||
142 | |||
143 | BWL_PRE_PACKED_STRUCT struct dot11_ps_poll_frame { | ||
144 | uint16 fc; | ||
145 | uint16 durid; | ||
146 | struct ether_addr bssid; | ||
147 | struct ether_addr ta; | ||
148 | } BWL_POST_PACKED_STRUCT; | ||
149 | #define DOT11_PS_POLL_LEN 16 | ||
150 | |||
151 | BWL_PRE_PACKED_STRUCT struct dot11_cf_end_frame { | ||
152 | uint16 fc; | ||
153 | uint16 durid; | ||
154 | struct ether_addr ra; | ||
155 | struct ether_addr bssid; | ||
156 | } BWL_POST_PACKED_STRUCT; | ||
157 | #define DOT11_CS_END_LEN 16 | ||
158 | |||
159 | BWL_PRE_PACKED_STRUCT struct dot11_action_wifi_vendor_specific { | ||
160 | uint8 category; | ||
161 | uint8 OUI[3]; | ||
162 | uint8 type; | ||
163 | uint8 subtype; | ||
164 | uint8 data[1040]; | ||
165 | struct dot11_action_wifi_vendor_specific* next_node; | ||
166 | } BWL_POST_PACKED_STRUCT; | ||
167 | |||
168 | typedef struct dot11_action_wifi_vendor_specific dot11_action_wifi_vendor_specific_t; | ||
169 | |||
170 | #define DOT11_BA_CTL_POLICY_NORMAL 0x0000 | ||
171 | #define DOT11_BA_CTL_POLICY_NOACK 0x0001 | ||
172 | #define DOT11_BA_CTL_POLICY_MASK 0x0001 | ||
173 | |||
174 | #define DOT11_BA_CTL_MTID 0x0002 | ||
175 | #define DOT11_BA_CTL_COMPRESSED 0x0004 | ||
176 | |||
177 | #define DOT11_BA_CTL_NUMMSDU_MASK 0x0FC0 | ||
178 | #define DOT11_BA_CTL_NUMMSDU_SHIFT 6 | ||
179 | |||
180 | #define DOT11_BA_CTL_TID_MASK 0xF000 | ||
181 | #define DOT11_BA_CTL_TID_SHIFT 12 | ||
182 | |||
183 | |||
184 | BWL_PRE_PACKED_STRUCT struct dot11_ctl_header { | ||
185 | uint16 fc; | ||
186 | uint16 durid; | ||
187 | struct ether_addr ra; | ||
188 | struct ether_addr ta; | ||
189 | } BWL_POST_PACKED_STRUCT; | ||
190 | #define DOT11_CTL_HDR_LEN 16 | ||
191 | |||
192 | |||
193 | BWL_PRE_PACKED_STRUCT struct dot11_bar { | ||
194 | uint16 bar_control; | ||
195 | uint16 seqnum; | ||
196 | } BWL_POST_PACKED_STRUCT; | ||
197 | #define DOT11_BAR_LEN 4 | ||
198 | |||
199 | #define DOT11_BA_BITMAP_LEN 128 | ||
200 | #define DOT11_BA_CMP_BITMAP_LEN 8 | ||
201 | |||
202 | BWL_PRE_PACKED_STRUCT struct dot11_ba { | ||
203 | uint16 ba_control; | ||
204 | uint16 seqnum; | ||
205 | uint8 bitmap[DOT11_BA_BITMAP_LEN]; | ||
206 | } BWL_POST_PACKED_STRUCT; | ||
207 | #define DOT11_BA_LEN 4 | ||
208 | |||
209 | |||
210 | BWL_PRE_PACKED_STRUCT struct dot11_management_header { | ||
211 | uint16 fc; | ||
212 | uint16 durid; | ||
213 | struct ether_addr da; | ||
214 | struct ether_addr sa; | ||
215 | struct ether_addr bssid; | ||
216 | uint16 seq; | ||
217 | } BWL_POST_PACKED_STRUCT; | ||
218 | #define DOT11_MGMT_HDR_LEN 24 | ||
219 | |||
220 | |||
221 | |||
222 | BWL_PRE_PACKED_STRUCT struct dot11_bcn_prb { | ||
223 | uint32 timestamp[2]; | ||
224 | uint16 beacon_interval; | ||
225 | uint16 capability; | ||
226 | } BWL_POST_PACKED_STRUCT; | ||
227 | #define DOT11_BCN_PRB_LEN 12 | ||
228 | |||
229 | BWL_PRE_PACKED_STRUCT struct dot11_auth { | ||
230 | uint16 alg; | ||
231 | uint16 seq; | ||
232 | uint16 status; | ||
233 | } BWL_POST_PACKED_STRUCT; | ||
234 | #define DOT11_AUTH_FIXED_LEN 6 | ||
235 | |||
236 | BWL_PRE_PACKED_STRUCT struct dot11_assoc_req { | ||
237 | uint16 capability; | ||
238 | uint16 listen; | ||
239 | } BWL_POST_PACKED_STRUCT; | ||
240 | #define DOT11_ASSOC_REQ_FIXED_LEN 4 | ||
241 | |||
242 | BWL_PRE_PACKED_STRUCT struct dot11_reassoc_req { | ||
243 | uint16 capability; | ||
244 | uint16 listen; | ||
245 | struct ether_addr ap; | ||
246 | } BWL_POST_PACKED_STRUCT; | ||
247 | #define DOT11_REASSOC_REQ_FIXED_LEN 10 | ||
248 | |||
249 | BWL_PRE_PACKED_STRUCT struct dot11_assoc_resp { | ||
250 | uint16 capability; | ||
251 | uint16 status; | ||
252 | uint16 aid; | ||
253 | } BWL_POST_PACKED_STRUCT; | ||
254 | #define DOT11_ASSOC_RESP_FIXED_LEN 6 | ||
255 | |||
256 | BWL_PRE_PACKED_STRUCT struct dot11_action_measure { | ||
257 | uint8 category; | ||
258 | uint8 action; | ||
259 | uint8 token; | ||
260 | uint8 data[1]; | ||
261 | } BWL_POST_PACKED_STRUCT; | ||
262 | #define DOT11_ACTION_MEASURE_LEN 3 | ||
263 | |||
264 | BWL_PRE_PACKED_STRUCT struct dot11_action_ht_ch_width { | ||
265 | uint8 category; | ||
266 | uint8 action; | ||
267 | uint8 ch_width; | ||
268 | } BWL_POST_PACKED_STRUCT; | ||
269 | |||
270 | BWL_PRE_PACKED_STRUCT struct dot11_action_ht_mimops { | ||
271 | uint8 category; | ||
272 | uint8 action; | ||
273 | uint8 control; | ||
274 | } BWL_POST_PACKED_STRUCT; | ||
275 | |||
276 | #define SM_PWRSAVE_ENABLE 1 | ||
277 | #define SM_PWRSAVE_MODE 2 | ||
278 | |||
279 | |||
280 | BWL_PRE_PACKED_STRUCT struct dot11_power_cnst { | ||
281 | uint8 id; | ||
282 | uint8 len; | ||
283 | uint8 power; | ||
284 | } BWL_POST_PACKED_STRUCT; | ||
285 | typedef struct dot11_power_cnst dot11_power_cnst_t; | ||
286 | |||
287 | BWL_PRE_PACKED_STRUCT struct dot11_power_cap { | ||
288 | uint8 min; | ||
289 | uint8 max; | ||
290 | } BWL_POST_PACKED_STRUCT; | ||
291 | typedef struct dot11_power_cap dot11_power_cap_t; | ||
292 | |||
293 | BWL_PRE_PACKED_STRUCT struct dot11_tpc_rep { | ||
294 | uint8 id; | ||
295 | uint8 len; | ||
296 | uint8 tx_pwr; | ||
297 | uint8 margin; | ||
298 | } BWL_POST_PACKED_STRUCT; | ||
299 | typedef struct dot11_tpc_rep dot11_tpc_rep_t; | ||
300 | #define DOT11_MNG_IE_TPC_REPORT_LEN 2 | ||
301 | |||
302 | BWL_PRE_PACKED_STRUCT struct dot11_supp_channels { | ||
303 | uint8 id; | ||
304 | uint8 len; | ||
305 | uint8 first_channel; | ||
306 | uint8 num_channels; | ||
307 | } BWL_POST_PACKED_STRUCT; | ||
308 | typedef struct dot11_supp_channels dot11_supp_channels_t; | ||
309 | |||
310 | |||
311 | BWL_PRE_PACKED_STRUCT struct dot11_extch { | ||
312 | uint8 id; | ||
313 | uint8 len; | ||
314 | uint8 extch; | ||
315 | } BWL_POST_PACKED_STRUCT; | ||
316 | typedef struct dot11_extch dot11_extch_ie_t; | ||
317 | |||
318 | BWL_PRE_PACKED_STRUCT struct dot11_brcm_extch { | ||
319 | uint8 id; | ||
320 | uint8 len; | ||
321 | uint8 oui[3]; | ||
322 | uint8 type; | ||
323 | uint8 extch; | ||
324 | } BWL_POST_PACKED_STRUCT; | ||
325 | typedef struct dot11_brcm_extch dot11_brcm_extch_ie_t; | ||
326 | |||
327 | #define BRCM_EXTCH_IE_LEN 5 | ||
328 | #define BRCM_EXTCH_IE_TYPE 53 | ||
329 | #define DOT11_EXTCH_IE_LEN 1 | ||
330 | #define DOT11_EXT_CH_MASK 0x03 | ||
331 | #define DOT11_EXT_CH_UPPER 0x01 | ||
332 | #define DOT11_EXT_CH_LOWER 0x03 | ||
333 | #define DOT11_EXT_CH_NONE 0x00 | ||
334 | |||
335 | BWL_PRE_PACKED_STRUCT struct dot11_action_frmhdr { | ||
336 | uint8 category; | ||
337 | uint8 action; | ||
338 | uint8 data[1]; | ||
339 | } BWL_POST_PACKED_STRUCT; | ||
340 | #define DOT11_ACTION_FRMHDR_LEN 2 | ||
341 | |||
342 | |||
343 | BWL_PRE_PACKED_STRUCT struct dot11_channel_switch { | ||
344 | uint8 id; | ||
345 | uint8 len; | ||
346 | uint8 mode; | ||
347 | uint8 channel; | ||
348 | uint8 count; | ||
349 | } BWL_POST_PACKED_STRUCT; | ||
350 | typedef struct dot11_channel_switch dot11_chan_switch_ie_t; | ||
351 | |||
352 | #define DOT11_SWITCH_IE_LEN 3 | ||
353 | |||
354 | #define DOT11_CSA_MODE_ADVISORY 0 | ||
355 | #define DOT11_CSA_MODE_NO_TX 1 | ||
356 | |||
357 | BWL_PRE_PACKED_STRUCT struct dot11_action_switch_channel { | ||
358 | uint8 category; | ||
359 | uint8 action; | ||
360 | dot11_chan_switch_ie_t chan_switch_ie; | ||
361 | dot11_brcm_extch_ie_t extch_ie; | ||
362 | } BWL_POST_PACKED_STRUCT; | ||
363 | |||
364 | BWL_PRE_PACKED_STRUCT struct dot11_csa_body { | ||
365 | uint8 mode; | ||
366 | uint8 reg; | ||
367 | uint8 channel; | ||
368 | uint8 count; | ||
369 | } BWL_POST_PACKED_STRUCT; | ||
370 | |||
371 | |||
372 | BWL_PRE_PACKED_STRUCT struct dot11_ext_csa { | ||
373 | uint8 id; | ||
374 | uint8 len; | ||
375 | struct dot11_csa_body b; | ||
376 | } BWL_POST_PACKED_STRUCT; | ||
377 | |||
378 | BWL_PRE_PACKED_STRUCT struct dot11y_action_ext_csa { | ||
379 | uint8 category; | ||
380 | uint8 action; | ||
381 | struct dot11_csa_body b; | ||
382 | } BWL_POST_PACKED_STRUCT; | ||
383 | typedef struct dot11_ext_csa dot11_ext_csa_ie_t; | ||
384 | #define DOT11_EXT_CSA_IE_LEN 4 | ||
385 | |||
386 | BWL_PRE_PACKED_STRUCT struct dot11_action_ext_csa { | ||
387 | uint8 category; | ||
388 | uint8 action; | ||
389 | dot11_ext_csa_ie_t chan_switch_ie; | ||
390 | } BWL_POST_PACKED_STRUCT; | ||
391 | |||
392 | BWL_PRE_PACKED_STRUCT struct dot11_obss_coex { | ||
393 | uint8 id; | ||
394 | uint8 len; | ||
395 | uint8 info; | ||
396 | } BWL_POST_PACKED_STRUCT; | ||
397 | typedef struct dot11_obss_coex dot11_obss_coex_t; | ||
398 | #define DOT11_OBSS_COEXINFO_LEN 1 | ||
399 | |||
400 | #define DOT11_OBSS_COEX_INFO_REQ 0x01 | ||
401 | #define DOT11_OBSS_COEX_40MHZ_INTOLERANT 0x02 | ||
402 | #define DOT11_OBSS_COEX_20MHZ_WIDTH_REQ 0x04 | ||
403 | |||
404 | BWL_PRE_PACKED_STRUCT struct dot11_obss_chanlist { | ||
405 | uint8 id; | ||
406 | uint8 len; | ||
407 | uint8 regclass; | ||
408 | uint8 chanlist[1]; | ||
409 | } BWL_POST_PACKED_STRUCT; | ||
410 | typedef struct dot11_obss_chanlist dot11_obss_chanlist_t; | ||
411 | #define DOT11_OBSS_CHANLIST_FIXED_LEN 1 | ||
412 | |||
413 | BWL_PRE_PACKED_STRUCT struct dot11_extcap_ie { | ||
414 | uint8 id; | ||
415 | uint8 len; | ||
416 | uint8 cap; | ||
417 | } BWL_POST_PACKED_STRUCT; | ||
418 | typedef struct dot11_extcap_ie dot11_extcap_ie_t; | ||
419 | #define DOT11_EXTCAP_LEN 1 | ||
420 | |||
421 | |||
422 | |||
423 | #define DOT11_MEASURE_TYPE_BASIC 0 | ||
424 | #define DOT11_MEASURE_TYPE_CCA 1 | ||
425 | #define DOT11_MEASURE_TYPE_RPI 2 | ||
426 | |||
427 | |||
428 | #define DOT11_MEASURE_MODE_ENABLE (1<<1) | ||
429 | #define DOT11_MEASURE_MODE_REQUEST (1<<2) | ||
430 | #define DOT11_MEASURE_MODE_REPORT (1<<3) | ||
431 | |||
432 | #define DOT11_MEASURE_MODE_LATE (1<<0) | ||
433 | #define DOT11_MEASURE_MODE_INCAPABLE (1<<1) | ||
434 | #define DOT11_MEASURE_MODE_REFUSED (1<<2) | ||
435 | |||
436 | #define DOT11_MEASURE_BASIC_MAP_BSS ((uint8)(1<<0)) | ||
437 | #define DOT11_MEASURE_BASIC_MAP_OFDM ((uint8)(1<<1)) | ||
438 | #define DOT11_MEASURE_BASIC_MAP_UKNOWN ((uint8)(1<<2)) | ||
439 | #define DOT11_MEASURE_BASIC_MAP_RADAR ((uint8)(1<<3)) | ||
440 | #define DOT11_MEASURE_BASIC_MAP_UNMEAS ((uint8)(1<<4)) | ||
441 | |||
442 | BWL_PRE_PACKED_STRUCT struct dot11_meas_req { | ||
443 | uint8 id; | ||
444 | uint8 len; | ||
445 | uint8 token; | ||
446 | uint8 mode; | ||
447 | uint8 type; | ||
448 | uint8 channel; | ||
449 | uint8 start_time[8]; | ||
450 | uint16 duration; | ||
451 | } BWL_POST_PACKED_STRUCT; | ||
452 | typedef struct dot11_meas_req dot11_meas_req_t; | ||
453 | #define DOT11_MNG_IE_MREQ_LEN 14 | ||
454 | |||
455 | #define DOT11_MNG_IE_MREQ_FIXED_LEN 3 | ||
456 | |||
457 | BWL_PRE_PACKED_STRUCT struct dot11_meas_rep { | ||
458 | uint8 id; | ||
459 | uint8 len; | ||
460 | uint8 token; | ||
461 | uint8 mode; | ||
462 | uint8 type; | ||
463 | BWL_PRE_PACKED_STRUCT union | ||
464 | { | ||
465 | BWL_PRE_PACKED_STRUCT struct { | ||
466 | uint8 channel; | ||
467 | uint8 start_time[8]; | ||
468 | uint16 duration; | ||
469 | uint8 map; | ||
470 | } BWL_POST_PACKED_STRUCT basic; | ||
471 | uint8 data[1]; | ||
472 | } BWL_POST_PACKED_STRUCT rep; | ||
473 | } BWL_POST_PACKED_STRUCT; | ||
474 | typedef struct dot11_meas_rep dot11_meas_rep_t; | ||
475 | |||
476 | |||
477 | #define DOT11_MNG_IE_MREP_FIXED_LEN 3 | ||
478 | |||
479 | BWL_PRE_PACKED_STRUCT struct dot11_meas_rep_basic { | ||
480 | uint8 channel; | ||
481 | uint8 start_time[8]; | ||
482 | uint16 duration; | ||
483 | uint8 map; | ||
484 | } BWL_POST_PACKED_STRUCT; | ||
485 | typedef struct dot11_meas_rep_basic dot11_meas_rep_basic_t; | ||
486 | #define DOT11_MEASURE_BASIC_REP_LEN 12 | ||
487 | |||
488 | BWL_PRE_PACKED_STRUCT struct dot11_quiet { | ||
489 | uint8 id; | ||
490 | uint8 len; | ||
491 | uint8 count; | ||
492 | uint8 period; | ||
493 | uint16 duration; | ||
494 | uint16 offset; | ||
495 | } BWL_POST_PACKED_STRUCT; | ||
496 | typedef struct dot11_quiet dot11_quiet_t; | ||
497 | |||
498 | BWL_PRE_PACKED_STRUCT struct chan_map_tuple { | ||
499 | uint8 channel; | ||
500 | uint8 map; | ||
501 | } BWL_POST_PACKED_STRUCT; | ||
502 | typedef struct chan_map_tuple chan_map_tuple_t; | ||
503 | |||
504 | BWL_PRE_PACKED_STRUCT struct dot11_ibss_dfs { | ||
505 | uint8 id; | ||
506 | uint8 len; | ||
507 | uint8 eaddr[ETHER_ADDR_LEN]; | ||
508 | uint8 interval; | ||
509 | chan_map_tuple_t map[1]; | ||
510 | } BWL_POST_PACKED_STRUCT; | ||
511 | typedef struct dot11_ibss_dfs dot11_ibss_dfs_t; | ||
512 | |||
513 | |||
514 | #define WME_OUI "\x00\x50\xf2" | ||
515 | #define WME_VER 1 | ||
516 | #define WME_TYPE 2 | ||
517 | #define WME_SUBTYPE_IE 0 | ||
518 | #define WME_SUBTYPE_PARAM_IE 1 | ||
519 | #define WME_SUBTYPE_TSPEC 2 | ||
520 | |||
521 | |||
522 | #define AC_BE 0 | ||
523 | #define AC_BK 1 | ||
524 | #define AC_VI 2 | ||
525 | #define AC_VO 3 | ||
526 | #define AC_COUNT 4 | ||
527 | |||
528 | typedef uint8 ac_bitmap_t; | ||
529 | |||
530 | #define AC_BITMAP_NONE 0x0 | ||
531 | #define AC_BITMAP_ALL 0xf | ||
532 | #define AC_BITMAP_TST(ab, ac) (((ab) & (1 << (ac))) != 0) | ||
533 | #define AC_BITMAP_SET(ab, ac) (((ab) |= (1 << (ac)))) | ||
534 | #define AC_BITMAP_RESET(ab, ac) (((ab) &= ~(1 << (ac)))) | ||
535 | |||
536 | |||
537 | BWL_PRE_PACKED_STRUCT struct wme_ie { | ||
538 | uint8 oui[3]; | ||
539 | uint8 type; | ||
540 | uint8 subtype; | ||
541 | uint8 version; | ||
542 | uint8 qosinfo; | ||
543 | } BWL_POST_PACKED_STRUCT; | ||
544 | typedef struct wme_ie wme_ie_t; | ||
545 | #define WME_IE_LEN 7 | ||
546 | |||
547 | BWL_PRE_PACKED_STRUCT struct edcf_acparam { | ||
548 | uint8 ACI; | ||
549 | uint8 ECW; | ||
550 | uint16 TXOP; | ||
551 | } BWL_POST_PACKED_STRUCT; | ||
552 | typedef struct edcf_acparam edcf_acparam_t; | ||
553 | |||
554 | |||
555 | BWL_PRE_PACKED_STRUCT struct wme_param_ie { | ||
556 | uint8 oui[3]; | ||
557 | uint8 type; | ||
558 | uint8 subtype; | ||
559 | uint8 version; | ||
560 | uint8 qosinfo; | ||
561 | uint8 rsvd; | ||
562 | edcf_acparam_t acparam[AC_COUNT]; | ||
563 | } BWL_POST_PACKED_STRUCT; | ||
564 | typedef struct wme_param_ie wme_param_ie_t; | ||
565 | #define WME_PARAM_IE_LEN 24 | ||
566 | |||
567 | |||
568 | #define WME_QI_AP_APSD_MASK 0x80 | ||
569 | #define WME_QI_AP_APSD_SHIFT 7 | ||
570 | #define WME_QI_AP_COUNT_MASK 0x0f | ||
571 | #define WME_QI_AP_COUNT_SHIFT 0 | ||
572 | |||
573 | |||
574 | #define WME_QI_STA_MAXSPLEN_MASK 0x60 | ||
575 | #define WME_QI_STA_MAXSPLEN_SHIFT 5 | ||
576 | #define WME_QI_STA_APSD_ALL_MASK 0xf | ||
577 | #define WME_QI_STA_APSD_ALL_SHIFT 0 | ||
578 | #define WME_QI_STA_APSD_BE_MASK 0x8 | ||
579 | #define WME_QI_STA_APSD_BE_SHIFT 3 | ||
580 | #define WME_QI_STA_APSD_BK_MASK 0x4 | ||
581 | #define WME_QI_STA_APSD_BK_SHIFT 2 | ||
582 | #define WME_QI_STA_APSD_VI_MASK 0x2 | ||
583 | #define WME_QI_STA_APSD_VI_SHIFT 1 | ||
584 | #define WME_QI_STA_APSD_VO_MASK 0x1 | ||
585 | #define WME_QI_STA_APSD_VO_SHIFT 0 | ||
586 | |||
587 | |||
588 | #define EDCF_AIFSN_MIN 1 | ||
589 | #define EDCF_AIFSN_MAX 15 | ||
590 | #define EDCF_AIFSN_MASK 0x0f | ||
591 | #define EDCF_ACM_MASK 0x10 | ||
592 | #define EDCF_ACI_MASK 0x60 | ||
593 | #define EDCF_ACI_SHIFT 5 | ||
594 | #define EDCF_AIFSN_SHIFT 12 | ||
595 | |||
596 | |||
597 | #define EDCF_ECW_MIN 0 | ||
598 | #define EDCF_ECW_MAX 15 | ||
599 | #define EDCF_ECW2CW(exp) ((1 << (exp)) - 1) | ||
600 | #define EDCF_ECWMIN_MASK 0x0f | ||
601 | #define EDCF_ECWMAX_MASK 0xf0 | ||
602 | #define EDCF_ECWMAX_SHIFT 4 | ||
603 | |||
604 | |||
605 | #define EDCF_TXOP_MIN 0 | ||
606 | #define EDCF_TXOP_MAX 65535 | ||
607 | #define EDCF_TXOP2USEC(txop) ((txop) << 5) | ||
608 | |||
609 | |||
610 | #define NON_EDCF_AC_BE_ACI_STA 0x02 | ||
611 | |||
612 | |||
613 | #define EDCF_AC_BE_ACI_STA 0x03 | ||
614 | #define EDCF_AC_BE_ECW_STA 0xA4 | ||
615 | #define EDCF_AC_BE_TXOP_STA 0x0000 | ||
616 | #define EDCF_AC_BK_ACI_STA 0x27 | ||
617 | #define EDCF_AC_BK_ECW_STA 0xA4 | ||
618 | #define EDCF_AC_BK_TXOP_STA 0x0000 | ||
619 | #define EDCF_AC_VI_ACI_STA 0x42 | ||
620 | #define EDCF_AC_VI_ECW_STA 0x43 | ||
621 | #define EDCF_AC_VI_TXOP_STA 0x005e | ||
622 | #define EDCF_AC_VO_ACI_STA 0x62 | ||
623 | #define EDCF_AC_VO_ECW_STA 0x32 | ||
624 | #define EDCF_AC_VO_TXOP_STA 0x002f | ||
625 | |||
626 | |||
627 | #define EDCF_AC_BE_ACI_AP 0x03 | ||
628 | #define EDCF_AC_BE_ECW_AP 0x64 | ||
629 | #define EDCF_AC_BE_TXOP_AP 0x0000 | ||
630 | #define EDCF_AC_BK_ACI_AP 0x27 | ||
631 | #define EDCF_AC_BK_ECW_AP 0xA4 | ||
632 | #define EDCF_AC_BK_TXOP_AP 0x0000 | ||
633 | #define EDCF_AC_VI_ACI_AP 0x41 | ||
634 | #define EDCF_AC_VI_ECW_AP 0x43 | ||
635 | #define EDCF_AC_VI_TXOP_AP 0x005e | ||
636 | #define EDCF_AC_VO_ACI_AP 0x61 | ||
637 | #define EDCF_AC_VO_ECW_AP 0x32 | ||
638 | #define EDCF_AC_VO_TXOP_AP 0x002f | ||
639 | |||
640 | |||
641 | BWL_PRE_PACKED_STRUCT struct edca_param_ie { | ||
642 | uint8 qosinfo; | ||
643 | uint8 rsvd; | ||
644 | edcf_acparam_t acparam[AC_COUNT]; | ||
645 | } BWL_POST_PACKED_STRUCT; | ||
646 | typedef struct edca_param_ie edca_param_ie_t; | ||
647 | #define EDCA_PARAM_IE_LEN 18 | ||
648 | |||
649 | |||
650 | BWL_PRE_PACKED_STRUCT struct qos_cap_ie { | ||
651 | uint8 qosinfo; | ||
652 | } BWL_POST_PACKED_STRUCT; | ||
653 | typedef struct qos_cap_ie qos_cap_ie_t; | ||
654 | |||
655 | BWL_PRE_PACKED_STRUCT struct dot11_qbss_load_ie { | ||
656 | uint8 id; | ||
657 | uint8 length; | ||
658 | uint16 station_count; | ||
659 | uint8 channel_utilization; | ||
660 | uint16 aac; | ||
661 | } BWL_POST_PACKED_STRUCT; | ||
662 | typedef struct dot11_qbss_load_ie dot11_qbss_load_ie_t; | ||
663 | |||
664 | |||
665 | #define FIXED_MSDU_SIZE 0x8000 | ||
666 | #define MSDU_SIZE_MASK 0x7fff | ||
667 | |||
668 | |||
669 | |||
670 | #define INTEGER_SHIFT 13 | ||
671 | #define FRACTION_MASK 0x1FFF | ||
672 | |||
673 | |||
674 | BWL_PRE_PACKED_STRUCT struct dot11_management_notification { | ||
675 | uint8 category; | ||
676 | uint8 action; | ||
677 | uint8 token; | ||
678 | uint8 status; | ||
679 | uint8 data[1]; | ||
680 | } BWL_POST_PACKED_STRUCT; | ||
681 | #define DOT11_MGMT_NOTIFICATION_LEN 4 | ||
682 | |||
683 | |||
684 | #define WME_ADDTS_REQUEST 0 | ||
685 | #define WME_ADDTS_RESPONSE 1 | ||
686 | #define WME_DELTS_REQUEST 2 | ||
687 | |||
688 | |||
689 | #define WME_ADMISSION_ACCEPTED 0 | ||
690 | #define WME_INVALID_PARAMETERS 1 | ||
691 | #define WME_ADMISSION_REFUSED 3 | ||
692 | |||
693 | |||
694 | #define BCN_PRB_SSID(body) ((char*)(body) + DOT11_BCN_PRB_LEN) | ||
695 | |||
696 | |||
697 | #define DOT11_OPEN_SYSTEM 0 | ||
698 | #define DOT11_SHARED_KEY 1 | ||
699 | |||
700 | #define DOT11_OPEN_SHARED 2 | ||
701 | #define DOT11_CHALLENGE_LEN 128 | ||
702 | |||
703 | |||
704 | #define FC_PVER_MASK 0x3 | ||
705 | #define FC_PVER_SHIFT 0 | ||
706 | #define FC_TYPE_MASK 0xC | ||
707 | #define FC_TYPE_SHIFT 2 | ||
708 | #define FC_SUBTYPE_MASK 0xF0 | ||
709 | #define FC_SUBTYPE_SHIFT 4 | ||
710 | #define FC_TODS 0x100 | ||
711 | #define FC_TODS_SHIFT 8 | ||
712 | #define FC_FROMDS 0x200 | ||
713 | #define FC_FROMDS_SHIFT 9 | ||
714 | #define FC_MOREFRAG 0x400 | ||
715 | #define FC_MOREFRAG_SHIFT 10 | ||
716 | #define FC_RETRY 0x800 | ||
717 | #define FC_RETRY_SHIFT 11 | ||
718 | #define FC_PM 0x1000 | ||
719 | #define FC_PM_SHIFT 12 | ||
720 | #define FC_MOREDATA 0x2000 | ||
721 | #define FC_MOREDATA_SHIFT 13 | ||
722 | #define FC_WEP 0x4000 | ||
723 | #define FC_WEP_SHIFT 14 | ||
724 | #define FC_ORDER 0x8000 | ||
725 | #define FC_ORDER_SHIFT 15 | ||
726 | |||
727 | |||
728 | #define SEQNUM_SHIFT 4 | ||
729 | #define SEQNUM_MAX 0x1000 | ||
730 | #define FRAGNUM_MASK 0xF | ||
731 | |||
732 | |||
733 | |||
734 | |||
735 | #define FC_TYPE_MNG 0 | ||
736 | #define FC_TYPE_CTL 1 | ||
737 | #define FC_TYPE_DATA 2 | ||
738 | |||
739 | |||
740 | #define FC_SUBTYPE_ASSOC_REQ 0 | ||
741 | #define FC_SUBTYPE_ASSOC_RESP 1 | ||
742 | #define FC_SUBTYPE_REASSOC_REQ 2 | ||
743 | #define FC_SUBTYPE_REASSOC_RESP 3 | ||
744 | #define FC_SUBTYPE_PROBE_REQ 4 | ||
745 | #define FC_SUBTYPE_PROBE_RESP 5 | ||
746 | #define FC_SUBTYPE_BEACON 8 | ||
747 | #define FC_SUBTYPE_ATIM 9 | ||
748 | #define FC_SUBTYPE_DISASSOC 10 | ||
749 | #define FC_SUBTYPE_AUTH 11 | ||
750 | #define FC_SUBTYPE_DEAUTH 12 | ||
751 | #define FC_SUBTYPE_ACTION 13 | ||
752 | #define FC_SUBTYPE_ACTION_NOACK 14 | ||
753 | |||
754 | |||
755 | #define FC_SUBTYPE_CTL_WRAPPER 7 | ||
756 | #define FC_SUBTYPE_BLOCKACK_REQ 8 | ||
757 | #define FC_SUBTYPE_BLOCKACK 9 | ||
758 | #define FC_SUBTYPE_PS_POLL 10 | ||
759 | #define FC_SUBTYPE_RTS 11 | ||
760 | #define FC_SUBTYPE_CTS 12 | ||
761 | #define FC_SUBTYPE_ACK 13 | ||
762 | #define FC_SUBTYPE_CF_END 14 | ||
763 | #define FC_SUBTYPE_CF_END_ACK 15 | ||
764 | |||
765 | |||
766 | #define FC_SUBTYPE_DATA 0 | ||
767 | #define FC_SUBTYPE_DATA_CF_ACK 1 | ||
768 | #define FC_SUBTYPE_DATA_CF_POLL 2 | ||
769 | #define FC_SUBTYPE_DATA_CF_ACK_POLL 3 | ||
770 | #define FC_SUBTYPE_NULL 4 | ||
771 | #define FC_SUBTYPE_CF_ACK 5 | ||
772 | #define FC_SUBTYPE_CF_POLL 6 | ||
773 | #define FC_SUBTYPE_CF_ACK_POLL 7 | ||
774 | #define FC_SUBTYPE_QOS_DATA 8 | ||
775 | #define FC_SUBTYPE_QOS_DATA_CF_ACK 9 | ||
776 | #define FC_SUBTYPE_QOS_DATA_CF_POLL 10 | ||
777 | #define FC_SUBTYPE_QOS_DATA_CF_ACK_POLL 11 | ||
778 | #define FC_SUBTYPE_QOS_NULL 12 | ||
779 | #define FC_SUBTYPE_QOS_CF_POLL 14 | ||
780 | #define FC_SUBTYPE_QOS_CF_ACK_POLL 15 | ||
781 | |||
782 | |||
783 | #define FC_SUBTYPE_ANY_QOS(s) (((s) & 8) != 0) | ||
784 | #define FC_SUBTYPE_ANY_NULL(s) (((s) & 4) != 0) | ||
785 | #define FC_SUBTYPE_ANY_CF_POLL(s) (((s) & 2) != 0) | ||
786 | #define FC_SUBTYPE_ANY_CF_ACK(s) (((s) & 1) != 0) | ||
787 | |||
788 | |||
789 | #define FC_KIND_MASK (FC_TYPE_MASK | FC_SUBTYPE_MASK) | ||
790 | |||
791 | #define FC_KIND(t, s) (((t) << FC_TYPE_SHIFT) | ((s) << FC_SUBTYPE_SHIFT)) | ||
792 | |||
793 | #define FC_SUBTYPE(fc) (((fc) & FC_SUBTYPE_MASK) >> FC_SUBTYPE_SHIFT) | ||
794 | #define FC_TYPE(fc) (((fc) & FC_TYPE_MASK) >> FC_TYPE_SHIFT) | ||
795 | |||
796 | #define FC_ASSOC_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ASSOC_REQ) | ||
797 | #define FC_ASSOC_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ASSOC_RESP) | ||
798 | #define FC_REASSOC_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_REASSOC_REQ) | ||
799 | #define FC_REASSOC_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_REASSOC_RESP) | ||
800 | #define FC_PROBE_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_PROBE_REQ) | ||
801 | #define FC_PROBE_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_PROBE_RESP) | ||
802 | #define FC_BEACON FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_BEACON) | ||
803 | #define FC_DISASSOC FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_DISASSOC) | ||
804 | #define FC_AUTH FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_AUTH) | ||
805 | #define FC_DEAUTH FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_DEAUTH) | ||
806 | #define FC_ACTION FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ACTION) | ||
807 | #define FC_ACTION_NOACK FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ACTION_NOACK) | ||
808 | |||
809 | #define FC_CTL_WRAPPER FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CTL_WRAPPER) | ||
810 | #define FC_BLOCKACK_REQ FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_BLOCKACK_REQ) | ||
811 | #define FC_BLOCKACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_BLOCKACK) | ||
812 | #define FC_PS_POLL FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_PS_POLL) | ||
813 | #define FC_RTS FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_RTS) | ||
814 | #define FC_CTS FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CTS) | ||
815 | #define FC_ACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_ACK) | ||
816 | #define FC_CF_END FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CF_END) | ||
817 | #define FC_CF_END_ACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CF_END_ACK) | ||
818 | |||
819 | #define FC_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_DATA) | ||
820 | #define FC_NULL_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_NULL) | ||
821 | #define FC_DATA_CF_ACK FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_DATA_CF_ACK) | ||
822 | #define FC_QOS_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_QOS_DATA) | ||
823 | #define FC_QOS_NULL FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_QOS_NULL) | ||
824 | |||
825 | |||
826 | |||
827 | |||
828 | #define QOS_PRIO_SHIFT 0 | ||
829 | #define QOS_PRIO_MASK 0x0007 | ||
830 | #define QOS_PRIO(qos) (((qos) & QOS_PRIO_MASK) >> QOS_PRIO_SHIFT) | ||
831 | |||
832 | |||
833 | #define QOS_TID_SHIFT 0 | ||
834 | #define QOS_TID_MASK 0x000f | ||
835 | #define QOS_TID(qos) (((qos) & QOS_TID_MASK) >> QOS_TID_SHIFT) | ||
836 | |||
837 | |||
838 | #define QOS_EOSP_SHIFT 4 | ||
839 | #define QOS_EOSP_MASK 0x0010 | ||
840 | #define QOS_EOSP(qos) (((qos) & QOS_EOSP_MASK) >> QOS_EOSP_SHIFT) | ||
841 | |||
842 | |||
843 | #define QOS_ACK_NORMAL_ACK 0 | ||
844 | #define QOS_ACK_NO_ACK 1 | ||
845 | #define QOS_ACK_NO_EXP_ACK 2 | ||
846 | #define QOS_ACK_BLOCK_ACK 3 | ||
847 | #define QOS_ACK_SHIFT 5 | ||
848 | #define QOS_ACK_MASK 0x0060 | ||
849 | #define QOS_ACK(qos) (((qos) & QOS_ACK_MASK) >> QOS_ACK_SHIFT) | ||
850 | |||
851 | |||
852 | #define QOS_AMSDU_SHIFT 7 | ||
853 | #define QOS_AMSDU_MASK 0x0080 | ||
854 | |||
855 | |||
856 | |||
857 | |||
858 | |||
859 | |||
860 | #define DOT11_MNG_AUTH_ALGO_LEN 2 | ||
861 | #define DOT11_MNG_AUTH_SEQ_LEN 2 | ||
862 | #define DOT11_MNG_BEACON_INT_LEN 2 | ||
863 | #define DOT11_MNG_CAP_LEN 2 | ||
864 | #define DOT11_MNG_AP_ADDR_LEN 6 | ||
865 | #define DOT11_MNG_LISTEN_INT_LEN 2 | ||
866 | #define DOT11_MNG_REASON_LEN 2 | ||
867 | #define DOT11_MNG_AID_LEN 2 | ||
868 | #define DOT11_MNG_STATUS_LEN 2 | ||
869 | #define DOT11_MNG_TIMESTAMP_LEN 8 | ||
870 | |||
871 | |||
872 | #define DOT11_AID_MASK 0x3fff | ||
873 | |||
874 | |||
875 | #define DOT11_RC_RESERVED 0 | ||
876 | #define DOT11_RC_UNSPECIFIED 1 | ||
877 | #define DOT11_RC_AUTH_INVAL 2 | ||
878 | #define DOT11_RC_DEAUTH_LEAVING 3 | ||
879 | #define DOT11_RC_INACTIVITY 4 | ||
880 | #define DOT11_RC_BUSY 5 | ||
881 | #define DOT11_RC_INVAL_CLASS_2 6 | ||
882 | #define DOT11_RC_INVAL_CLASS_3 7 | ||
883 | #define DOT11_RC_DISASSOC_LEAVING 8 | ||
884 | #define DOT11_RC_NOT_AUTH 9 | ||
885 | #define DOT11_RC_BAD_PC 10 | ||
886 | #define DOT11_RC_BAD_CHANNELS 11 | ||
887 | |||
888 | |||
889 | |||
890 | #define DOT11_RC_UNSPECIFIED_QOS 32 | ||
891 | #define DOT11_RC_INSUFFCIENT_BW 33 | ||
892 | #define DOT11_RC_EXCESSIVE_FRAMES 34 | ||
893 | #define DOT11_RC_TX_OUTSIDE_TXOP 35 | ||
894 | #define DOT11_RC_LEAVING_QBSS 36 | ||
895 | #define DOT11_RC_BAD_MECHANISM 37 | ||
896 | #define DOT11_RC_SETUP_NEEDED 38 | ||
897 | #define DOT11_RC_TIMEOUT 39 | ||
898 | |||
899 | #define DOT11_RC_MAX 23 | ||
900 | |||
901 | |||
902 | #define DOT11_SC_SUCCESS 0 | ||
903 | #define DOT11_SC_FAILURE 1 | ||
904 | #define DOT11_SC_CAP_MISMATCH 10 | ||
905 | #define DOT11_SC_REASSOC_FAIL 11 | ||
906 | #define DOT11_SC_ASSOC_FAIL 12 | ||
907 | #define DOT11_SC_AUTH_MISMATCH 13 | ||
908 | #define DOT11_SC_AUTH_SEQ 14 | ||
909 | #define DOT11_SC_AUTH_CHALLENGE_FAIL 15 | ||
910 | #define DOT11_SC_AUTH_TIMEOUT 16 | ||
911 | #define DOT11_SC_ASSOC_BUSY_FAIL 17 | ||
912 | #define DOT11_SC_ASSOC_RATE_MISMATCH 18 | ||
913 | #define DOT11_SC_ASSOC_SHORT_REQUIRED 19 | ||
914 | #define DOT11_SC_ASSOC_PBCC_REQUIRED 20 | ||
915 | #define DOT11_SC_ASSOC_AGILITY_REQUIRED 21 | ||
916 | #define DOT11_SC_ASSOC_SPECTRUM_REQUIRED 22 | ||
917 | #define DOT11_SC_ASSOC_BAD_POWER_CAP 23 | ||
918 | #define DOT11_SC_ASSOC_BAD_SUP_CHANNELS 24 | ||
919 | #define DOT11_SC_ASSOC_SHORTSLOT_REQUIRED 25 | ||
920 | #define DOT11_SC_ASSOC_ERPBCC_REQUIRED 26 | ||
921 | #define DOT11_SC_ASSOC_DSSOFDM_REQUIRED 27 | ||
922 | |||
923 | #define DOT11_SC_DECLINED 37 | ||
924 | #define DOT11_SC_INVALID_PARAMS 38 | ||
925 | |||
926 | |||
927 | #define DOT11_MNG_DS_PARAM_LEN 1 | ||
928 | #define DOT11_MNG_IBSS_PARAM_LEN 2 | ||
929 | |||
930 | |||
931 | #define DOT11_MNG_TIM_FIXED_LEN 3 | ||
932 | #define DOT11_MNG_TIM_DTIM_COUNT 0 | ||
933 | #define DOT11_MNG_TIM_DTIM_PERIOD 1 | ||
934 | #define DOT11_MNG_TIM_BITMAP_CTL 2 | ||
935 | #define DOT11_MNG_TIM_PVB 3 | ||
936 | |||
937 | |||
938 | #define TLV_TAG_OFF 0 | ||
939 | #define TLV_LEN_OFF 1 | ||
940 | #define TLV_HDR_LEN 2 | ||
941 | #define TLV_BODY_OFF 2 | ||
942 | |||
943 | |||
944 | #define DOT11_MNG_SSID_ID 0 | ||
945 | #define DOT11_MNG_RATES_ID 1 | ||
946 | #define DOT11_MNG_FH_PARMS_ID 2 | ||
947 | #define DOT11_MNG_DS_PARMS_ID 3 | ||
948 | #define DOT11_MNG_CF_PARMS_ID 4 | ||
949 | #define DOT11_MNG_TIM_ID 5 | ||
950 | #define DOT11_MNG_IBSS_PARMS_ID 6 | ||
951 | #define DOT11_MNG_COUNTRY_ID 7 | ||
952 | #define DOT11_MNG_HOPPING_PARMS_ID 8 | ||
953 | #define DOT11_MNG_HOPPING_TABLE_ID 9 | ||
954 | #define DOT11_MNG_REQUEST_ID 10 | ||
955 | #define DOT11_MNG_QBSS_LOAD_ID 11 | ||
956 | #define DOT11_MNG_EDCA_PARAM_ID 12 | ||
957 | #define DOT11_MNG_CHALLENGE_ID 16 | ||
958 | #define DOT11_MNG_PWR_CONSTRAINT_ID 32 | ||
959 | #define DOT11_MNG_PWR_CAP_ID 33 | ||
960 | #define DOT11_MNG_TPC_REQUEST_ID 34 | ||
961 | #define DOT11_MNG_TPC_REPORT_ID 35 | ||
962 | #define DOT11_MNG_SUPP_CHANNELS_ID 36 | ||
963 | #define DOT11_MNG_CHANNEL_SWITCH_ID 37 | ||
964 | #define DOT11_MNG_MEASURE_REQUEST_ID 38 | ||
965 | #define DOT11_MNG_MEASURE_REPORT_ID 39 | ||
966 | #define DOT11_MNG_QUIET_ID 40 | ||
967 | #define DOT11_MNG_IBSS_DFS_ID 41 | ||
968 | #define DOT11_MNG_ERP_ID 42 | ||
969 | #define DOT11_MNG_TS_DELAY_ID 43 | ||
970 | #define DOT11_MNG_HT_CAP 45 | ||
971 | #define DOT11_MNG_QOS_CAP_ID 46 | ||
972 | #define DOT11_MNG_NONERP_ID 47 | ||
973 | #define DOT11_MNG_RSN_ID 48 | ||
974 | #define DOT11_MNG_EXT_RATES_ID 50 | ||
975 | #define DOT11_MNG_REGCLASS_ID 59 | ||
976 | #define DOT11_MNG_EXT_CSA_ID 60 | ||
977 | #define DOT11_MNG_HT_ADD 61 | ||
978 | #define DOT11_MNG_EXT_CHANNEL_OFFSET 62 | ||
979 | #define DOT11_MNG_WAPI_ID 68 | ||
980 | #define DOT11_MNG_HT_BSS_COEXINFO_ID 72 | ||
981 | #define DOT11_MNG_HT_BSS_CHANNEL_REPORT_ID 73 | ||
982 | #define DOT11_MNG_HT_OBSS_ID 74 | ||
983 | #define DOT11_MNG_EXT_CAP 127 | ||
984 | #define DOT11_MNG_WPA_ID 221 | ||
985 | #define DOT11_MNG_PROPR_ID 221 | ||
986 | |||
987 | |||
988 | #define DOT11_RATE_BASIC 0x80 | ||
989 | #define DOT11_RATE_MASK 0x7F | ||
990 | |||
991 | |||
992 | #define DOT11_MNG_ERP_LEN 1 | ||
993 | #define DOT11_MNG_NONERP_PRESENT 0x01 | ||
994 | #define DOT11_MNG_USE_PROTECTION 0x02 | ||
995 | #define DOT11_MNG_BARKER_PREAMBLE 0x04 | ||
996 | |||
997 | #define DOT11_MGN_TS_DELAY_LEN 4 | ||
998 | #define TS_DELAY_FIELD_SIZE 4 | ||
999 | |||
1000 | |||
1001 | #define DOT11_CAP_ESS 0x0001 | ||
1002 | #define DOT11_CAP_IBSS 0x0002 | ||
1003 | #define DOT11_CAP_POLLABLE 0x0004 | ||
1004 | #define DOT11_CAP_POLL_RQ 0x0008 | ||
1005 | #define DOT11_CAP_PRIVACY 0x0010 | ||
1006 | #define DOT11_CAP_SHORT 0x0020 | ||
1007 | #define DOT11_CAP_PBCC 0x0040 | ||
1008 | #define DOT11_CAP_AGILITY 0x0080 | ||
1009 | #define DOT11_CAP_SPECTRUM 0x0100 | ||
1010 | #define DOT11_CAP_SHORTSLOT 0x0400 | ||
1011 | #define DOT11_CAP_CCK_OFDM 0x2000 | ||
1012 | |||
1013 | |||
1014 | #define DOT11_OBSS_COEX_MNG_SUPPORT 0x01 | ||
1015 | |||
1016 | |||
1017 | #define DOT11_ACTION_HDR_LEN 2 | ||
1018 | #define DOT11_ACTION_CAT_ERR_MASK 0x80 | ||
1019 | #define DOT11_ACTION_CAT_MASK 0x7F | ||
1020 | #define DOT11_ACTION_CAT_SPECT_MNG 0 | ||
1021 | #define DOT11_ACTION_CAT_BLOCKACK 3 | ||
1022 | #define DOT11_ACTION_CAT_PUBLIC 4 | ||
1023 | #define DOT11_ACTION_CAT_HT 7 | ||
1024 | #define DOT11_ACTION_CAT_VS 127 | ||
1025 | #define DOT11_ACTION_NOTIFICATION 0x11 | ||
1026 | |||
1027 | #define DOT11_ACTION_ID_M_REQ 0 | ||
1028 | #define DOT11_ACTION_ID_M_REP 1 | ||
1029 | #define DOT11_ACTION_ID_TPC_REQ 2 | ||
1030 | #define DOT11_ACTION_ID_TPC_REP 3 | ||
1031 | #define DOT11_ACTION_ID_CHANNEL_SWITCH 4 | ||
1032 | #define DOT11_ACTION_ID_EXT_CSA 5 | ||
1033 | |||
1034 | |||
1035 | #define DOT11_ACTION_ID_HT_CH_WIDTH 0 | ||
1036 | #define DOT11_ACTION_ID_HT_MIMO_PS 1 | ||
1037 | |||
1038 | |||
1039 | #define DOT11_PUB_ACTION_BSS_COEX_MNG 0 | ||
1040 | #define DOT11_PUB_ACTION_CHANNEL_SWITCH 4 | ||
1041 | |||
1042 | |||
1043 | #define DOT11_BA_ACTION_ADDBA_REQ 0 | ||
1044 | #define DOT11_BA_ACTION_ADDBA_RESP 1 | ||
1045 | #define DOT11_BA_ACTION_DELBA 2 | ||
1046 | |||
1047 | |||
1048 | #define DOT11_ADDBA_PARAM_AMSDU_SUP 0x0001 | ||
1049 | #define DOT11_ADDBA_PARAM_POLICY_MASK 0x0002 | ||
1050 | #define DOT11_ADDBA_PARAM_POLICY_SHIFT 1 | ||
1051 | #define DOT11_ADDBA_PARAM_TID_MASK 0x003c | ||
1052 | #define DOT11_ADDBA_PARAM_TID_SHIFT 2 | ||
1053 | #define DOT11_ADDBA_PARAM_BSIZE_MASK 0xffc0 | ||
1054 | #define DOT11_ADDBA_PARAM_BSIZE_SHIFT 6 | ||
1055 | |||
1056 | #define DOT11_ADDBA_POLICY_DELAYED 0 | ||
1057 | #define DOT11_ADDBA_POLICY_IMMEDIATE 1 | ||
1058 | |||
1059 | BWL_PRE_PACKED_STRUCT struct dot11_addba_req { | ||
1060 | uint8 category; | ||
1061 | uint8 action; | ||
1062 | uint8 token; | ||
1063 | uint16 addba_param_set; | ||
1064 | uint16 timeout; | ||
1065 | uint16 start_seqnum; | ||
1066 | } BWL_POST_PACKED_STRUCT; | ||
1067 | typedef struct dot11_addba_req dot11_addba_req_t; | ||
1068 | #define DOT11_ADDBA_REQ_LEN 9 | ||
1069 | |||
1070 | BWL_PRE_PACKED_STRUCT struct dot11_addba_resp { | ||
1071 | uint8 category; | ||
1072 | uint8 action; | ||
1073 | uint8 token; | ||
1074 | uint16 status; | ||
1075 | uint16 addba_param_set; | ||
1076 | uint16 timeout; | ||
1077 | } BWL_POST_PACKED_STRUCT; | ||
1078 | typedef struct dot11_addba_resp dot11_addba_resp_t; | ||
1079 | #define DOT11_ADDBA_RESP_LEN 9 | ||
1080 | |||
1081 | |||
1082 | #define DOT11_DELBA_PARAM_INIT_MASK 0x0800 | ||
1083 | #define DOT11_DELBA_PARAM_INIT_SHIFT 11 | ||
1084 | #define DOT11_DELBA_PARAM_TID_MASK 0xf000 | ||
1085 | #define DOT11_DELBA_PARAM_TID_SHIFT 12 | ||
1086 | |||
1087 | BWL_PRE_PACKED_STRUCT struct dot11_delba { | ||
1088 | uint8 category; | ||
1089 | uint8 action; | ||
1090 | uint16 delba_param_set; | ||
1091 | uint16 reason; | ||
1092 | } BWL_POST_PACKED_STRUCT; | ||
1093 | typedef struct dot11_delba dot11_delba_t; | ||
1094 | #define DOT11_DELBA_LEN 6 | ||
1095 | |||
1096 | |||
1097 | #define DOT11_BSSTYPE_INFRASTRUCTURE 0 | ||
1098 | #define DOT11_BSSTYPE_INDEPENDENT 1 | ||
1099 | #define DOT11_BSSTYPE_ANY 2 | ||
1100 | #define DOT11_SCANTYPE_ACTIVE 0 | ||
1101 | #define DOT11_SCANTYPE_PASSIVE 1 | ||
1102 | |||
1103 | |||
1104 | #define PREN_PREAMBLE 24 | ||
1105 | #define PREN_MM_EXT 8 | ||
1106 | #define PREN_PREAMBLE_EXT 4 | ||
1107 | |||
1108 | |||
1109 | #define NPHY_RIFS_TIME 2 | ||
1110 | |||
1111 | |||
1112 | #define APHY_SLOT_TIME 9 | ||
1113 | #define APHY_SIFS_TIME 16 | ||
1114 | #define APHY_DIFS_TIME (APHY_SIFS_TIME + (2 * APHY_SLOT_TIME)) | ||
1115 | #define APHY_PREAMBLE_TIME 16 | ||
1116 | #define APHY_SIGNAL_TIME 4 | ||
1117 | #define APHY_SYMBOL_TIME 4 | ||
1118 | #define APHY_SERVICE_NBITS 16 | ||
1119 | #define APHY_TAIL_NBITS 6 | ||
1120 | #define APHY_CWMIN 15 | ||
1121 | |||
1122 | |||
1123 | #define BPHY_SLOT_TIME 20 | ||
1124 | #define BPHY_SIFS_TIME 10 | ||
1125 | #define BPHY_DIFS_TIME 50 | ||
1126 | #define BPHY_PLCP_TIME 192 | ||
1127 | #define BPHY_PLCP_SHORT_TIME 96 | ||
1128 | #define BPHY_CWMIN 31 | ||
1129 | |||
1130 | |||
1131 | #define DOT11_OFDM_SIGNAL_EXTENSION 6 | ||
1132 | |||
1133 | #define PHY_CWMAX 1023 | ||
1134 | |||
1135 | #define DOT11_MAXNUMFRAGS 16 | ||
1136 | |||
1137 | |||
1138 | typedef struct d11cnt { | ||
1139 | uint32 txfrag; | ||
1140 | uint32 txmulti; | ||
1141 | uint32 txfail; | ||
1142 | uint32 txretry; | ||
1143 | uint32 txretrie; | ||
1144 | uint32 rxdup; | ||
1145 | uint32 txrts; | ||
1146 | uint32 txnocts; | ||
1147 | uint32 txnoack; | ||
1148 | uint32 rxfrag; | ||
1149 | uint32 rxmulti; | ||
1150 | uint32 rxcrc; | ||
1151 | uint32 txfrmsnt; | ||
1152 | uint32 rxundec; | ||
1153 | } d11cnt_t; | ||
1154 | |||
1155 | |||
1156 | #define BRCM_PROP_OUI "\x00\x90\x4C" | ||
1157 | |||
1158 | |||
1159 | |||
1160 | |||
1161 | BWL_PRE_PACKED_STRUCT struct brcm_prop_ie_s { | ||
1162 | uint8 id; | ||
1163 | uint8 len; | ||
1164 | uint8 oui[3]; | ||
1165 | uint8 type; | ||
1166 | uint16 cap; | ||
1167 | } BWL_POST_PACKED_STRUCT; | ||
1168 | typedef struct brcm_prop_ie_s brcm_prop_ie_t; | ||
1169 | |||
1170 | #define BRCM_PROP_IE_LEN 6 | ||
1171 | |||
1172 | #define DPT_IE_TYPE 2 | ||
1173 | |||
1174 | |||
1175 | #define BRCM_OUI "\x00\x10\x18" | ||
1176 | |||
1177 | |||
1178 | BWL_PRE_PACKED_STRUCT struct brcm_ie { | ||
1179 | uint8 id; | ||
1180 | uint8 len; | ||
1181 | uint8 oui[3]; | ||
1182 | uint8 ver; | ||
1183 | uint8 assoc; | ||
1184 | uint8 flags; | ||
1185 | uint8 flags1; | ||
1186 | uint16 amsdu_mtu_pref; | ||
1187 | } BWL_POST_PACKED_STRUCT; | ||
1188 | typedef struct brcm_ie brcm_ie_t; | ||
1189 | #define BRCM_IE_LEN 11 | ||
1190 | #define BRCM_IE_VER 2 | ||
1191 | #define BRCM_IE_LEGACY_AES_VER 1 | ||
1192 | |||
1193 | |||
1194 | #ifdef WLAFTERBURNER | ||
1195 | #define BRF_ABCAP 0x1 | ||
1196 | #define BRF_ABRQRD 0x2 | ||
1197 | #define BRF_ABCOUNTER_MASK 0xf0 | ||
1198 | #define BRF_ABCOUNTER_SHIFT 4 | ||
1199 | #endif | ||
1200 | #define BRF_LZWDS 0x4 | ||
1201 | #define BRF_BLOCKACK 0x8 | ||
1202 | |||
1203 | |||
1204 | #define BRF1_AMSDU 0x1 | ||
1205 | #define BRF1_WMEPS 0x4 | ||
1206 | #define BRF1_PSOFIX 0x8 | ||
1207 | |||
1208 | #ifdef WLAFTERBURNER | ||
1209 | #define AB_WDS_TIMEOUT_MAX 15 | ||
1210 | #define AB_WDS_TIMEOUT_MIN 1 | ||
1211 | #endif | ||
1212 | |||
1213 | #define AB_GUARDCOUNT 10 | ||
1214 | |||
1215 | #define MCSSET_LEN 16 | ||
1216 | #define MAX_MCS_NUM (128) | ||
1217 | |||
1218 | BWL_PRE_PACKED_STRUCT struct ht_cap_ie { | ||
1219 | uint16 cap; | ||
1220 | uint8 params; | ||
1221 | uint8 supp_mcs[MCSSET_LEN]; | ||
1222 | uint16 ext_htcap; | ||
1223 | uint32 txbf_cap; | ||
1224 | uint8 as_cap; | ||
1225 | } BWL_POST_PACKED_STRUCT; | ||
1226 | typedef struct ht_cap_ie ht_cap_ie_t; | ||
1227 | |||
1228 | |||
1229 | |||
1230 | BWL_PRE_PACKED_STRUCT struct ht_prop_cap_ie { | ||
1231 | uint8 id; | ||
1232 | uint8 len; | ||
1233 | uint8 oui[3]; | ||
1234 | uint8 type; | ||
1235 | ht_cap_ie_t cap_ie; | ||
1236 | } BWL_POST_PACKED_STRUCT; | ||
1237 | typedef struct ht_prop_cap_ie ht_prop_cap_ie_t; | ||
1238 | #define HT_PROP_IE_OVERHEAD 4 | ||
1239 | #define HT_CAP_IE_LEN 26 | ||
1240 | #define HT_CAP_IE_TYPE 51 | ||
1241 | |||
1242 | #define HT_CAP_LDPC_CODING 0x0001 | ||
1243 | #define HT_CAP_40MHZ 0x0002 | ||
1244 | #define HT_CAP_MIMO_PS_MASK 0x000C | ||
1245 | #define HT_CAP_MIMO_PS_SHIFT 0x0002 | ||
1246 | #define HT_CAP_MIMO_PS_OFF 0x0003 | ||
1247 | #define HT_CAP_MIMO_PS_RTS 0x0001 | ||
1248 | #define HT_CAP_MIMO_PS_ON 0x0000 | ||
1249 | #define HT_CAP_GF 0x0010 | ||
1250 | #define HT_CAP_SHORT_GI_20 0x0020 | ||
1251 | #define HT_CAP_SHORT_GI_40 0x0040 | ||
1252 | #define HT_CAP_TX_STBC 0x0080 | ||
1253 | #define HT_CAP_RX_STBC_MASK 0x0300 | ||
1254 | #define HT_CAP_RX_STBC_SHIFT 8 | ||
1255 | #define HT_CAP_DELAYED_BA 0x0400 | ||
1256 | #define HT_CAP_MAX_AMSDU 0x0800 | ||
1257 | #define HT_CAP_DSSS_CCK 0x1000 | ||
1258 | #define HT_CAP_PSMP 0x2000 | ||
1259 | #define HT_CAP_40MHZ_INTOLERANT 0x4000 | ||
1260 | #define HT_CAP_LSIG_TXOP 0x8000 | ||
1261 | |||
1262 | #define HT_CAP_RX_STBC_NO 0x0 | ||
1263 | #define HT_CAP_RX_STBC_ONE_STREAM 0x1 | ||
1264 | #define HT_CAP_RX_STBC_TWO_STREAM 0x2 | ||
1265 | #define HT_CAP_RX_STBC_THREE_STREAM 0x3 | ||
1266 | |||
1267 | #define HT_MAX_AMSDU 7935 | ||
1268 | #define HT_MIN_AMSDU 3835 | ||
1269 | |||
1270 | #define HT_PARAMS_RX_FACTOR_MASK 0x03 | ||
1271 | #define HT_PARAMS_DENSITY_MASK 0x1C | ||
1272 | #define HT_PARAMS_DENSITY_SHIFT 2 | ||
1273 | |||
1274 | |||
1275 | #define AMPDU_MAX_MPDU_DENSITY 7 | ||
1276 | #define AMPDU_RX_FACTOR_64K 3 | ||
1277 | #define AMPDU_RX_FACTOR_BASE 8*1024 | ||
1278 | #define AMPDU_DELIMITER_LEN 4 | ||
1279 | |||
1280 | #define HT_CAP_EXT_PCO 0x0001 | ||
1281 | #define HT_CAP_EXT_PCO_TTIME_MASK 0x0006 | ||
1282 | #define HT_CAP_EXT_PCO_TTIME_SHIFT 1 | ||
1283 | #define HT_CAP_EXT_MCS_FEEDBACK_MASK 0x0300 | ||
1284 | #define HT_CAP_EXT_MCS_FEEDBACK_SHIFT 8 | ||
1285 | #define HT_CAP_EXT_HTC 0x0400 | ||
1286 | #define HT_CAP_EXT_RD_RESP 0x0800 | ||
1287 | |||
1288 | BWL_PRE_PACKED_STRUCT struct ht_add_ie { | ||
1289 | uint8 ctl_ch; | ||
1290 | uint8 byte1; | ||
1291 | uint16 opmode; | ||
1292 | uint16 misc_bits; | ||
1293 | uint8 basic_mcs[MCSSET_LEN]; | ||
1294 | } BWL_POST_PACKED_STRUCT; | ||
1295 | typedef struct ht_add_ie ht_add_ie_t; | ||
1296 | |||
1297 | |||
1298 | |||
1299 | BWL_PRE_PACKED_STRUCT struct ht_prop_add_ie { | ||
1300 | uint8 id; | ||
1301 | uint8 len; | ||
1302 | uint8 oui[3]; | ||
1303 | uint8 type; | ||
1304 | ht_add_ie_t add_ie; | ||
1305 | } BWL_POST_PACKED_STRUCT; | ||
1306 | typedef struct ht_prop_add_ie ht_prop_add_ie_t; | ||
1307 | |||
1308 | #define HT_ADD_IE_LEN 22 | ||
1309 | #define HT_ADD_IE_TYPE 52 | ||
1310 | |||
1311 | |||
1312 | #define HT_BW_ANY 0x04 | ||
1313 | #define HT_RIFS_PERMITTED 0x08 | ||
1314 | |||
1315 | |||
1316 | #define HT_OPMODE_MASK 0x0003 | ||
1317 | #define HT_OPMODE_SHIFT 0 | ||
1318 | #define HT_OPMODE_PURE 0x0000 | ||
1319 | #define HT_OPMODE_OPTIONAL 0x0001 | ||
1320 | #define HT_OPMODE_HT20IN40 0x0002 | ||
1321 | #define HT_OPMODE_MIXED 0x0003 | ||
1322 | #define HT_OPMODE_NONGF 0x0004 | ||
1323 | #define DOT11N_TXBURST 0x0008 | ||
1324 | #define DOT11N_OBSS_NONHT 0x0010 | ||
1325 | |||
1326 | |||
1327 | #define HT_BASIC_STBC_MCS 0x007f | ||
1328 | #define HT_DUAL_STBC_PROT 0x0080 | ||
1329 | #define HT_SECOND_BCN 0x0100 | ||
1330 | #define HT_LSIG_TXOP 0x0200 | ||
1331 | #define HT_PCO_ACTIVE 0x0400 | ||
1332 | #define HT_PCO_PHASE 0x0800 | ||
1333 | #define HT_DUALCTS_PROTECTION 0x0080 | ||
1334 | |||
1335 | |||
1336 | #define DOT11N_2G_TXBURST_LIMIT 6160 | ||
1337 | #define DOT11N_5G_TXBURST_LIMIT 3080 | ||
1338 | |||
1339 | |||
1340 | #define GET_HT_OPMODE(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_MASK) \ | ||
1341 | >> HT_OPMODE_SHIFT) | ||
1342 | #define HT_MIXEDMODE_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_MASK) \ | ||
1343 | == HT_OPMODE_MIXED) | ||
1344 | #define HT_HT20_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_MASK) \ | ||
1345 | == HT_OPMODE_HT20IN40) | ||
1346 | #define HT_OPTIONAL_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_MASK) \ | ||
1347 | == HT_OPMODE_OPTIONAL) | ||
1348 | #define HT_USE_PROTECTION(add_ie) (HT_HT20_PRESENT((add_ie)) || \ | ||
1349 | HT_MIXEDMODE_PRESENT((add_ie))) | ||
1350 | #define HT_NONGF_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_NONGF) \ | ||
1351 | == HT_OPMODE_NONGF) | ||
1352 | #define DOT11N_TXBURST_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & DOT11N_TXBURST) \ | ||
1353 | == DOT11N_TXBURST) | ||
1354 | #define DOT11N_OBSS_NONHT_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & DOT11N_OBSS_NONHT) \ | ||
1355 | == DOT11N_OBSS_NONHT) | ||
1356 | |||
1357 | BWL_PRE_PACKED_STRUCT struct obss_params { | ||
1358 | uint16 passive_dwell; | ||
1359 | uint16 active_dwell; | ||
1360 | uint16 bss_widthscan_interval; | ||
1361 | uint16 passive_total; | ||
1362 | uint16 active_total; | ||
1363 | uint16 chanwidth_transition_dly; | ||
1364 | uint16 activity_threshold; | ||
1365 | } BWL_POST_PACKED_STRUCT; | ||
1366 | typedef struct obss_params obss_params_t; | ||
1367 | |||
1368 | BWL_PRE_PACKED_STRUCT struct dot11_obss_ie { | ||
1369 | uint8 id; | ||
1370 | uint8 len; | ||
1371 | obss_params_t obss_params; | ||
1372 | } BWL_POST_PACKED_STRUCT; | ||
1373 | typedef struct dot11_obss_ie dot11_obss_ie_t; | ||
1374 | #define DOT11_OBSS_SCAN_IE_LEN sizeof(obss_params_t) | ||
1375 | |||
1376 | |||
1377 | BWL_PRE_PACKED_STRUCT struct vndr_ie { | ||
1378 | uchar id; | ||
1379 | uchar len; | ||
1380 | uchar oui [3]; | ||
1381 | uchar data [1]; | ||
1382 | } BWL_POST_PACKED_STRUCT; | ||
1383 | typedef struct vndr_ie vndr_ie_t; | ||
1384 | |||
1385 | #define VNDR_IE_HDR_LEN 2 | ||
1386 | #define VNDR_IE_MIN_LEN 3 | ||
1387 | #define VNDR_IE_MAX_LEN 256 | ||
1388 | |||
1389 | |||
1390 | #define WPA_VERSION 1 | ||
1391 | #define WPA_OUI "\x00\x50\xF2" | ||
1392 | |||
1393 | #define WPA2_VERSION 1 | ||
1394 | #define WPA2_VERSION_LEN 2 | ||
1395 | #define WPA2_OUI "\x00\x0F\xAC" | ||
1396 | |||
1397 | #define WPA_OUI_LEN 3 | ||
1398 | |||
1399 | |||
1400 | #define RSN_AKM_NONE 0 | ||
1401 | #define RSN_AKM_UNSPECIFIED 1 | ||
1402 | #define RSN_AKM_PSK 2 | ||
1403 | |||
1404 | |||
1405 | #define DOT11_MAX_DEFAULT_KEYS 4 | ||
1406 | #define DOT11_MAX_KEY_SIZE 32 | ||
1407 | #define DOT11_MAX_IV_SIZE 16 | ||
1408 | #define DOT11_EXT_IV_FLAG (1<<5) | ||
1409 | #define DOT11_WPA_KEY_RSC_LEN 8 | ||
1410 | |||
1411 | #define WEP1_KEY_SIZE 5 | ||
1412 | #define WEP1_KEY_HEX_SIZE 10 | ||
1413 | #define WEP128_KEY_SIZE 13 | ||
1414 | #define WEP128_KEY_HEX_SIZE 26 | ||
1415 | #define TKIP_MIC_SIZE 8 | ||
1416 | #define TKIP_EOM_SIZE 7 | ||
1417 | #define TKIP_EOM_FLAG 0x5a | ||
1418 | #define TKIP_KEY_SIZE 32 | ||
1419 | #define TKIP_MIC_AUTH_TX 16 | ||
1420 | #define TKIP_MIC_AUTH_RX 24 | ||
1421 | #define TKIP_MIC_SUP_RX TKIP_MIC_AUTH_TX | ||
1422 | #define TKIP_MIC_SUP_TX TKIP_MIC_AUTH_RX | ||
1423 | #define AES_KEY_SIZE 16 | ||
1424 | #define AES_MIC_SIZE 8 | ||
1425 | |||
1426 | #define SMS4_KEY_LEN 16 | ||
1427 | #define SMS4_WPI_CBC_MAC_LEN 16 | ||
1428 | |||
1429 | |||
1430 | #include <packed_section_end.h> | ||
1431 | |||
1432 | |||
1433 | #endif | ||