2
* Copyright 2008, Broadcom Corporation
2
* Copyright (C) 2010, Broadcom Corporation
3
3
* All Rights Reserved.
5
* Unless you and Broadcom execute a separate written software license
6
* agreement governing use of this software, this software is licensed to you
7
* under the terms of the GNU General Public License version 2, available at
8
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html (the "GPL"), with the
9
* following added to such license:
10
* As a special exception, the copyright holders of this software give you
11
* permission to link this software with independent modules, regardless of the
12
* license terms of these independent modules, and to copy and distribute the
13
* resulting executable under terms of your choice, provided that you also meet,
14
* for each linked independent module, the terms and conditions of the license
15
* of that module. An independent module is a module which is not derived from
18
5
* THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
19
6
* KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
20
7
* SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
107
89
struct ether_addr a3;
109
91
struct ether_addr a4;
92
} BWL_POST_PACKED_STRUCT;
112
struct dot11_rts_frame {
94
BWL_PRE_PACKED_STRUCT struct dot11_rts_frame {
115
97
struct ether_addr ra;
116
98
struct ether_addr ta;
99
} BWL_POST_PACKED_STRUCT;
118
100
#define DOT11_RTS_LEN 16
120
struct dot11_cts_frame {
102
BWL_PRE_PACKED_STRUCT struct dot11_cts_frame {
123
105
struct ether_addr ra;
106
} BWL_POST_PACKED_STRUCT;
125
107
#define DOT11_CTS_LEN 10
127
struct dot11_ack_frame {
109
BWL_PRE_PACKED_STRUCT struct dot11_ack_frame {
130
112
struct ether_addr ra;
113
} BWL_POST_PACKED_STRUCT;
132
114
#define DOT11_ACK_LEN 10
134
struct dot11_ps_poll_frame {
116
BWL_PRE_PACKED_STRUCT struct dot11_ps_poll_frame {
137
119
struct ether_addr bssid;
138
120
struct ether_addr ta;
121
} BWL_POST_PACKED_STRUCT;
140
122
#define DOT11_PS_POLL_LEN 16
142
struct dot11_cf_end_frame {
124
BWL_PRE_PACKED_STRUCT struct dot11_cf_end_frame {
145
127
struct ether_addr ra;
146
128
struct ether_addr bssid;
129
} BWL_POST_PACKED_STRUCT;
148
130
#define DOT11_CS_END_LEN 16
132
BWL_PRE_PACKED_STRUCT struct dot11_action_wifi_vendor_specific {
138
struct dot11_action_wifi_vendor_specific* next_node;
139
} BWL_POST_PACKED_STRUCT;
141
typedef struct dot11_action_wifi_vendor_specific dot11_action_wifi_vendor_specific_t;
150
143
#define DOT11_BA_CTL_POLICY_NORMAL 0x0000
151
144
#define DOT11_BA_CTL_POLICY_NOACK 0x0001
152
145
#define DOT11_BA_CTL_POLICY_MASK 0x0001
160
153
#define DOT11_BA_CTL_TID_MASK 0xF000
161
154
#define DOT11_BA_CTL_TID_SHIFT 12
163
struct dot11_ctl_header {
156
BWL_PRE_PACKED_STRUCT struct dot11_ctl_header {
166
159
struct ether_addr ra;
167
160
struct ether_addr ta;
161
} BWL_POST_PACKED_STRUCT;
169
162
#define DOT11_CTL_HDR_LEN 16
164
BWL_PRE_PACKED_STRUCT struct dot11_bar {
172
165
uint16 bar_control;
167
} BWL_POST_PACKED_STRUCT;
175
168
#define DOT11_BAR_LEN 4
177
170
#define DOT11_BA_BITMAP_LEN 128
178
171
#define DOT11_BA_CMP_BITMAP_LEN 8
173
BWL_PRE_PACKED_STRUCT struct dot11_ba {
181
174
uint16 ba_control;
183
176
uint8 bitmap[DOT11_BA_BITMAP_LEN];
177
} BWL_POST_PACKED_STRUCT;
185
178
#define DOT11_BA_LEN 4
187
struct dot11_management_header {
180
BWL_PRE_PACKED_STRUCT struct dot11_management_header {
190
183
struct ether_addr da;
191
184
struct ether_addr sa;
192
185
struct ether_addr bssid;
187
} BWL_POST_PACKED_STRUCT;
195
188
#define DOT11_MGMT_HDR_LEN 24
197
struct dot11_bcn_prb {
190
BWL_PRE_PACKED_STRUCT struct dot11_bcn_prb {
198
191
uint32 timestamp[2];
199
192
uint16 beacon_interval;
200
193
uint16 capability;
194
} BWL_POST_PACKED_STRUCT;
202
195
#define DOT11_BCN_PRB_LEN 12
196
#define DOT11_BCN_PRB_FIXED_LEN 12
198
BWL_PRE_PACKED_STRUCT struct dot11_auth {
202
} BWL_POST_PACKED_STRUCT;
209
203
#define DOT11_AUTH_FIXED_LEN 6
211
struct dot11_assoc_req {
205
BWL_PRE_PACKED_STRUCT struct dot11_assoc_req {
212
206
uint16 capability;
208
} BWL_POST_PACKED_STRUCT;
215
209
#define DOT11_ASSOC_REQ_FIXED_LEN 4
217
struct dot11_reassoc_req {
211
BWL_PRE_PACKED_STRUCT struct dot11_reassoc_req {
218
212
uint16 capability;
220
214
struct ether_addr ap;
215
} BWL_POST_PACKED_STRUCT;
222
216
#define DOT11_REASSOC_REQ_FIXED_LEN 10
224
struct dot11_assoc_resp {
218
BWL_PRE_PACKED_STRUCT struct dot11_assoc_resp {
225
219
uint16 capability;
222
} BWL_POST_PACKED_STRUCT;
223
#define DOT11_ASSOC_RESP_FIXED_LEN 6
230
struct dot11_action_measure {
225
BWL_PRE_PACKED_STRUCT struct dot11_action_measure {
230
} BWL_POST_PACKED_STRUCT;
236
231
#define DOT11_ACTION_MEASURE_LEN 3
238
struct dot11_action_ht_ch_width {
233
BWL_PRE_PACKED_STRUCT struct dot11_action_ht_ch_width {
237
} BWL_POST_PACKED_STRUCT;
244
struct dot11_action_ht_mimops {
239
BWL_PRE_PACKED_STRUCT struct dot11_action_ht_mimops {
243
} BWL_POST_PACKED_STRUCT;
250
245
#define SM_PWRSAVE_ENABLE 1
251
246
#define SM_PWRSAVE_MODE 2
253
struct dot11_power_cnst {
248
BWL_PRE_PACKED_STRUCT struct dot11_power_cnst {
252
} BWL_POST_PACKED_STRUCT;
258
253
typedef struct dot11_power_cnst dot11_power_cnst_t;
260
struct dot11_power_cap {
255
BWL_PRE_PACKED_STRUCT struct dot11_power_cap {
258
} BWL_POST_PACKED_STRUCT;
264
259
typedef struct dot11_power_cap dot11_power_cap_t;
266
struct dot11_tpc_rep {
261
BWL_PRE_PACKED_STRUCT struct dot11_tpc_rep {
266
} BWL_POST_PACKED_STRUCT;
272
267
typedef struct dot11_tpc_rep dot11_tpc_rep_t;
273
268
#define DOT11_MNG_IE_TPC_REPORT_LEN 2
275
struct dot11_supp_channels {
270
BWL_PRE_PACKED_STRUCT struct dot11_supp_channels {
278
273
uint8 first_channel;
279
274
uint8 num_channels;
275
} BWL_POST_PACKED_STRUCT;
281
276
typedef struct dot11_supp_channels dot11_supp_channels_t;
278
BWL_PRE_PACKED_STRUCT struct dot11_extch {
282
} BWL_POST_PACKED_STRUCT;
288
283
typedef struct dot11_extch dot11_extch_ie_t;
290
struct dot11_brcm_extch {
285
BWL_PRE_PACKED_STRUCT struct dot11_brcm_extch {
291
} BWL_POST_PACKED_STRUCT;
297
292
typedef struct dot11_brcm_extch dot11_brcm_extch_ie_t;
299
294
#define BRCM_EXTCH_IE_LEN 5
304
299
#define DOT11_EXT_CH_LOWER 0x03
305
300
#define DOT11_EXT_CH_NONE 0x00
307
struct dot11_action_frmhdr {
302
BWL_PRE_PACKED_STRUCT struct dot11_action_frmhdr {
306
} BWL_POST_PACKED_STRUCT;
312
307
#define DOT11_ACTION_FRMHDR_LEN 2
314
struct dot11_channel_switch {
309
BWL_PRE_PACKED_STRUCT struct dot11_channel_switch {
315
} BWL_POST_PACKED_STRUCT;
321
316
typedef struct dot11_channel_switch dot11_chan_switch_ie_t;
323
318
#define DOT11_SWITCH_IE_LEN 3
325
320
#define DOT11_CSA_MODE_ADVISORY 0
326
321
#define DOT11_CSA_MODE_NO_TX 1
328
struct dot11_action_switch_channel {
323
BWL_PRE_PACKED_STRUCT struct dot11_action_switch_channel {
331
326
dot11_chan_switch_ie_t chan_switch_ie;
332
327
dot11_brcm_extch_ie_t extch_ie;
328
} BWL_POST_PACKED_STRUCT;
335
struct dot11_ext_csa {
330
BWL_PRE_PACKED_STRUCT struct dot11_csa_body {
335
} BWL_POST_PACKED_STRUCT;
337
BWL_PRE_PACKED_STRUCT struct dot11_ext_csa {
340
struct dot11_csa_body b;
341
} BWL_POST_PACKED_STRUCT;
343
342
typedef struct dot11_ext_csa dot11_ext_csa_ie_t;
344
343
#define DOT11_EXT_CSA_IE_LEN 4
346
struct dot11_action_ext_csa {
345
BWL_PRE_PACKED_STRUCT struct dot11_action_ext_csa {
349
348
dot11_ext_csa_ie_t chan_switch_ie;
352
struct dot11_obss_coex {
349
} BWL_POST_PACKED_STRUCT;
351
BWL_PRE_PACKED_STRUCT struct dot11y_action_ext_csa {
354
struct dot11_csa_body b;
355
} BWL_POST_PACKED_STRUCT;
357
BWL_PRE_PACKED_STRUCT struct dot11_obss_coex {
361
} BWL_POST_PACKED_STRUCT;
357
362
typedef struct dot11_obss_coex dot11_obss_coex_t;
358
363
#define DOT11_OBSS_COEXINFO_LEN 1
361
366
#define DOT11_OBSS_COEX_40MHZ_INTOLERANT 0x02
362
367
#define DOT11_OBSS_COEX_20MHZ_WIDTH_REQ 0x04
364
struct dot11_obss_chanlist {
369
BWL_PRE_PACKED_STRUCT struct dot11_obss_chanlist {
368
373
uint8 chanlist[1];
374
} BWL_POST_PACKED_STRUCT;
370
375
typedef struct dot11_obss_chanlist dot11_obss_chanlist_t;
371
376
#define DOT11_OBSS_CHANLIST_FIXED_LEN 1
373
struct dot11_extcap_ie {
378
BWL_PRE_PACKED_STRUCT struct dot11_extcap_ie {
382
} BWL_POST_PACKED_STRUCT;
378
383
typedef struct dot11_extcap_ie dot11_extcap_ie_t;
379
384
#define DOT11_EXTCAP_LEN 1
381
386
#define DOT11_MEASURE_TYPE_BASIC 0
382
387
#define DOT11_MEASURE_TYPE_CCA 1
383
388
#define DOT11_MEASURE_TYPE_RPI 2
389
#define DOT11_MEASURE_TYPE_CHLOAD 3
390
#define DOT11_MEASURE_TYPE_NOISE 4
391
#define DOT11_MEASURE_TYPE_BEACON 5
392
#define DOT11_MEASURE_TYPE_FRAME 6
393
#define DOT11_MEASURE_TYPE_STATS 7
394
#define DOT11_MEASURE_TYPE_LCI 8
395
#define DOT11_MEASURE_TYPE_TXSTREAM 9
396
#define DOT11_MEASURE_TYPE_PAUSE 255
398
#define DOT11_MEASURE_MODE_PARALLEL (1<<0)
385
399
#define DOT11_MEASURE_MODE_ENABLE (1<<1)
386
400
#define DOT11_MEASURE_MODE_REQUEST (1<<2)
387
401
#define DOT11_MEASURE_MODE_REPORT (1<<3)
402
#define DOT11_MEASURE_MODE_DUR (1<<4)
389
404
#define DOT11_MEASURE_MODE_LATE (1<<0)
390
405
#define DOT11_MEASURE_MODE_INCAPABLE (1<<1)
406
421
uint8 start_time[8];
423
} BWL_POST_PACKED_STRUCT;
409
424
typedef struct dot11_meas_req dot11_meas_req_t;
410
425
#define DOT11_MNG_IE_MREQ_LEN 14
412
427
#define DOT11_MNG_IE_MREQ_FIXED_LEN 3
414
struct dot11_meas_rep {
429
BWL_PRE_PACKED_STRUCT struct dot11_meas_rep {
435
BWL_PRE_PACKED_STRUCT union
437
BWL_PRE_PACKED_STRUCT struct {
424
439
uint8 start_time[8];
442
} BWL_POST_PACKED_STRUCT basic;
444
} BWL_POST_PACKED_STRUCT rep;
445
} BWL_POST_PACKED_STRUCT;
431
446
typedef struct dot11_meas_rep dot11_meas_rep_t;
433
448
#define DOT11_MNG_IE_MREP_FIXED_LEN 3
435
struct dot11_meas_rep_basic {
450
BWL_PRE_PACKED_STRUCT struct dot11_meas_rep_basic {
437
452
uint8 start_time[8];
455
} BWL_POST_PACKED_STRUCT;
441
456
typedef struct dot11_meas_rep_basic dot11_meas_rep_basic_t;
442
457
#define DOT11_MEASURE_BASIC_REP_LEN 12
459
BWL_PRE_PACKED_STRUCT struct dot11_quiet {
466
} BWL_POST_PACKED_STRUCT;
452
467
typedef struct dot11_quiet dot11_quiet_t;
454
struct chan_map_tuple {
469
BWL_PRE_PACKED_STRUCT struct chan_map_tuple {
472
} BWL_POST_PACKED_STRUCT;
458
473
typedef struct chan_map_tuple chan_map_tuple_t;
460
struct dot11_ibss_dfs {
475
BWL_PRE_PACKED_STRUCT struct dot11_ibss_dfs {
463
478
uint8 eaddr[ETHER_ADDR_LEN];
465
480
chan_map_tuple_t map[1];
481
} BWL_POST_PACKED_STRUCT;
467
482
typedef struct dot11_ibss_dfs dot11_ibss_dfs_t;
469
484
#define WME_OUI "\x00\x50\xf2"
581
596
#define EDCF_AC_VO_ECW_AP 0x32
582
597
#define EDCF_AC_VO_TXOP_AP 0x002f
584
struct dot11_qbss_load_ie {
599
BWL_PRE_PACKED_STRUCT struct edca_param_ie {
602
edcf_acparam_t acparam[AC_COUNT];
603
} BWL_POST_PACKED_STRUCT;
604
typedef struct edca_param_ie edca_param_ie_t;
605
#define EDCA_PARAM_IE_LEN 18
607
BWL_PRE_PACKED_STRUCT struct qos_cap_ie {
609
} BWL_POST_PACKED_STRUCT;
610
typedef struct qos_cap_ie qos_cap_ie_t;
612
BWL_PRE_PACKED_STRUCT struct dot11_qbss_load_ie {
587
615
uint16 station_count;
588
616
uint8 channel_utilization;
618
} BWL_POST_PACKED_STRUCT;
591
619
typedef struct dot11_qbss_load_ie dot11_qbss_load_ie_t;
593
621
#define FIXED_MSDU_SIZE 0x8000
855
884
#define DOT11_MNG_ERP_ID 42
856
885
#define DOT11_MNG_TS_DELAY_ID 43
857
886
#define DOT11_MNG_HT_CAP 45
887
#define DOT11_MNG_QOS_CAP_ID 46
858
888
#define DOT11_MNG_NONERP_ID 47
859
889
#define DOT11_MNG_RSN_ID 48
860
890
#define DOT11_MNG_EXT_RATES_ID 50
891
#define DOT11_MNG_AP_CHREP_ID 51
892
#define DOT11_MNG_NBR_REP_ID 52
861
893
#define DOT11_MNG_REGCLASS_ID 59
862
894
#define DOT11_MNG_EXT_CSA_ID 60
863
895
#define DOT11_MNG_HT_ADD 61
864
896
#define DOT11_MNG_EXT_CHANNEL_OFFSET 62
899
#define DOT11_MNG_WAPI_ID 68
902
#define DOT11_MNG_RRM_CAP_ID 70
865
903
#define DOT11_MNG_HT_BSS_COEXINFO_ID 72
866
904
#define DOT11_MNG_HT_BSS_CHANNEL_REPORT_ID 73
867
905
#define DOT11_MNG_HT_OBSS_ID 74
890
928
#define DOT11_CAP_AGILITY 0x0080
891
929
#define DOT11_CAP_SPECTRUM 0x0100
892
930
#define DOT11_CAP_SHORTSLOT 0x0400
931
#define DOT11_CAP_RM 0x1000
893
932
#define DOT11_CAP_CCK_OFDM 0x2000
895
934
#define DOT11_OBSS_COEX_MNG_SUPPORT 0x01
897
936
#define DOT11_ACTION_HDR_LEN 2
898
938
#define DOT11_ACTION_CAT_ERR_MASK 0x80
899
939
#define DOT11_ACTION_CAT_MASK 0x7F
900
940
#define DOT11_ACTION_CAT_SPECT_MNG 0
941
#define DOT11_ACTION_CAT_QOS 1
942
#define DOT11_ACTION_CAT_DLS 2
901
943
#define DOT11_ACTION_CAT_BLOCKACK 3
902
944
#define DOT11_ACTION_CAT_PUBLIC 4
945
#define DOT11_ACTION_CAT_RM 5
903
946
#define DOT11_ACTION_CAT_HT 7
947
#define DOT11_ACTION_CAT_VS 127
904
948
#define DOT11_ACTION_NOTIFICATION 0x11
906
#define DOT11_ACTION_ID_M_REQ 0
907
#define DOT11_ACTION_ID_M_REP 1
908
#define DOT11_ACTION_ID_TPC_REQ 2
909
#define DOT11_ACTION_ID_TPC_REP 3
910
#define DOT11_ACTION_ID_CHANNEL_SWITCH 4
911
#define DOT11_ACTION_ID_EXT_CSA 5
950
#define DOT11_SM_ACTION_M_REQ 0
951
#define DOT11_SM_ACTION_M_REP 1
952
#define DOT11_SM_ACTION_TPC_REQ 2
953
#define DOT11_SM_ACTION_TPC_REP 3
954
#define DOT11_SM_ACTION_CHANNEL_SWITCH 4
955
#define DOT11_SM_ACTION_EXT_CSA 5
913
957
#define DOT11_ACTION_ID_HT_CH_WIDTH 0
914
958
#define DOT11_ACTION_ID_HT_MIMO_PS 1
916
#define DOT11_ACTION_ID_BSS_COEX_MNG 0
960
#define DOT11_PUB_ACTION_BSS_COEX_MNG 0
961
#define DOT11_PUB_ACTION_CHANNEL_SWITCH 4
918
963
#define DOT11_BA_ACTION_ADDBA_REQ 0
919
964
#define DOT11_BA_ACTION_ADDBA_RESP 1
930
975
#define DOT11_ADDBA_POLICY_DELAYED 0
931
976
#define DOT11_ADDBA_POLICY_IMMEDIATE 1
933
struct dot11_addba_req {
978
BWL_PRE_PACKED_STRUCT struct dot11_addba_req {
937
982
uint16 addba_param_set;
939
984
uint16 start_seqnum;
985
} BWL_POST_PACKED_STRUCT;
941
986
typedef struct dot11_addba_req dot11_addba_req_t;
942
987
#define DOT11_ADDBA_REQ_LEN 9
944
struct dot11_addba_resp {
989
BWL_PRE_PACKED_STRUCT struct dot11_addba_resp {
949
994
uint16 addba_param_set;
996
} BWL_POST_PACKED_STRUCT;
952
997
typedef struct dot11_addba_resp dot11_addba_resp_t;
953
998
#define DOT11_ADDBA_RESP_LEN 9
957
1002
#define DOT11_DELBA_PARAM_TID_MASK 0xf000
958
1003
#define DOT11_DELBA_PARAM_TID_SHIFT 12
1005
BWL_PRE_PACKED_STRUCT struct dot11_delba {
963
1008
uint16 delba_param_set;
1010
} BWL_POST_PACKED_STRUCT;
966
1011
typedef struct dot11_delba dot11_delba_t;
967
1012
#define DOT11_DELBA_LEN 6
1014
#define DOT11_RRM_CAP_LEN 5
1015
BWL_PRE_PACKED_STRUCT struct dot11_rrm_cap_ie {
1016
uint8 cap[DOT11_RRM_CAP_LEN];
1017
} BWL_POST_PACKED_STRUCT;
1018
typedef struct dot11_rrm_cap_ie dot11_rrm_cap_ie_t;
1020
#define DOT11_RRM_CAP_LINK 0
1021
#define DOT11_RRM_CAP_NEIGHBOR_REPORT 1
1022
#define DOT11_RRM_CAP_PARALLEL 2
1023
#define DOT11_RRM_CAP_REPEATED 3
1024
#define DOT11_RRM_CAP_BCN_PASSIVE 4
1025
#define DOT11_RRM_CAP_BCN_ACTIVE 5
1026
#define DOT11_RRM_CAP_BCN_TABLE 6
1027
#define DOT11_RRM_CAP_BCN_REP_COND 7
1029
#define DOT11_RM_ACTION_RM_REQ 0
1030
#define DOT11_RM_ACTION_RM_REP 1
1031
#define DOT11_RM_ACTION_LM_REQ 2
1032
#define DOT11_RM_ACTION_LM_REP 3
1033
#define DOT11_RM_ACTION_NR_REQ 4
1034
#define DOT11_RM_ACTION_NR_REP 5
1036
BWL_PRE_PACKED_STRUCT struct dot11_rm_action {
1041
} BWL_POST_PACKED_STRUCT;
1042
typedef struct dot11_rm_action dot11_rm_action_t;
1043
#define DOT11_RM_ACTION_LEN 3
1045
BWL_PRE_PACKED_STRUCT struct dot11_rmreq {
1050
} BWL_POST_PACKED_STRUCT;
1051
typedef struct dot11_rmreq dot11_rmreq_t;
1052
#define DOT11_RMREQ_LEN 5
1054
BWL_PRE_PACKED_STRUCT struct dot11_rm_ie {
1060
} BWL_POST_PACKED_STRUCT;
1061
typedef struct dot11_rm_ie dot11_rm_ie_t;
1062
#define DOT11_RM_IE_LEN 5
1064
BWL_PRE_PACKED_STRUCT struct dot11_rmreq_bcn {
1075
struct ether_addr bssid;
1076
} BWL_POST_PACKED_STRUCT;
1077
typedef struct dot11_rmreq_bcn dot11_rmreq_bcn_t;
1078
#define DOT11_RMREQ_BCN_LEN 18
1080
BWL_PRE_PACKED_STRUCT struct dot11_rmrep_bcn {
1083
uint32 starttime[2];
1088
struct ether_addr bssid;
1091
} BWL_POST_PACKED_STRUCT;
1092
typedef struct dot11_rmrep_bcn dot11_rmrep_bcn_t;
1093
#define DOT11_RMREP_BCN_LEN 26
1095
#define DOT11_RMREQ_BCN_PASSIVE 0
1096
#define DOT11_RMREQ_BCN_ACTIVE 1
1097
#define DOT11_RMREQ_BCN_BCNTABLE 2
1099
#define DOT11_RMREQ_BCN_SSID_ID 0
1100
#define DOT11_RMREQ_BCN_REPINFO_ID 1
1101
#define DOT11_RMREQ_BCN_REPDET_ID 2
1102
#define DOT11_RMREQ_BCN_REQUEST_ID 10
1103
#define DOT11_RMREQ_BCN_APCHREP_ID 51
1105
#define DOT11_RMREP_BCN_FRM_BODY 1
1107
BWL_PRE_PACKED_STRUCT struct dot11_rmrep_nbr {
1108
struct ether_addr bssid;
1113
} BWL_POST_PACKED_STRUCT;
1114
typedef struct dot11_rmrep_nbr dot11_rmrep_nbr_t;
1115
#define DOT11_RMREP_NBR_LEN 13
969
1117
#define DOT11_BSSTYPE_INFRASTRUCTURE 0
970
1118
#define DOT11_BSSTYPE_INDEPENDENT 1
971
1119
#define DOT11_BSSTYPE_ANY 2
1048
1196
#define AB_GUARDCOUNT 10
1198
BWL_PRE_PACKED_STRUCT struct vndr_ie {
1203
} BWL_POST_PACKED_STRUCT;
1204
typedef struct vndr_ie vndr_ie_t;
1206
#define VNDR_IE_HDR_LEN 2
1207
#define VNDR_IE_MIN_LEN 3
1208
#define VNDR_IE_MAX_LEN 256
1050
1210
#define MCSSET_LEN 16
1051
1211
#define MAX_MCS_NUM (128)
1213
BWL_PRE_PACKED_STRUCT struct ht_cap_ie {
1056
1216
uint8 supp_mcs[MCSSET_LEN];
1057
1217
uint16 ext_htcap;
1058
1218
uint32 txbf_cap;
1220
} BWL_POST_PACKED_STRUCT;
1061
1221
typedef struct ht_cap_ie ht_cap_ie_t;
1063
struct ht_prop_cap_ie {
1223
BWL_PRE_PACKED_STRUCT struct ht_prop_cap_ie {
1068
1228
ht_cap_ie_t cap_ie;
1229
} BWL_POST_PACKED_STRUCT;
1070
1230
typedef struct ht_prop_cap_ie ht_prop_cap_ie_t;
1072
1232
#define HT_PROP_IE_OVERHEAD 4
1183
1343
uint16 active_total;
1184
1344
uint16 chanwidth_transition_dly;
1185
1345
uint16 activity_threshold;
1346
} BWL_POST_PACKED_STRUCT;
1187
1347
typedef struct obss_params obss_params_t;
1189
struct dot11_obss_ie {
1349
BWL_PRE_PACKED_STRUCT struct dot11_obss_ie {
1192
1352
obss_params_t obss_params;
1353
} BWL_POST_PACKED_STRUCT;
1194
1354
typedef struct dot11_obss_ie dot11_obss_ie_t;
1195
1355
#define DOT11_OBSS_SCAN_IE_LEN sizeof(obss_params_t)
1203
typedef struct vndr_ie vndr_ie_t;
1357
#define HT_CTRL_LA_TRQ 0x00000002
1358
#define HT_CTRL_LA_MAI 0x0000003C
1359
#define HT_CTRL_LA_MAI_SHIFT 2
1360
#define HT_CTRL_LA_MAI_MRQ 0x00000004
1361
#define HT_CTRL_LA_MAI_MSI 0x00000038
1362
#define HT_CTRL_LA_MFSI 0x000001C0
1363
#define HT_CTRL_LA_MFSI_SHIFT 6
1364
#define HT_CTRL_LA_MFB_ASELC 0x0000FE00
1365
#define HT_CTRL_LA_MFB_ASELC_SH 9
1366
#define HT_CTRL_LA_ASELC_CMD 0x00000C00
1367
#define HT_CTRL_LA_ASELC_DATA 0x0000F000
1368
#define HT_CTRL_CAL_POS 0x00030000
1369
#define HT_CTRL_CAL_SEQ 0x000C0000
1370
#define HT_CTRL_CSI_STEERING 0x00C00000
1371
#define HT_CTRL_CSI_STEER_SHIFT 22
1372
#define HT_CTRL_CSI_STEER_NFB 0
1373
#define HT_CTRL_CSI_STEER_CSI 1
1374
#define HT_CTRL_CSI_STEER_NCOM 2
1375
#define HT_CTRL_CSI_STEER_COM 3
1376
#define HT_CTRL_NDP_ANNOUNCE 0x01000000
1377
#define HT_CTRL_AC_CONSTRAINT 0x40000000
1378
#define HT_CTRL_RDG_MOREPPDU 0x80000000
1205
#define VNDR_IE_HDR_LEN 2
1206
#define VNDR_IE_MIN_LEN 3
1207
#define VNDR_IE_MAX_LEN 256
1380
#define HT_OPMODE_OPTIONAL 0x0001
1381
#define HT_OPMODE_HT20IN40 0x0002
1382
#define HT_OPMODE_MIXED 0x0003
1383
#define HT_OPMODE_NONGF 0x0004
1384
#define DOT11N_TXBURST 0x0008
1385
#define DOT11N_OBSS_NONHT 0x0010
1209
1387
#define WPA_VERSION 1
1210
1388
#define WPA_OUI "\x00\x50\xF2"