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