temp revert rk change
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / bcm4329 / include / wlioctl.h
1 /*
2  * Custom OID/ioctl definitions for
3  * Broadcom 802.11abg Networking Device Driver
4  *
5  * Definitions subject to change without notice.
6  *
7  * Copyright (C) 1999-2010, Broadcom Corporation
8  * 
9  *      Unless you and Broadcom execute a separate written software license
10  * agreement governing use of this software, this software is licensed to you
11  * under the terms of the GNU General Public License version 2 (the "GPL"),
12  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
13  * following added to such license:
14  * 
15  *      As a special exception, the copyright holders of this software give you
16  * permission to link this software with independent modules, and to copy and
17  * distribute the resulting executable under terms of your choice, provided that
18  * you also meet, for each linked independent module, the terms and conditions of
19  * the license of that module.  An independent module is a module which is not
20  * derived from this software.  The special exception does not apply to any
21  * modifications of the software.
22  * 
23  *      Notwithstanding the above, under no circumstances may you combine this
24  * software in any way with any other Broadcom software provided under a license
25  * other than the GPL, without Broadcom's express prior written consent.
26  *
27  * $Id: wlioctl.h,v 1.601.4.15.2.14.2.62.4.3 2011/02/09 23:31:02 Exp $
28  */
29
30
31 #ifndef _wlioctl_h_
32 #define _wlioctl_h_
33
34 #include <typedefs.h>
35 #include <proto/ethernet.h>
36 #include <proto/bcmeth.h>
37 #include <proto/bcmevent.h>
38 #include <proto/802.11.h>
39 #include <bcmwifi.h>
40
41
42
43 #define ACTION_FRAME_SIZE 1040
44
45 typedef struct wl_action_frame {
46         struct ether_addr       da;
47         uint16                          len;
48         uint32                          packetId;
49         uint8                           data[ACTION_FRAME_SIZE];
50 } wl_action_frame_t;
51
52 #define WL_WIFI_ACTION_FRAME_SIZE sizeof(struct wl_action_frame)
53
54
55 #define BWL_DEFAULT_PACKING
56 #include <packed_section_start.h>
57
58 #define RWL_ACTION_WIFI_CATEGORY        127  
59 #define RWL_WIFI_OUI_BYTE1              0x90 
60 #define RWL_WIFI_OUI_BYTE2              0x4C
61 #define RWL_WIFI_OUI_BYTE3              0x0F
62 #define RWL_WIFI_ACTION_FRAME_SIZE      sizeof(struct dot11_action_wifi_vendor_specific)
63 #define RWL_WIFI_DEFAULT                0x00
64 #define RWL_WIFI_FIND_MY_PEER           0x09 
65 #define RWL_WIFI_FOUND_PEER             0x0A 
66 #define RWL_ACTION_WIFI_FRAG_TYPE       0x55 
67
68 typedef struct ssid_info
69 {
70         uint8           ssid_len;               
71         uint8           ssid[32];               
72 } ssid_info_t;
73
74 typedef struct cnt_rx
75 {
76         uint32 cnt_rxundec;
77         uint32 cnt_rxframe;
78 } cnt_rx_t;
79
80
81
82 #define RWL_REF_MAC_ADDRESS_OFFSET      17
83 #define RWL_DUT_MAC_ADDRESS_OFFSET      23
84 #define RWL_WIFI_CLIENT_CHANNEL_OFFSET  50
85 #define RWL_WIFI_SERVER_CHANNEL_OFFSET  51
86
87
88
89
90
91 #define WL_BSS_INFO_VERSION     108             
92
93
94 typedef struct wl_bss_info {
95         uint32          version;                
96         uint32          length;                 
97         struct ether_addr BSSID;
98         uint16          beacon_period;          
99         uint16          capability;             
100         uint8           SSID_len;
101         uint8           SSID[32];
102         struct {
103                 uint    count;                  
104                 uint8   rates[16];              
105         } rateset;                              
106         chanspec_t      chanspec;               
107         uint16          atim_window;            
108         uint8           dtim_period;            
109         int16           RSSI;                   
110         int8            phy_noise;              
111
112         uint8           n_cap;                  
113         uint32          nbss_cap;               
114         uint8           ctl_ch;                 
115         uint32          reserved32[1];          
116         uint8           flags;                  
117         uint8           reserved[3];            
118         uint8           basic_mcs[MCSSET_LEN];  
119
120         uint16          ie_offset;              
121         uint32          ie_length;              
122         
123         
124 } wl_bss_info_t;
125
126 typedef struct wlc_ssid {
127         uint32          SSID_len;
128         uchar           SSID[32];
129 } wlc_ssid_t;
130
131
132 #define WL_BSSTYPE_INFRA 1
133 #define WL_BSSTYPE_INDEP 0
134 #define WL_BSSTYPE_ANY   2
135
136
137 #define WL_SCANFLAGS_PASSIVE 0x01
138 #define WL_SCANFLAGS_PROHIBITED 0x04
139
140 typedef struct wl_scan_params {
141         wlc_ssid_t ssid;                
142         struct ether_addr bssid;        
143         int8 bss_type;                  
144         int8 scan_type;         
145         int32 nprobes;                  
146         int32 active_time;              
147         int32 passive_time;             
148         int32 home_time;                
149         int32 channel_num;              
150         uint16 channel_list[1];         
151 } wl_scan_params_t;
152
153 #define WL_SCAN_PARAMS_FIXED_SIZE 64
154
155
156 #define WL_SCAN_PARAMS_COUNT_MASK 0x0000ffff
157 #define WL_SCAN_PARAMS_NSSID_SHIFT 16
158
159 #define WL_SCAN_ACTION_START      1
160 #define WL_SCAN_ACTION_CONTINUE   2
161 #define WL_SCAN_ACTION_ABORT      3
162
163 #define ISCAN_REQ_VERSION 1
164
165
166 typedef struct wl_iscan_params {
167         uint32 version;
168         uint16 action;
169         uint16 scan_duration;
170         wl_scan_params_t params;
171 } wl_iscan_params_t;
172
173 #define WL_ISCAN_PARAMS_FIXED_SIZE (OFFSETOF(wl_iscan_params_t, params) + sizeof(wlc_ssid_t))
174
175 typedef struct wl_scan_results {
176         uint32 buflen;
177         uint32 version;
178         uint32 count;
179         wl_bss_info_t bss_info[1];
180 } wl_scan_results_t;
181
182 #define WL_SCAN_RESULTS_FIXED_SIZE 12
183
184
185 #define WL_SCAN_RESULTS_SUCCESS 0
186 #define WL_SCAN_RESULTS_PARTIAL 1
187 #define WL_SCAN_RESULTS_PENDING 2
188 #define WL_SCAN_RESULTS_ABORTED 3
189 #define WL_SCAN_RESULTS_NO_MEM  4
190
191 #define ESCAN_REQ_VERSION 1
192
193 typedef struct wl_escan_params {
194         uint32 version;
195         uint16 action;
196         uint16 sync_id;
197         wl_scan_params_t params;
198 } wl_escan_params_t;
199
200 #define WL_ESCAN_PARAMS_FIXED_SIZE (OFFSETOF(wl_escan_params_t, params) + sizeof(wlc_ssid_t))
201
202 typedef struct wl_escan_result {
203         uint32 buflen;
204         uint32 version;
205         uint16 sync_id;
206         uint16 bss_count;
207         wl_bss_info_t bss_info[1];
208 } wl_escan_result_t;
209
210 #define WL_ESCAN_RESULTS_FIXED_SIZE (sizeof(wl_escan_result_t) - sizeof(wl_bss_info_t))
211
212
213 typedef struct wl_iscan_results {
214         uint32 status;
215         wl_scan_results_t results;
216 } wl_iscan_results_t;
217
218 #define WL_ISCAN_RESULTS_FIXED_SIZE \
219         (WL_SCAN_RESULTS_FIXED_SIZE + OFFSETOF(wl_iscan_results_t, results))
220
221 #define WL_NUMRATES             16      
222 typedef struct wl_rateset {
223         uint32  count;                  
224         uint8   rates[WL_NUMRATES];     
225 } wl_rateset_t;
226
227
228 typedef struct wl_uint32_list {
229         
230         uint32 count;
231         
232         uint32 element[1];
233 } wl_uint32_list_t;
234
235
236 typedef struct wl_assoc_params {
237         struct ether_addr bssid;        
238         uint16 bssid_cnt;               
239         int32 chanspec_num;             
240         chanspec_t chanspec_list[1];    
241 } wl_assoc_params_t;
242 #define WL_ASSOC_PARAMS_FIXED_SIZE      (sizeof(wl_assoc_params_t) - sizeof(chanspec_t))
243
244
245 typedef wl_assoc_params_t wl_reassoc_params_t;
246 #define WL_REASSOC_PARAMS_FIXED_SIZE    WL_ASSOC_PARAMS_FIXED_SIZE
247
248
249 typedef struct wl_join_params {
250         wlc_ssid_t ssid;
251         wl_assoc_params_t params;       
252 } wl_join_params_t;
253 #define WL_JOIN_PARAMS_FIXED_SIZE       (sizeof(wl_join_params_t) - sizeof(chanspec_t))
254
255 #define WLC_CNTRY_BUF_SZ        4               
256
257 typedef struct wl_country {
258         char country_abbrev[WLC_CNTRY_BUF_SZ];
259         int32 rev;
260         char ccode[WLC_CNTRY_BUF_SZ];
261 } wl_country_t;
262
263 typedef enum sup_auth_status {
264         
265         WLC_SUP_DISCONNECTED = 0,
266         WLC_SUP_CONNECTING,
267         WLC_SUP_IDREQUIRED,
268         WLC_SUP_AUTHENTICATING,
269         WLC_SUP_AUTHENTICATED,
270         WLC_SUP_KEYXCHANGE,
271         WLC_SUP_KEYED,
272         WLC_SUP_TIMEOUT,
273         WLC_SUP_LAST_BASIC_STATE,
274
275         
276         WLC_SUP_KEYXCHANGE_WAIT_M1 = WLC_SUP_AUTHENTICATED,
277                                         
278         WLC_SUP_KEYXCHANGE_PREP_M2 = WLC_SUP_KEYXCHANGE,
279                                         
280         WLC_SUP_KEYXCHANGE_WAIT_M3 = WLC_SUP_LAST_BASIC_STATE,
281                                         
282         WLC_SUP_KEYXCHANGE_PREP_M4,             
283         WLC_SUP_KEYXCHANGE_WAIT_G1,             
284         WLC_SUP_KEYXCHANGE_PREP_G2              
285 } sup_auth_status_t;
286
287
288 #define CRYPTO_ALGO_OFF                 0
289 #define CRYPTO_ALGO_WEP1                1
290 #define CRYPTO_ALGO_TKIP                2
291 #define CRYPTO_ALGO_WEP128              3
292 #define CRYPTO_ALGO_AES_CCM             4
293 #define CRYPTO_ALGO_AES_OCB_MSDU        5
294 #define CRYPTO_ALGO_AES_OCB_MPDU        6
295 #define CRYPTO_ALGO_NALG                7
296 #define CRYPTO_ALGO_SMS4                11
297
298 #define WSEC_GEN_MIC_ERROR      0x0001
299 #define WSEC_GEN_REPLAY         0x0002
300 #define WSEC_GEN_ICV_ERROR      0x0004
301
302 #define WL_SOFT_KEY     (1 << 0)        
303 #define WL_PRIMARY_KEY  (1 << 1)        
304 #define WL_KF_RES_4     (1 << 4)        
305 #define WL_KF_RES_5     (1 << 5)        
306 #define WL_IBSS_PEER_GROUP_KEY  (1 << 6)        
307
308 typedef struct wl_wsec_key {
309         uint32          index;          
310         uint32          len;            
311         uint8           data[DOT11_MAX_KEY_SIZE];       
312         uint32          pad_1[18];
313         uint32          algo;           
314         uint32          flags;          
315         uint32          pad_2[2];
316         int             pad_3;
317         int             iv_initialized; 
318         int             pad_4;
319         
320         struct {
321                 uint32  hi;             
322                 uint16  lo;             
323         } rxiv;
324         uint32          pad_5[2];
325         struct ether_addr ea;           
326 } wl_wsec_key_t;
327
328 #define WSEC_MIN_PSK_LEN        8
329 #define WSEC_MAX_PSK_LEN        64
330
331
332 #define WSEC_PASSPHRASE         (1<<0)
333
334
335 typedef struct {
336         ushort  key_len;                
337         ushort  flags;                  
338         uint8   key[WSEC_MAX_PSK_LEN];  
339 } wsec_pmk_t;
340
341
342 #define WEP_ENABLED             0x0001
343 #define TKIP_ENABLED            0x0002
344 #define AES_ENABLED             0x0004
345 #define WSEC_SWFLAG             0x0008
346 #define SES_OW_ENABLED          0x0040  
347 #define SMS4_ENABLED            0x0100
348
349
350 #define WPA_AUTH_DISABLED       0x0000  
351 #define WPA_AUTH_NONE           0x0001  
352 #define WPA_AUTH_UNSPECIFIED    0x0002  
353 #define WPA_AUTH_PSK            0x0004  
354         
355 #define WPA2_AUTH_UNSPECIFIED   0x0040  
356 #define WPA2_AUTH_PSK           0x0080  
357 #define BRCM_AUTH_PSK           0x0100  
358 #define BRCM_AUTH_DPT           0x0200  
359 #define WPA_AUTH_WAPI           0x0400  
360
361 #define WPA_AUTH_PFN_ANY        0xffffffff      
362
363
364 #define MAXPMKID                16
365
366 typedef struct _pmkid {
367         struct ether_addr       BSSID;
368         uint8                   PMKID[WPA2_PMKID_LEN];
369 } pmkid_t;
370
371 typedef struct _pmkid_list {
372         uint32  npmkid;
373         pmkid_t pmkid[1];
374 } pmkid_list_t;
375
376 typedef struct _pmkid_cand {
377         struct ether_addr       BSSID;
378         uint8                   preauth;
379 } pmkid_cand_t;
380
381 typedef struct _pmkid_cand_list {
382         uint32  npmkid_cand;
383         pmkid_cand_t    pmkid_cand[1];
384 } pmkid_cand_list_t;
385
386
387
388
389 typedef struct {
390         uint32  val;
391         struct ether_addr ea;
392 } scb_val_t;
393
394
395
396 typedef struct channel_info {
397         int hw_channel;
398         int target_channel;
399         int scan_channel;
400 } channel_info_t;
401
402
403 struct maclist {
404         uint count;                     
405         struct ether_addr ea[1];        
406 };
407
408
409 typedef struct get_pktcnt {
410         uint rx_good_pkt;
411         uint rx_bad_pkt;
412         uint tx_good_pkt;
413         uint tx_bad_pkt;
414         uint rx_ocast_good_pkt; 
415 } get_pktcnt_t;
416
417
418 typedef struct wl_ioctl {
419         uint cmd;       
420         void *buf;      
421         uint len;       
422         uint8 set;      
423         uint used;      
424         uint needed;    
425 } wl_ioctl_t;
426
427
428
429 #define WLC_IOCTL_MAGIC         0x14e46c77
430
431
432 #define WLC_IOCTL_VERSION       1
433
434 #define WLC_IOCTL_MAXLEN        8192    
435 #define WLC_IOCTL_SMLEN         256             
436 #define WLC_IOCTL_MEDLEN        1536    
437
438
439
440 #define WLC_GET_MAGIC                           0
441 #define WLC_GET_VERSION                         1
442 #define WLC_UP                                  2
443 #define WLC_DOWN                                3
444 #define WLC_GET_LOOP                            4
445 #define WLC_SET_LOOP                            5
446 #define WLC_DUMP                                6
447 #define WLC_GET_MSGLEVEL                        7
448 #define WLC_SET_MSGLEVEL                        8
449 #define WLC_GET_PROMISC                         9
450 #define WLC_SET_PROMISC                         10
451  
452 #define WLC_GET_RATE                            12
453  
454 #define WLC_GET_INSTANCE                        14
455  
456  
457  
458  
459 #define WLC_GET_INFRA                           19
460 #define WLC_SET_INFRA                           20
461 #define WLC_GET_AUTH                            21
462 #define WLC_SET_AUTH                            22
463 #define WLC_GET_BSSID                           23
464 #define WLC_SET_BSSID                           24
465 #define WLC_GET_SSID                            25
466 #define WLC_SET_SSID                            26
467 #define WLC_RESTART                             27
468  
469 #define WLC_GET_CHANNEL                         29
470 #define WLC_SET_CHANNEL                         30
471 #define WLC_GET_SRL                             31
472 #define WLC_SET_SRL                             32
473 #define WLC_GET_LRL                             33
474 #define WLC_SET_LRL                             34
475 #define WLC_GET_PLCPHDR                         35
476 #define WLC_SET_PLCPHDR                         36
477 #define WLC_GET_RADIO                           37
478 #define WLC_SET_RADIO                           38
479 #define WLC_GET_PHYTYPE                         39
480 #define WLC_DUMP_RATE                           40
481 #define WLC_SET_RATE_PARAMS                     41
482  
483  
484 #define WLC_GET_KEY                             44
485 #define WLC_SET_KEY                             45
486 #define WLC_GET_REGULATORY                      46
487 #define WLC_SET_REGULATORY                      47
488 #define WLC_GET_PASSIVE_SCAN                    48
489 #define WLC_SET_PASSIVE_SCAN                    49
490 #define WLC_SCAN                                50
491 #define WLC_SCAN_RESULTS                        51
492 #define WLC_DISASSOC                            52
493 #define WLC_REASSOC                             53
494 #define WLC_GET_ROAM_TRIGGER                    54
495 #define WLC_SET_ROAM_TRIGGER                    55
496 #define WLC_GET_ROAM_DELTA                      56
497 #define WLC_SET_ROAM_DELTA                      57
498 #define WLC_GET_ROAM_SCAN_PERIOD                58
499 #define WLC_SET_ROAM_SCAN_PERIOD                59
500 #define WLC_EVM                                 60      
501 #define WLC_GET_TXANT                           61
502 #define WLC_SET_TXANT                           62
503 #define WLC_GET_ANTDIV                          63
504 #define WLC_SET_ANTDIV                          64
505  
506  
507 #define WLC_GET_CLOSED                          67
508 #define WLC_SET_CLOSED                          68
509 #define WLC_GET_MACLIST                         69
510 #define WLC_SET_MACLIST                         70
511 #define WLC_GET_RATESET                         71
512 #define WLC_SET_RATESET                         72
513  
514 #define WLC_LONGTRAIN                           74
515 #define WLC_GET_BCNPRD                          75
516 #define WLC_SET_BCNPRD                          76
517 #define WLC_GET_DTIMPRD                         77
518 #define WLC_SET_DTIMPRD                         78
519 #define WLC_GET_SROM                            79
520 #define WLC_SET_SROM                            80
521 #define WLC_GET_WEP_RESTRICT                    81
522 #define WLC_SET_WEP_RESTRICT                    82
523 #define WLC_GET_COUNTRY                         83
524 #define WLC_SET_COUNTRY                         84
525 #define WLC_GET_PM                              85
526 #define WLC_SET_PM                              86
527 #define WLC_GET_WAKE                            87
528 #define WLC_SET_WAKE                            88
529  
530 #define WLC_GET_FORCELINK                       90      
531 #define WLC_SET_FORCELINK                       91      
532 #define WLC_FREQ_ACCURACY                       92      
533 #define WLC_CARRIER_SUPPRESS                    93      
534 #define WLC_GET_PHYREG                          94
535 #define WLC_SET_PHYREG                          95
536 #define WLC_GET_RADIOREG                        96
537 #define WLC_SET_RADIOREG                        97
538 #define WLC_GET_REVINFO                         98
539 #define WLC_GET_UCANTDIV                        99
540 #define WLC_SET_UCANTDIV                        100
541 #define WLC_R_REG                               101
542 #define WLC_W_REG                               102
543
544  
545 #define WLC_GET_MACMODE                         105
546 #define WLC_SET_MACMODE                         106
547 #define WLC_GET_MONITOR                         107
548 #define WLC_SET_MONITOR                         108
549 #define WLC_GET_GMODE                           109
550 #define WLC_SET_GMODE                           110
551 #define WLC_GET_LEGACY_ERP                      111
552 #define WLC_SET_LEGACY_ERP                      112
553 #define WLC_GET_RX_ANT                          113
554 #define WLC_GET_CURR_RATESET                    114     
555 #define WLC_GET_SCANSUPPRESS                    115
556 #define WLC_SET_SCANSUPPRESS                    116
557 #define WLC_GET_AP                              117
558 #define WLC_SET_AP                              118
559 #define WLC_GET_EAP_RESTRICT                    119
560 #define WLC_SET_EAP_RESTRICT                    120
561 #define WLC_SCB_AUTHORIZE                       121
562 #define WLC_SCB_DEAUTHORIZE                     122
563 #define WLC_GET_WDSLIST                         123
564 #define WLC_SET_WDSLIST                         124
565 #define WLC_GET_ATIM                            125
566 #define WLC_SET_ATIM                            126
567 #define WLC_GET_RSSI                            127
568 #define WLC_GET_PHYANTDIV                       128
569 #define WLC_SET_PHYANTDIV                       129
570 #define WLC_AP_RX_ONLY                          130
571 #define WLC_GET_TX_PATH_PWR                     131
572 #define WLC_SET_TX_PATH_PWR                     132
573 #define WLC_GET_WSEC                            133
574 #define WLC_SET_WSEC                            134
575 #define WLC_GET_PHY_NOISE                       135
576 #define WLC_GET_BSS_INFO                        136
577 #define WLC_GET_PKTCNTS                         137
578 #define WLC_GET_LAZYWDS                         138
579 #define WLC_SET_LAZYWDS                         139
580 #define WLC_GET_BANDLIST                        140
581 #define WLC_GET_BAND                            141
582 #define WLC_SET_BAND                            142
583 #define WLC_SCB_DEAUTHENTICATE                  143
584 #define WLC_GET_SHORTSLOT                       144
585 #define WLC_GET_SHORTSLOT_OVERRIDE              145
586 #define WLC_SET_SHORTSLOT_OVERRIDE              146
587 #define WLC_GET_SHORTSLOT_RESTRICT              147
588 #define WLC_SET_SHORTSLOT_RESTRICT              148
589 #define WLC_GET_GMODE_PROTECTION                149
590 #define WLC_GET_GMODE_PROTECTION_OVERRIDE       150
591 #define WLC_SET_GMODE_PROTECTION_OVERRIDE       151
592 #define WLC_UPGRADE                             152
593  
594  
595 #define WLC_GET_IGNORE_BCNS                     155
596 #define WLC_SET_IGNORE_BCNS                     156
597 #define WLC_GET_SCB_TIMEOUT                     157
598 #define WLC_SET_SCB_TIMEOUT                     158
599 #define WLC_GET_ASSOCLIST                       159
600 #define WLC_GET_CLK                             160
601 #define WLC_SET_CLK                             161
602 #define WLC_GET_UP                              162
603 #define WLC_OUT                                 163
604 #define WLC_GET_WPA_AUTH                        164
605 #define WLC_SET_WPA_AUTH                        165
606 #define WLC_GET_UCFLAGS                         166
607 #define WLC_SET_UCFLAGS                         167
608 #define WLC_GET_PWRIDX                          168
609 #define WLC_SET_PWRIDX                          169
610 #define WLC_GET_TSSI                            170
611 #define WLC_GET_SUP_RATESET_OVERRIDE            171
612 #define WLC_SET_SUP_RATESET_OVERRIDE            172
613  
614  
615  
616  
617  
618 #define WLC_GET_PROTECTION_CONTROL              178
619 #define WLC_SET_PROTECTION_CONTROL              179
620 #define WLC_GET_PHYLIST                         180
621 #define WLC_ENCRYPT_STRENGTH                    181     
622 #define WLC_DECRYPT_STATUS                      182     
623 #define WLC_GET_KEY_SEQ                         183
624 #define WLC_GET_SCAN_CHANNEL_TIME               184
625 #define WLC_SET_SCAN_CHANNEL_TIME               185
626 #define WLC_GET_SCAN_UNASSOC_TIME               186
627 #define WLC_SET_SCAN_UNASSOC_TIME               187
628 #define WLC_GET_SCAN_HOME_TIME                  188
629 #define WLC_SET_SCAN_HOME_TIME                  189
630 #define WLC_GET_SCAN_NPROBES                    190
631 #define WLC_SET_SCAN_NPROBES                    191
632 #define WLC_GET_PRB_RESP_TIMEOUT                192
633 #define WLC_SET_PRB_RESP_TIMEOUT                193
634 #define WLC_GET_ATTEN                           194
635 #define WLC_SET_ATTEN                           195
636 #define WLC_GET_SHMEM                           196     
637 #define WLC_SET_SHMEM                           197     
638  
639  
640 #define WLC_SET_WSEC_TEST                       200
641 #define WLC_SCB_DEAUTHENTICATE_FOR_REASON       201
642 #define WLC_TKIP_COUNTERMEASURES                202
643 #define WLC_GET_PIOMODE                         203
644 #define WLC_SET_PIOMODE                         204
645 #define WLC_SET_ASSOC_PREFER                    205
646 #define WLC_GET_ASSOC_PREFER                    206
647 #define WLC_SET_ROAM_PREFER                     207
648 #define WLC_GET_ROAM_PREFER                     208
649 #define WLC_SET_LED                             209
650 #define WLC_GET_LED                             210
651 #define WLC_GET_INTERFERENCE_MODE               211
652 #define WLC_SET_INTERFERENCE_MODE               212
653 #define WLC_GET_CHANNEL_QA                      213
654 #define WLC_START_CHANNEL_QA                    214
655 #define WLC_GET_CHANNEL_SEL                     215
656 #define WLC_START_CHANNEL_SEL                   216
657 #define WLC_GET_VALID_CHANNELS                  217
658 #define WLC_GET_FAKEFRAG                        218
659 #define WLC_SET_FAKEFRAG                        219
660 #define WLC_GET_PWROUT_PERCENTAGE               220
661 #define WLC_SET_PWROUT_PERCENTAGE               221
662 #define WLC_SET_BAD_FRAME_PREEMPT               222
663 #define WLC_GET_BAD_FRAME_PREEMPT               223
664 #define WLC_SET_LEAP_LIST                       224
665 #define WLC_GET_LEAP_LIST                       225
666 #define WLC_GET_CWMIN                           226
667 #define WLC_SET_CWMIN                           227
668 #define WLC_GET_CWMAX                           228
669 #define WLC_SET_CWMAX                           229
670 #define WLC_GET_WET                             230
671 #define WLC_SET_WET                             231
672 #define WLC_GET_PUB                             232
673  
674  
675 #define WLC_GET_KEY_PRIMARY                     235
676 #define WLC_SET_KEY_PRIMARY                     236
677  
678 #define WLC_GET_ACI_ARGS                        238
679 #define WLC_SET_ACI_ARGS                        239
680 #define WLC_UNSET_CALLBACK                      240
681 #define WLC_SET_CALLBACK                        241
682 #define WLC_GET_RADAR                           242
683 #define WLC_SET_RADAR                           243
684 #define WLC_SET_SPECT_MANAGMENT                 244
685 #define WLC_GET_SPECT_MANAGMENT                 245
686 #define WLC_WDS_GET_REMOTE_HWADDR               246     
687 #define WLC_WDS_GET_WPA_SUP                     247
688 #define WLC_SET_CS_SCAN_TIMER                   248
689 #define WLC_GET_CS_SCAN_TIMER                   249
690 #define WLC_MEASURE_REQUEST                     250
691 #define WLC_INIT                                251
692 #define WLC_SEND_QUIET                          252
693 #define WLC_KEEPALIVE                   253
694 #define WLC_SEND_PWR_CONSTRAINT                 254
695 #define WLC_UPGRADE_STATUS                      255
696 #define WLC_CURRENT_PWR                         256
697 #define WLC_GET_SCAN_PASSIVE_TIME               257
698 #define WLC_SET_SCAN_PASSIVE_TIME               258
699 #define WLC_LEGACY_LINK_BEHAVIOR                259
700 #define WLC_GET_CHANNELS_IN_COUNTRY             260
701 #define WLC_GET_COUNTRY_LIST                    261
702 #define WLC_GET_VAR                             262     
703 #define WLC_SET_VAR                             263     
704 #define WLC_NVRAM_GET                           264     
705 #define WLC_NVRAM_SET                           265
706 #define WLC_NVRAM_DUMP                          266
707 #define WLC_REBOOT                              267
708 #define WLC_SET_WSEC_PMK                        268
709 #define WLC_GET_AUTH_MODE                       269
710 #define WLC_SET_AUTH_MODE                       270
711 #define WLC_GET_WAKEENTRY                       271
712 #define WLC_SET_WAKEENTRY                       272
713 #define WLC_NDCONFIG_ITEM                       273     
714 #define WLC_NVOTPW                              274
715 #define WLC_OTPW                                275
716 #define WLC_IOV_BLOCK_GET                       276
717 #define WLC_IOV_MODULES_GET                     277
718 #define WLC_SOFT_RESET                          278
719 #define WLC_GET_ALLOW_MODE                      279
720 #define WLC_SET_ALLOW_MODE                      280
721 #define WLC_GET_DESIRED_BSSID                   281
722 #define WLC_SET_DESIRED_BSSID                   282
723 #define WLC_DISASSOC_MYAP                       283
724 #define WLC_GET_NBANDS                          284     
725 #define WLC_GET_BANDSTATES                      285     
726 #define WLC_GET_WLC_BSS_INFO                    286     
727 #define WLC_GET_ASSOC_INFO                      287     
728 #define WLC_GET_OID_PHY                         288     
729 #define WLC_SET_OID_PHY                         289     
730 #define WLC_SET_ASSOC_TIME                      290     
731 #define WLC_GET_DESIRED_SSID                    291     
732 #define WLC_GET_CHANSPEC                        292     
733 #define WLC_GET_ASSOC_STATE                     293     
734 #define WLC_SET_PHY_STATE                       294     
735 #define WLC_GET_SCAN_PENDING                    295     
736 #define WLC_GET_SCANREQ_PENDING                 296     
737 #define WLC_GET_PREV_ROAM_REASON                297     
738 #define WLC_SET_PREV_ROAM_REASON                298     
739 #define WLC_GET_BANDSTATES_PI                   299     
740 #define WLC_GET_PHY_STATE                       300     
741 #define WLC_GET_BSS_WPA_RSN                     301     
742 #define WLC_GET_BSS_WPA2_RSN                    302     
743 #define WLC_GET_BSS_BCN_TS                      303     
744 #define WLC_GET_INT_DISASSOC                    304     
745 #define WLC_SET_NUM_PEERS                       305     
746 #define WLC_GET_NUM_BSS                         306     
747 #define WLC_LAST                                307     
748
749
750
751 #define WL_RADIO_SW_DISABLE             (1<<0)
752 #define WL_RADIO_HW_DISABLE             (1<<1)
753 #define WL_RADIO_MPC_DISABLE            (1<<2)
754 #define WL_RADIO_COUNTRY_DISABLE        (1<<3)  
755
756
757 #define WL_TXPWR_OVERRIDE       (1U<<31)
758
759 #define WL_PHY_PAVARS_LEN       6       
760
761
762 #define WL_DIAG_INTERRUPT                       1       
763 #define WL_DIAG_LOOPBACK                        2       
764 #define WL_DIAG_MEMORY                          3       
765 #define WL_DIAG_LED                             4       
766 #define WL_DIAG_REG                             5       
767 #define WL_DIAG_SROM                            6       
768 #define WL_DIAG_DMA                             7       
769
770 #define WL_DIAGERR_SUCCESS                      0
771 #define WL_DIAGERR_FAIL_TO_RUN                  1       
772 #define WL_DIAGERR_NOT_SUPPORTED                2       
773 #define WL_DIAGERR_INTERRUPT_FAIL               3       
774 #define WL_DIAGERR_LOOPBACK_FAIL                4       
775 #define WL_DIAGERR_SROM_FAIL                    5       
776 #define WL_DIAGERR_SROM_BADCRC                  6       
777 #define WL_DIAGERR_REG_FAIL                     7       
778 #define WL_DIAGERR_MEMORY_FAIL                  8       
779 #define WL_DIAGERR_NOMEM                        9       
780 #define WL_DIAGERR_DMA_FAIL                     10      
781
782 #define WL_DIAGERR_MEMORY_TIMEOUT               11      
783 #define WL_DIAGERR_MEMORY_BADPATTERN            12      
784
785
786 #define WLC_BAND_AUTO           0       
787 #define WLC_BAND_5G             1       
788 #define WLC_BAND_2G             2       
789 #define WLC_BAND_ALL            3       
790
791
792 #define WL_CHAN_FREQ_RANGE_2G      0
793 #define WL_CHAN_FREQ_RANGE_5GL     1
794 #define WL_CHAN_FREQ_RANGE_5GM     2
795 #define WL_CHAN_FREQ_RANGE_5GH     3
796
797
798 #define WLC_PHY_TYPE_A          0
799 #define WLC_PHY_TYPE_B          1
800 #define WLC_PHY_TYPE_G          2
801 #define WLC_PHY_TYPE_N          4
802 #define WLC_PHY_TYPE_LP         5
803 #define WLC_PHY_TYPE_SSN        6
804 #define WLC_PHY_TYPE_NULL       0xf
805
806
807 #define WLC_MACMODE_DISABLED    0       
808 #define WLC_MACMODE_DENY        1       
809 #define WLC_MACMODE_ALLOW       2       
810
811
812 #define GMODE_LEGACY_B          0
813 #define GMODE_AUTO              1
814 #define GMODE_ONLY              2
815 #define GMODE_B_DEFERRED        3
816 #define GMODE_PERFORMANCE       4
817 #define GMODE_LRS               5
818 #define GMODE_MAX               6
819
820
821 #define WLC_PLCP_AUTO   -1
822 #define WLC_PLCP_SHORT  0
823 #define WLC_PLCP_LONG   1
824
825
826 #define WLC_PROTECTION_AUTO             -1
827 #define WLC_PROTECTION_OFF              0
828 #define WLC_PROTECTION_ON               1
829 #define WLC_PROTECTION_MMHDR_ONLY       2
830 #define WLC_PROTECTION_CTS_ONLY         3
831
832
833 #define WLC_PROTECTION_CTL_OFF          0
834 #define WLC_PROTECTION_CTL_LOCAL        1
835 #define WLC_PROTECTION_CTL_OVERLAP      2
836
837
838 #define WLC_N_PROTECTION_OFF            0
839 #define WLC_N_PROTECTION_OPTIONAL       1
840 #define WLC_N_PROTECTION_20IN40         2
841 #define WLC_N_PROTECTION_MIXEDMODE      3
842
843
844 #define WLC_N_PREAMBLE_MIXEDMODE        0
845 #define WLC_N_PREAMBLE_GF               1
846
847
848 #define WLC_N_BW_20ALL                  0
849 #define WLC_N_BW_40ALL                  1
850 #define WLC_N_BW_20IN2G_40IN5G          2
851
852
853 #define WLC_N_TXRX_CHAIN0               0
854 #define WLC_N_TXRX_CHAIN1               1
855
856
857 #define WLC_N_SGI_20                    0x01
858 #define WLC_N_SGI_40                    0x02
859
860
861 #define PM_OFF  0
862 #define PM_MAX  1
863 #define PM_FAST 2
864
865 #define LISTEN_INTERVAL                 10
866
867 #define INTERFERE_NONE  0       
868 #define NON_WLAN        1       
869 #define WLAN_MANUAL     2       
870 #define WLAN_AUTO       3       
871 #define AUTO_ACTIVE     (1 << 7) 
872
873 typedef struct wl_aci_args {
874         int enter_aci_thresh; 
875         int exit_aci_thresh; 
876         int usec_spin; 
877         int glitch_delay; 
878         uint16 nphy_adcpwr_enter_thresh;        
879         uint16 nphy_adcpwr_exit_thresh; 
880         uint16 nphy_repeat_ctr;         
881         uint16 nphy_num_samples;        
882         uint16 nphy_undetect_window_sz; 
883         uint16 nphy_b_energy_lo_aci;    
884         uint16 nphy_b_energy_md_aci;    
885         uint16 nphy_b_energy_hi_aci;    
886 } wl_aci_args_t;
887
888 #define WL_ACI_ARGS_LEGACY_LENGTH       16      
889
890
891
892 #define WL_ERROR_VAL            0x00000001
893 #define WL_TRACE_VAL            0x00000002
894 #define WL_PRHDRS_VAL           0x00000004
895 #define WL_PRPKT_VAL            0x00000008
896 #define WL_INFORM_VAL           0x00000010
897 #define WL_TMP_VAL              0x00000020
898 #define WL_OID_VAL              0x00000040
899 #define WL_RATE_VAL             0x00000080
900 #define WL_ASSOC_VAL            0x00000100
901 #define WL_PRUSR_VAL            0x00000200
902 #define WL_PS_VAL               0x00000400
903 #define WL_TXPWR_VAL            0x00000800
904 #define WL_PORT_VAL             0x00001000
905 #define WL_DUAL_VAL             0x00002000
906 #define WL_WSEC_VAL             0x00004000
907 #define WL_WSEC_DUMP_VAL        0x00008000
908 #define WL_LOG_VAL              0x00010000
909 #define WL_NRSSI_VAL            0x00020000
910 #define WL_LOFT_VAL             0x00040000
911 #define WL_REGULATORY_VAL       0x00080000
912 #define WL_PHYCAL_VAL           0x00100000
913 #define WL_RADAR_VAL            0x00200000
914 #define WL_MPC_VAL              0x00400000
915 #define WL_APSTA_VAL            0x00800000
916 #define WL_DFS_VAL              0x01000000
917 #define WL_BA_VAL               0x02000000
918 #define WL_MBSS_VAL             0x04000000
919 #define WL_CAC_VAL              0x08000000
920 #define WL_AMSDU_VAL            0x10000000
921 #define WL_AMPDU_VAL            0x20000000
922 #define WL_FFPLD_VAL            0x40000000
923
924
925 #define WL_DPT_VAL              0x00000001
926 #define WL_SCAN_VAL             0x00000002
927 #define WL_WOWL_VAL             0x00000004
928 #define WL_COEX_VAL             0x00000008
929 #define WL_RTDC_VAL             0x00000010
930 #define WL_BTA_VAL              0x00000040
931
932
933 #define WL_LED_NUMGPIO          16      
934
935
936 #define WL_LED_OFF              0               
937 #define WL_LED_ON               1               
938 #define WL_LED_ACTIVITY         2               
939 #define WL_LED_RADIO            3               
940 #define WL_LED_ARADIO           4               
941 #define WL_LED_BRADIO           5               
942 #define WL_LED_BGMODE           6               
943 #define WL_LED_WI1              7
944 #define WL_LED_WI2              8
945 #define WL_LED_WI3              9
946 #define WL_LED_ASSOC            10              
947 #define WL_LED_INACTIVE         11              
948 #define WL_LED_ASSOCACT         12              
949 #define WL_LED_NUMBEHAVIOR      13
950
951
952 #define WL_LED_BEH_MASK         0x7f            
953 #define WL_LED_AL_MASK          0x80            
954
955
956 #define WL_NUMCHANNELS          64
957 #define WL_NUMCHANSPECS         100
958
959
960 #define WL_WDS_WPA_ROLE_AUTH    0       
961 #define WL_WDS_WPA_ROLE_SUP     1       
962 #define WL_WDS_WPA_ROLE_AUTO    255     
963
964
965 #define WL_EVENTING_MASK_LEN    16
966
967
968 #define VNDR_IE_CMD_LEN         4       
969
970
971 #define VNDR_IE_BEACON_FLAG     0x1
972 #define VNDR_IE_PRBRSP_FLAG     0x2
973 #define VNDR_IE_ASSOCRSP_FLAG   0x4
974 #define VNDR_IE_AUTHRSP_FLAG    0x8
975 #define VNDR_IE_PRBREQ_FLAG     0x10
976 #define VNDR_IE_ASSOCREQ_FLAG   0x20
977 #define VNDR_IE_CUSTOM_FLAG             0x100 
978
979 #define VNDR_IE_INFO_HDR_LEN    (sizeof(uint32))
980
981 typedef struct {
982         uint32 pktflag;                 
983         vndr_ie_t vndr_ie_data;         
984 } vndr_ie_info_t;
985
986 typedef struct {
987         int iecount;                    
988         vndr_ie_info_t vndr_ie_list[1]; 
989 } vndr_ie_buf_t;
990
991 typedef struct {
992         char cmd[VNDR_IE_CMD_LEN];      
993         vndr_ie_buf_t vndr_ie_buffer;   
994 } vndr_ie_setbuf_t;
995
996
997
998
999 #define WL_JOIN_PREF_RSSI       1       
1000 #define WL_JOIN_PREF_WPA        2       
1001 #define WL_JOIN_PREF_BAND       3       
1002
1003
1004 #define WLJP_BAND_ASSOC_PREF    255     
1005
1006
1007 #define WL_WPA_ACP_MCS_ANY      "\x00\x00\x00\x00"
1008
1009 struct tsinfo_arg {
1010         uint8 octets[3];
1011 };
1012
1013
1014 #define NFIFO                   6       
1015
1016 #define WL_CNT_T_VERSION        5       
1017 #define WL_CNT_EXT_T_VERSION    1
1018
1019 typedef struct {
1020         uint16  version;        
1021         uint16  length;         
1022
1023         
1024         uint32  txframe;        
1025         uint32  txbyte;         
1026         uint32  txretrans;      
1027         uint32  txerror;        
1028         uint32  txctl;          
1029         uint32  txprshort;      
1030         uint32  txserr;         
1031         uint32  txnobuf;        
1032         uint32  txnoassoc;      
1033         uint32  txrunt;         
1034         uint32  txchit;         
1035         uint32  txcmiss;        
1036
1037         
1038         uint32  txuflo;         
1039         uint32  txphyerr;       
1040         uint32  txphycrs;
1041
1042         
1043         uint32  rxframe;        
1044         uint32  rxbyte;         
1045         uint32  rxerror;        
1046         uint32  rxctl;          
1047         uint32  rxnobuf;        
1048         uint32  rxnondata;      
1049         uint32  rxbadds;        
1050         uint32  rxbadcm;        
1051         uint32  rxfragerr;      
1052         uint32  rxrunt;         
1053         uint32  rxgiant;        
1054         uint32  rxnoscb;        
1055         uint32  rxbadproto;     
1056         uint32  rxbadsrcmac;    
1057         uint32  rxbadda;        
1058         uint32  rxfilter;       
1059
1060         
1061         uint32  rxoflo;         
1062         uint32  rxuflo[NFIFO];  
1063
1064         uint32  d11cnt_txrts_off;       
1065         uint32  d11cnt_rxcrc_off;       
1066         uint32  d11cnt_txnocts_off;     
1067
1068         
1069         uint32  dmade;          
1070         uint32  dmada;          
1071         uint32  dmape;          
1072         uint32  reset;          
1073         uint32  tbtt;           
1074         uint32  txdmawar;
1075         uint32  pkt_callback_reg_fail;  
1076
1077         
1078         uint32  txallfrm;       
1079         uint32  txrtsfrm;       
1080         uint32  txctsfrm;       
1081         uint32  txackfrm;       
1082         uint32  txdnlfrm;       
1083         uint32  txbcnfrm;       
1084         uint32  txfunfl[8];     
1085         uint32  txtplunfl;      
1086         uint32  txphyerror;     
1087         uint32  rxfrmtoolong;   
1088         uint32  rxfrmtooshrt;   
1089         uint32  rxinvmachdr;    
1090         uint32  rxbadfcs;       
1091         uint32  rxbadplcp;      
1092         uint32  rxcrsglitch;    
1093         uint32  rxstrt;         
1094         uint32  rxdfrmucastmbss; 
1095         uint32  rxmfrmucastmbss; 
1096         uint32  rxcfrmucast;    
1097         uint32  rxrtsucast;     
1098         uint32  rxctsucast;     
1099         uint32  rxackucast;     
1100         uint32  rxdfrmocast;    
1101         uint32  rxmfrmocast;    
1102         uint32  rxcfrmocast;    
1103         uint32  rxrtsocast;     
1104         uint32  rxctsocast;     
1105         uint32  rxdfrmmcast;    
1106         uint32  rxmfrmmcast;    
1107         uint32  rxcfrmmcast;    
1108         uint32  rxbeaconmbss;   
1109         uint32  rxdfrmucastobss; 
1110         uint32  rxbeaconobss;   
1111         uint32  rxrsptmout;     
1112         uint32  bcntxcancl;     
1113         uint32  rxf0ovfl;       
1114         uint32  rxf1ovfl;       
1115         uint32  rxf2ovfl;       
1116         uint32  txsfovfl;       
1117         uint32  pmqovfl;        
1118         uint32  rxcgprqfrm;     
1119         uint32  rxcgprsqovfl;   
1120         uint32  txcgprsfail;    
1121         uint32  txcgprssuc;     
1122         uint32  prs_timeout;    
1123         uint32  rxnack;
1124         uint32  frmscons;
1125         uint32  txnack;
1126         uint32  txglitch_nack;  
1127         uint32  txburst;        
1128
1129         
1130         uint32  txfrag;         
1131         uint32  txmulti;        
1132         uint32  txfail;         
1133         uint32  txretry;        
1134         uint32  txretrie;       
1135         uint32  rxdup;          
1136         uint32  txrts;          
1137         uint32  txnocts;        
1138         uint32  txnoack;        
1139         uint32  rxfrag;         
1140         uint32  rxmulti;        
1141         uint32  rxcrc;          
1142         uint32  txfrmsnt;       
1143         uint32  rxundec;        
1144
1145         
1146         uint32  tkipmicfaill;   
1147         uint32  tkipcntrmsr;    
1148         uint32  tkipreplay;     
1149         uint32  ccmpfmterr;     
1150         uint32  ccmpreplay;     
1151         uint32  ccmpundec;      
1152         uint32  fourwayfail;    
1153         uint32  wepundec;       
1154         uint32  wepicverr;      
1155         uint32  decsuccess;     
1156         uint32  tkipicverr;     
1157         uint32  wepexcluded;    
1158
1159         uint32  txchanrej;      
1160         uint32  psmwds;         
1161         uint32  phywatchdog;    
1162
1163         
1164         uint32  prq_entries_handled;    
1165         uint32  prq_undirected_entries; 
1166         uint32  prq_bad_entries;        
1167         uint32  atim_suppress_count;    
1168         uint32  bcn_template_not_ready; 
1169         uint32  bcn_template_not_ready_done; 
1170         uint32  late_tbtt_dpc;  
1171
1172         
1173         uint32  rx1mbps;        
1174         uint32  rx2mbps;        
1175         uint32  rx5mbps5;       
1176         uint32  rx6mbps;        
1177         uint32  rx9mbps;        
1178         uint32  rx11mbps;       
1179         uint32  rx12mbps;       
1180         uint32  rx18mbps;       
1181         uint32  rx24mbps;       
1182         uint32  rx36mbps;       
1183         uint32  rx48mbps;       
1184         uint32  rx54mbps;       
1185         uint32  rx108mbps;      
1186         uint32  rx162mbps;      
1187         uint32  rx216mbps;      
1188         uint32  rx270mbps;      
1189         uint32  rx324mbps;      
1190         uint32  rx378mbps;      
1191         uint32  rx432mbps;      
1192         uint32  rx486mbps;      
1193         uint32  rx540mbps;      
1194         
1195         uint32  pktengrxducast; 
1196         uint32  pktengrxdmcast; 
1197 } wl_cnt_t;
1198
1199 typedef struct {
1200         uint16  version;        
1201         uint16  length;         
1202
1203         uint32 rxampdu_sgi;     
1204         uint32 rxampdu_stbc; 
1205         uint32 rxmpdu_sgi;      
1206         uint32 rxmpdu_stbc;  
1207         uint32  rxmcs0_40M;  
1208         uint32  rxmcs1_40M;  
1209         uint32  rxmcs2_40M;  
1210         uint32  rxmcs3_40M;  
1211         uint32  rxmcs4_40M;  
1212         uint32  rxmcs5_40M;  
1213         uint32  rxmcs6_40M;  
1214         uint32  rxmcs7_40M;  
1215         uint32  rxmcs32_40M;  
1216
1217         uint32  txfrmsnt_20Mlo;  
1218         uint32  txfrmsnt_20Mup;  
1219         uint32  txfrmsnt_40M;   
1220
1221         uint32 rx_20ul;
1222 } wl_cnt_ext_t;
1223
1224 #define WL_RXDIV_STATS_T_VERSION        1       
1225 typedef struct {
1226         uint16  version;        
1227         uint16  length;         
1228
1229         uint32 rxant[4];        
1230 } wl_rxdiv_stats_t;
1231
1232 #define WL_DELTA_STATS_T_VERSION        1       
1233
1234 typedef struct {
1235         uint16 version;     
1236         uint16 length;      
1237
1238         
1239         uint32 txframe;     
1240         uint32 txbyte;      
1241         uint32 txretrans;   
1242         uint32 txfail;      
1243
1244         
1245         uint32 rxframe;     
1246         uint32 rxbyte;      
1247
1248         
1249         uint32  rx1mbps;        
1250         uint32  rx2mbps;        
1251         uint32  rx5mbps5;       
1252         uint32  rx6mbps;        
1253         uint32  rx9mbps;        
1254         uint32  rx11mbps;       
1255         uint32  rx12mbps;       
1256         uint32  rx18mbps;       
1257         uint32  rx24mbps;       
1258         uint32  rx36mbps;       
1259         uint32  rx48mbps;       
1260         uint32  rx54mbps;       
1261         uint32  rx108mbps;      
1262         uint32  rx162mbps;      
1263         uint32  rx216mbps;      
1264         uint32  rx270mbps;      
1265         uint32  rx324mbps;      
1266         uint32  rx378mbps;      
1267         uint32  rx432mbps;      
1268         uint32  rx486mbps;      
1269         uint32  rx540mbps;      
1270 } wl_delta_stats_t;
1271
1272 #define WL_WME_CNT_VERSION      1       
1273
1274 typedef struct {
1275         uint32 packets;
1276         uint32 bytes;
1277 } wl_traffic_stats_t;
1278
1279 typedef struct {
1280         uint16  version;        
1281         uint16  length;         
1282
1283         wl_traffic_stats_t tx[AC_COUNT];        
1284         wl_traffic_stats_t tx_failed[AC_COUNT]; 
1285         wl_traffic_stats_t rx[AC_COUNT];        
1286         wl_traffic_stats_t rx_failed[AC_COUNT]; 
1287
1288         wl_traffic_stats_t forward[AC_COUNT];   
1289
1290         wl_traffic_stats_t tx_expired[AC_COUNT];        
1291
1292 } wl_wme_cnt_t;
1293
1294
1295
1296 #define WLC_ROAM_TRIGGER_DEFAULT        0 
1297 #define WLC_ROAM_TRIGGER_BANDWIDTH      1 
1298 #define WLC_ROAM_TRIGGER_DISTANCE       2 
1299 #define WLC_ROAM_TRIGGER_MAX_VALUE      2 
1300
1301
1302 enum {
1303         PFN_LIST_ORDER,
1304         PFN_RSSI
1305 };
1306
1307 enum {
1308         DISABLE,
1309         ENABLE
1310 };
1311
1312 #define SORT_CRITERIA_BIT               0
1313 #define AUTO_NET_SWITCH_BIT             1
1314 #define ENABLE_BKGRD_SCAN_BIT   2
1315 #define IMMEDIATE_SCAN_BIT              3
1316 #define AUTO_CONNECT_BIT                4
1317 #define ENABLE_BD_SCAN_BIT              5
1318 #define ENABLE_ADAPTSCAN_BIT    6
1319
1320 #define SORT_CRITERIA_MASK              0x01
1321 #define AUTO_NET_SWITCH_MASK    0x02
1322 #define ENABLE_BKGRD_SCAN_MASK  0x04
1323 #define IMMEDIATE_SCAN_MASK             0x08
1324 #define AUTO_CONNECT_MASK               0x10
1325 #define ENABLE_BD_SCAN_MASK             0x20
1326 #define ENABLE_ADAPTSCAN_MASK   0x40
1327
1328 #define PFN_VERSION                     1
1329
1330 #define MAX_PFN_LIST_COUNT      16
1331
1332
1333 typedef struct wl_pfn_param {
1334         int32 version;                  
1335         int32 scan_freq;                
1336         int32 lost_network_timeout;     
1337         int16 flags;                    
1338         int16 rssi_margin;              
1339         int32  repeat_scan;
1340         int32  max_freq_adjust;
1341 } wl_pfn_param_t;
1342
1343 typedef struct wl_pfn {
1344         wlc_ssid_t              ssid;                   
1345         int32                   bss_type;               
1346         int32                   infra;                  
1347         int32                   auth;                   
1348         uint32                  wpa_auth;               
1349         int32                   wsec;                   
1350 } wl_pfn_t;
1351
1352 #define PNO_SCAN_MAX_FW         508*1000
1353 #define PNO_SCAN_MAX_FW_SEC     PNO_SCAN_MAX_FW/1000
1354 #define PNO_SCAN_MIN_FW_SEC     10
1355
1356
1357 #define TOE_TX_CSUM_OL          0x00000001
1358 #define TOE_RX_CSUM_OL          0x00000002
1359
1360
1361 #define TOE_ERRTEST_TX_CSUM     0x00000001
1362 #define TOE_ERRTEST_RX_CSUM     0x00000002
1363 #define TOE_ERRTEST_RX_CSUM2    0x00000004
1364
1365 struct toe_ol_stats_t {
1366         
1367         uint32 tx_summed;
1368
1369         
1370         uint32 tx_iph_fill;
1371         uint32 tx_tcp_fill;
1372         uint32 tx_udp_fill;
1373         uint32 tx_icmp_fill;
1374
1375         
1376         uint32 rx_iph_good;
1377         uint32 rx_iph_bad;
1378         uint32 rx_tcp_good;
1379         uint32 rx_tcp_bad;
1380         uint32 rx_udp_good;
1381         uint32 rx_udp_bad;
1382         uint32 rx_icmp_good;
1383         uint32 rx_icmp_bad;
1384
1385         
1386         uint32 tx_tcp_errinj;
1387         uint32 tx_udp_errinj;
1388         uint32 tx_icmp_errinj;
1389
1390         
1391         uint32 rx_tcp_errinj;
1392         uint32 rx_udp_errinj;
1393         uint32 rx_icmp_errinj;
1394 };
1395
1396
1397 #define ARP_OL_AGENT            0x00000001
1398 #define ARP_OL_SNOOP            0x00000002
1399 #define ARP_OL_HOST_AUTO_REPLY  0x00000004
1400 #define ARP_OL_PEER_AUTO_REPLY  0x00000008
1401
1402
1403 #define ARP_ERRTEST_REPLY_PEER  0x1
1404 #define ARP_ERRTEST_REPLY_HOST  0x2
1405
1406 #define ARP_MULTIHOMING_MAX     8       
1407
1408
1409 struct arp_ol_stats_t {
1410         uint32  host_ip_entries;        
1411         uint32  host_ip_overflow;       
1412
1413         uint32  arp_table_entries;      
1414         uint32  arp_table_overflow;     
1415
1416         uint32  host_request;           
1417         uint32  host_reply;             
1418         uint32  host_service;           
1419
1420         uint32  peer_request;           
1421         uint32  peer_request_drop;      
1422         uint32  peer_reply;             
1423         uint32  peer_reply_drop;        
1424         uint32  peer_service;           
1425 };
1426
1427
1428
1429
1430
1431 typedef struct wl_keep_alive_pkt {
1432         uint32  period_msec;    
1433         uint16  len_bytes;      
1434         uint8   data[1];        
1435 } wl_keep_alive_pkt_t;
1436
1437 #define WL_KEEP_ALIVE_FIXED_LEN         OFFSETOF(wl_keep_alive_pkt_t, data)
1438
1439
1440
1441
1442
1443 typedef enum wl_pkt_filter_type {
1444         WL_PKT_FILTER_TYPE_PATTERN_MATCH        
1445 } wl_pkt_filter_type_t;
1446
1447 #define WL_PKT_FILTER_TYPE wl_pkt_filter_type_t
1448
1449
1450 typedef struct wl_pkt_filter_pattern {
1451         uint32  offset;         
1452         uint32  size_bytes;     
1453         uint8   mask_and_pattern[1]; 
1454 } wl_pkt_filter_pattern_t;
1455
1456
1457 typedef struct wl_pkt_filter {
1458         uint32  id;             
1459         uint32  type;           
1460         uint32  negate_match;   
1461         union {                 
1462                 wl_pkt_filter_pattern_t pattern;        
1463         } u;
1464 } wl_pkt_filter_t;
1465
1466 #define WL_PKT_FILTER_FIXED_LEN           OFFSETOF(wl_pkt_filter_t, u)
1467 #define WL_PKT_FILTER_PATTERN_FIXED_LEN   OFFSETOF(wl_pkt_filter_pattern_t, mask_and_pattern)
1468
1469
1470 typedef struct wl_pkt_filter_enable {
1471         uint32  id;             
1472         uint32  enable;         
1473 } wl_pkt_filter_enable_t;
1474
1475
1476 typedef struct wl_pkt_filter_list {
1477         uint32  num;            
1478         wl_pkt_filter_t filter[1];      
1479 } wl_pkt_filter_list_t;
1480
1481 #define WL_PKT_FILTER_LIST_FIXED_LEN      OFFSETOF(wl_pkt_filter_list_t, filter)
1482
1483
1484 typedef struct wl_pkt_filter_stats {
1485         uint32  num_pkts_matched;       
1486         uint32  num_pkts_forwarded;     
1487         uint32  num_pkts_discarded;     
1488 } wl_pkt_filter_stats_t;
1489
1490
1491 typedef struct wl_seq_cmd_ioctl {
1492         uint32 cmd;             
1493         uint32 len;             
1494 } wl_seq_cmd_ioctl_t;
1495
1496 #define WL_SEQ_CMD_ALIGN_BYTES  4
1497
1498
1499 #define WL_SEQ_CMDS_GET_IOCTL_FILTER(cmd) \
1500         (((cmd) == WLC_GET_MAGIC)               || \
1501          ((cmd) == WLC_GET_VERSION)             || \
1502          ((cmd) == WLC_GET_AP)                  || \
1503          ((cmd) == WLC_GET_INSTANCE))
1504
1505
1506
1507 #define WL_PKTENG_PER_TX_START                  0x01
1508 #define WL_PKTENG_PER_TX_STOP                   0x02
1509 #define WL_PKTENG_PER_RX_START                  0x04
1510 #define WL_PKTENG_PER_RX_WITH_ACK_START         0x05
1511 #define WL_PKTENG_PER_TX_WITH_ACK_START         0x06
1512 #define WL_PKTENG_PER_RX_STOP                   0x08
1513 #define WL_PKTENG_PER_MASK                      0xff
1514
1515 #define WL_PKTENG_SYNCHRONOUS                   0x100   
1516
1517 typedef struct wl_pkteng {
1518         uint32 flags;
1519         uint32 delay;                   
1520         uint32 nframes;                 
1521         uint32 length;                  
1522         uint8  seqno;                   
1523         struct ether_addr dest;         
1524         struct ether_addr src;          
1525 } wl_pkteng_t;
1526
1527 #define NUM_80211b_RATES        4
1528 #define NUM_80211ag_RATES       8
1529 #define NUM_80211n_RATES        32
1530 #define NUM_80211_RATES         (NUM_80211b_RATES+NUM_80211ag_RATES+NUM_80211n_RATES)
1531 typedef struct wl_pkteng_stats {
1532         uint32 lostfrmcnt;              
1533         int32 rssi;                     
1534         int32 snr;                      
1535         uint16 rxpktcnt[NUM_80211_RATES+1];
1536 } wl_pkteng_stats_t;
1537
1538 #define WL_WOWL_MAGIC   (1 << 0)        
1539 #define WL_WOWL_NET     (1 << 1)        
1540 #define WL_WOWL_DIS     (1 << 2)        
1541 #define WL_WOWL_RETR    (1 << 3)        
1542 #define WL_WOWL_BCN     (1 << 4)        
1543 #define WL_WOWL_TST     (1 << 5)        
1544 #define WL_WOWL_BCAST   (1 << 15)       
1545
1546 #define MAGIC_PKT_MINLEN 102    
1547
1548 typedef struct {
1549         uint masksize;          
1550         uint offset;            
1551         uint patternoffset;     
1552         uint patternsize;       
1553         
1554         
1555 } wl_wowl_pattern_t;
1556
1557 typedef struct {
1558         uint                    count;
1559         wl_wowl_pattern_t       pattern[1];
1560 } wl_wowl_pattern_list_t;
1561
1562 typedef struct {
1563         uint8   pci_wakeind;    
1564         uint16  ucode_wakeind;  
1565 } wl_wowl_wakeind_t;
1566
1567
1568 typedef struct wl_txrate_class {
1569         uint8           init_rate;
1570         uint8           min_rate;
1571         uint8           max_rate;
1572 } wl_txrate_class_t;
1573
1574
1575
1576
1577 #define WLC_OBSS_SCAN_PASSIVE_DWELL_DEFAULT             100     
1578 #define WLC_OBSS_SCAN_PASSIVE_DWELL_MIN                 5       
1579 #define WLC_OBSS_SCAN_PASSIVE_DWELL_MAX                 1000    
1580 #define WLC_OBSS_SCAN_ACTIVE_DWELL_DEFAULT              20      
1581 #define WLC_OBSS_SCAN_ACTIVE_DWELL_MIN                  10      
1582 #define WLC_OBSS_SCAN_ACTIVE_DWELL_MAX                  1000    
1583 #define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_DEFAULT        300     
1584 #define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MIN            10      
1585 #define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MAX            900     
1586 #define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_DEFAULT  5
1587 #define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MIN      5
1588 #define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MAX      100
1589 #define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_DEFAULT 200     
1590 #define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MIN     200     
1591 #define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MAX     10000   
1592 #define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_DEFAULT  20      
1593 #define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MIN      20      
1594 #define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MAX      10000   
1595 #define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_DEFAULT        25      
1596 #define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MIN            0       
1597 #define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MAX            100     
1598
1599
1600 typedef struct wl_obss_scan_arg {
1601         int16   passive_dwell;
1602         int16   active_dwell;
1603         int16   bss_widthscan_interval;
1604         int16   passive_total;
1605         int16   active_total;
1606         int16   chanwidth_transition_delay;
1607         int16   activity_threshold;
1608 } wl_obss_scan_arg_t;
1609 #define WL_OBSS_SCAN_PARAM_LEN  sizeof(wl_obss_scan_arg_t)
1610 #define WL_MIN_NUM_OBSS_SCAN_ARG 7      
1611
1612 #define WL_COEX_INFO_MASK               0x07
1613 #define WL_COEX_INFO_REQ                0x01
1614 #define WL_COEX_40MHZ_INTOLERANT        0x02
1615 #define WL_COEX_WIDTH20                 0x04
1616
1617 typedef struct wl_action_obss_coex_req {
1618         uint8 info;
1619         uint8 num;
1620         uint8 ch_list[1];
1621 } wl_action_obss_coex_req_t;
1622
1623
1624 #define MAX_RSSI_LEVELS 8
1625
1626
1627 typedef struct wl_rssi_event {
1628         
1629         uint32 rate_limit_msec;
1630         
1631         uint8 num_rssi_levels;
1632         
1633         int8 rssi_levels[MAX_RSSI_LEVELS];
1634 } wl_rssi_event_t;
1635
1636
1637
1638 #define WLFEATURE_DISABLE_11N           0x00000001
1639 #define WLFEATURE_DISABLE_11N_STBC_TX   0x00000002
1640 #define WLFEATURE_DISABLE_11N_STBC_RX   0x00000004
1641 #define WLFEATURE_DISABLE_11N_SGI_TX    0x00000008
1642 #define WLFEATURE_DISABLE_11N_SGI_RX    0x00000010
1643 #define WLFEATURE_DISABLE_11N_AMPDU_TX  0x00000020
1644 #define WLFEATURE_DISABLE_11N_AMPDU_RX  0x00000040
1645 #define WLFEATURE_DISABLE_11N_GF        0x00000080
1646
1647
1648
1649 #include <packed_section_end.h>
1650
1651
1652 #include <packed_section_start.h>
1653
1654
1655 typedef BWL_PRE_PACKED_STRUCT struct sta_prbreq_wps_ie_hdr {
1656         struct ether_addr staAddr;
1657         uint16 ieLen;
1658 } BWL_POST_PACKED_STRUCT sta_prbreq_wps_ie_hdr_t;
1659
1660 typedef BWL_PRE_PACKED_STRUCT struct sta_prbreq_wps_ie_data {
1661         sta_prbreq_wps_ie_hdr_t hdr;
1662         uint8 ieData[1];
1663 } BWL_POST_PACKED_STRUCT sta_prbreq_wps_ie_data_t;
1664
1665 typedef BWL_PRE_PACKED_STRUCT struct sta_prbreq_wps_ie_list {
1666         uint32 totLen;
1667         uint8 ieDataList[1];
1668 } BWL_POST_PACKED_STRUCT sta_prbreq_wps_ie_list_t;
1669
1670
1671 #include <packed_section_end.h>
1672
1673 #endif