Home | History | Annotate | Download | only in include
      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