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