xref: /OK3568_Linux_fs/external/rkwifibt/drivers/infineon/include/wlioctl_defs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Custom OID/ioctl definitions for
3  * Broadcom 802.11abg Networking Device Driver
4  *
5  * Definitions subject to change without notice.
6  *
7  * Portions of this code are copyright (c) 2021 Cypress Semiconductor Corporation
8  *
9  * Copyright (C) 1999-2017, Broadcom Corporation
10  *
11  *      Unless you and Broadcom execute a separate written software license
12  * agreement governing use of this software, this software is licensed to you
13  * under the terms of the GNU General Public License version 2 (the "GPL"),
14  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
15  * following added to such license:
16  *
17  *      As a special exception, the copyright holders of this software give you
18  * permission to link this software with independent modules, and to copy and
19  * distribute the resulting executable under terms of your choice, provided that
20  * you also meet, for each linked independent module, the terms and conditions of
21  * the license of that module.  An independent module is a module which is not
22  * derived from this software.  The special exception does not apply to any
23  * modifications of the software.
24  *
25  *      Notwithstanding the above, under no circumstances may you combine this
26  * software in any way with any other Broadcom software provided under a license
27  * other than the GPL, without Broadcom's express prior written consent.
28  *
29  *
30  * <<Broadcom-WL-IPTag/Open:>>
31  *
32  * $Id$
33  */
34 
35 #ifndef wlioctl_defs_h
36 #define wlioctl_defs_h
37 
38 /* All builds use the new 11ac ratespec/chanspec */
39 #undef  D11AC_IOTYPES
40 #define D11AC_IOTYPES
41 
42 #ifndef USE_NEW_RSPEC_DEFS
43 /* WL_RSPEC defines for rate information */
44 #define WL_RSPEC_RATE_MASK		0x000000FF      /* rate or HT MCS value */
45 #define WL_RSPEC_HE_MCS_MASK		0x0000000F      /* HE MCS value */
46 #define WL_RSPEC_HE_NSS_MASK		0x000000F0      /* HE Nss value */
47 #define WL_RSPEC_HE_NSS_SHIFT		4               /* HE Nss value shift */
48 #define WL_RSPEC_VHT_MCS_MASK		0x0000000F      /* VHT MCS value */
49 #define WL_RSPEC_VHT_NSS_MASK		0x000000F0      /* VHT Nss value */
50 #define WL_RSPEC_VHT_NSS_SHIFT		4               /* VHT Nss value shift */
51 #define WL_RSPEC_TXEXP_MASK		0x00000300
52 #define WL_RSPEC_TXEXP_SHIFT		8
53 #define WL_RSPEC_BW_MASK		0x00070000      /* bandwidth mask */
54 #define WL_RSPEC_BW_SHIFT		16              /* bandwidth shift */
55 #define WL_RSPEC_STBC			0x00100000      /* STBC encoding, Nsts = 2 x Nss */
56 #define WL_RSPEC_TXBF			0x00200000      /* bit indicates TXBF mode */
57 #define WL_RSPEC_LDPC			0x00400000      /* bit indicates adv coding in use */
58 #define WL_RSPEC_SGI			0x00800000      /* Short GI mode */
59 #define WL_RSPEC_ENCODING_MASK		0x03000000      /* Encoding of Rate/MCS field */
60 #define WL_RSPEC_OVERRIDE_RATE		0x40000000      /* bit indicate to override mcs only */
61 #define WL_RSPEC_OVERRIDE_MODE		0x80000000      /* bit indicates override rate & mode */
62 
63 /* WL_RSPEC_ENCODING field defs */
64 #define WL_RSPEC_ENCODE_RATE	0x00000000      /* Legacy rate is stored in RSPEC_RATE_MASK */
65 #define WL_RSPEC_ENCODE_HT	0x01000000      /* HT MCS is stored in RSPEC_RATE_MASK */
66 #define WL_RSPEC_ENCODE_VHT	0x02000000      /* VHT MCS and Nss is stored in RSPEC_RATE_MASK */
67 #define WL_RSPEC_ENCODE_HE	0x03000000      /* HE MCS and Nss is stored in RSPEC_RATE_MASK */
68 #define WL_RSPEC_HE_NSS_UNSPECIFIED	0xF
69 
70 /* WL_RSPEC_BW field defs */
71 #define WL_RSPEC_BW_UNSPECIFIED 0
72 #define WL_RSPEC_BW_20MHZ       0x00010000
73 #define WL_RSPEC_BW_40MHZ       0x00020000
74 #define WL_RSPEC_BW_80MHZ       0x00030000
75 #define WL_RSPEC_BW_160MHZ      0x00040000
76 #define WL_RSPEC_BW_10MHZ	0x00050000
77 #define WL_RSPEC_BW_5MHZ	0x00060000
78 #define WL_RSPEC_BW_2P5MHZ      0x00070000
79 
80 #define HIGHEST_SINGLE_STREAM_MCS	7 /* MCS values greater than this enable multiple streams */
81 
82 #ifndef OEM_ANDROID
83 /* given a proprietary MCS, get number of spatial streams */
84 #define GET_PROPRIETARY_11N_MCS_NSS(mcs) (1 + ((mcs) - 85) / 8)
85 
86 #define GET_11N_MCS_NSS(mcs) ((mcs) < 32 ? (1 + ((mcs) / 8)) \
87 				: ((mcs) == 32 ? 1 : GET_PROPRIETARY_11N_MCS_NSS(mcs)))
88 #endif /* !OEM_ANDROID */
89 #endif /* !USE_NEW_RSPEC_DEFS */
90 
91 /* Legacy defines for the nrate iovar */
92 #define OLD_NRATE_MCS_INUSE         0x00000080 /* MSC in use,indicates b0-6 holds an mcs */
93 #define OLD_NRATE_RATE_MASK         0x0000007f /* rate/mcs value */
94 #define OLD_NRATE_STF_MASK          0x0000ff00 /* stf mode mask: siso, cdd, stbc, sdm */
95 #define OLD_NRATE_STF_SHIFT         8          /* stf mode shift */
96 #define OLD_NRATE_OVERRIDE          0x80000000 /* bit indicates override both rate & mode */
97 #define OLD_NRATE_OVERRIDE_MCS_ONLY 0x40000000 /* bit indicate to override mcs only */
98 #define OLD_NRATE_SGI               0x00800000 /* sgi mode */
99 #define OLD_NRATE_LDPC_CODING       0x00400000 /* bit indicates adv coding in use */
100 
101 #define OLD_NRATE_STF_SISO	0		/* stf mode SISO */
102 #define OLD_NRATE_STF_CDD	1		/* stf mode CDD */
103 #define OLD_NRATE_STF_STBC	2		/* stf mode STBC */
104 #define OLD_NRATE_STF_SDM	3		/* stf mode SDM */
105 
106 #define WLC_11N_N_PROP_MCS	6
107 #define WLC_11N_FIRST_PROP_MCS	87
108 #define WLC_11N_LAST_PROP_MCS	102
109 
110 #define MAX_CCA_CHANNELS 38	/* Max number of 20 Mhz wide channels */
111 #define MAX_CCA_SECS	60	/* CCA keeps this many seconds history */
112 
113 #define IBSS_MED        15	/* Mediom in-bss congestion percentage */
114 #define IBSS_HI         25	/* Hi in-bss congestion percentage */
115 #define OBSS_MED        12
116 #define OBSS_HI         25
117 #define INTERFER_MED    5
118 #define INTERFER_HI     10
119 
120 #define  CCA_FLAG_2G_ONLY		0x01	/* Return a channel from 2.4 Ghz band */
121 #define  CCA_FLAG_5G_ONLY		0x02	/* Return a channel from 2.4 Ghz band */
122 #define  CCA_FLAG_IGNORE_DURATION	0x04	/* Ignore dwell time for each channel */
123 #define  CCA_FLAGS_PREFER_1_6_11	0x10
124 #define  CCA_FLAG_IGNORE_INTERFER 	0x20 /* do not exlude channel based on interfer level */
125 
126 #define CCA_ERRNO_BAND 		1	/* After filtering for band pref, no choices left */
127 #define CCA_ERRNO_DURATION	2	/* After filtering for duration, no choices left */
128 #define CCA_ERRNO_PREF_CHAN	3	/* After filtering for chan pref, no choices left */
129 #define CCA_ERRNO_INTERFER	4	/* After filtering for interference, no choices left */
130 #define CCA_ERRNO_TOO_FEW	5	/* Only 1 channel was input */
131 
132 #define WL_STA_AID(a)		((a) &~ 0xc000)
133 
134 /* Flags for sta_info_t indicating properties of STA */
135 #define WL_STA_BRCM		0x00000001	/* Running a Broadcom driver */
136 #define WL_STA_WME		0x00000002	/* WMM association */
137 #define WL_STA_NONERP		0x00000004	/* No ERP */
138 #define WL_STA_AUTHE		0x00000008	/* Authenticated */
139 #define WL_STA_ASSOC		0x00000010	/* Associated */
140 #define WL_STA_AUTHO		0x00000020	/* Authorized */
141 #define WL_STA_WDS		0x00000040	/* Wireless Distribution System */
142 #define WL_STA_WDS_LINKUP	0x00000080	/* WDS traffic/probes flowing properly */
143 #define WL_STA_PS		0x00000100	/* STA is in power save mode from AP's viewpoint */
144 #define WL_STA_APSD_BE		0x00000200	/* APSD delv/trigger for AC_BE is default enabled */
145 #define WL_STA_APSD_BK		0x00000400	/* APSD delv/trigger for AC_BK is default enabled */
146 #define WL_STA_APSD_VI		0x00000800	/* APSD delv/trigger for AC_VI is default enabled */
147 #define WL_STA_APSD_VO		0x00001000	/* APSD delv/trigger for AC_VO is default enabled */
148 #define WL_STA_N_CAP		0x00002000	/* STA 802.11n capable */
149 #define WL_STA_SCBSTATS		0x00004000	/* Per STA debug stats */
150 #define WL_STA_AMPDU_CAP	0x00008000	/* STA AMPDU capable */
151 #define WL_STA_AMSDU_CAP	0x00010000	/* STA AMSDU capable */
152 #define WL_STA_MIMO_PS		0x00020000	/* mimo ps mode is enabled */
153 #define WL_STA_MIMO_RTS		0x00040000	/* send rts in mimo ps mode */
154 #define WL_STA_RIFS_CAP		0x00080000	/* rifs enabled */
155 #define WL_STA_VHT_CAP		0x00100000	/* STA VHT(11ac) capable */
156 #define WL_STA_WPS		0x00200000	/* WPS state */
157 #define WL_STA_DWDS_CAP		0x01000000	/* DWDS CAP */
158 #define WL_STA_DWDS		0x02000000	/* DWDS active */
159 #define WL_WDS_LINKUP		WL_STA_WDS_LINKUP	/* deprecated */
160 
161 /* STA HT cap fields */
162 #define WL_STA_CAP_LDPC_CODING		0x0001	/* Support for rx of LDPC coded pkts */
163 #define WL_STA_CAP_40MHZ		0x0002  /* FALSE:20Mhz, TRUE:20/40MHZ supported */
164 #define WL_STA_CAP_MIMO_PS_MASK		0x000C  /* Mimo PS mask */
165 #define WL_STA_CAP_MIMO_PS_SHIFT	0x0002	/* Mimo PS shift */
166 #define WL_STA_CAP_MIMO_PS_OFF		0x0003	/* Mimo PS, no restriction */
167 #define WL_STA_CAP_MIMO_PS_RTS		0x0001	/* Mimo PS, send RTS/CTS around MIMO frames */
168 #define WL_STA_CAP_MIMO_PS_ON		0x0000	/* Mimo PS, MIMO disallowed */
169 #define WL_STA_CAP_GF			0x0010	/* Greenfield preamble support */
170 #define WL_STA_CAP_SHORT_GI_20		0x0020	/* 20MHZ short guard interval support */
171 #define WL_STA_CAP_SHORT_GI_40		0x0040	/* 40Mhz short guard interval support */
172 #define WL_STA_CAP_TX_STBC		0x0080	/* Tx STBC support */
173 #define WL_STA_CAP_RX_STBC_MASK		0x0300	/* Rx STBC mask */
174 #define WL_STA_CAP_RX_STBC_SHIFT	8	/* Rx STBC shift */
175 #define WL_STA_CAP_DELAYED_BA		0x0400	/* delayed BA support */
176 #define WL_STA_CAP_MAX_AMSDU		0x0800	/* Max AMSDU size in bytes , 0=3839, 1=7935 */
177 #define WL_STA_CAP_DSSS_CCK		0x1000	/* DSSS/CCK supported by the BSS */
178 #define WL_STA_CAP_PSMP			0x2000	/* Power Save Multi Poll support */
179 #define WL_STA_CAP_40MHZ_INTOLERANT	0x4000	/* 40MHz Intolerant */
180 #define WL_STA_CAP_LSIG_TXOP		0x8000	/* L-SIG TXOP protection support */
181 
182 #define WL_STA_CAP_RX_STBC_NO		0x0	/* no rx STBC support */
183 #define WL_STA_CAP_RX_STBC_ONE_STREAM	0x1	/* rx STBC support of 1 spatial stream */
184 #define WL_STA_CAP_RX_STBC_TWO_STREAM	0x2	/* rx STBC support of 1-2 spatial streams */
185 #define WL_STA_CAP_RX_STBC_THREE_STREAM	0x3	/* rx STBC support of 1-3 spatial streams */
186 
187 /* scb vht flags */
188 #define WL_STA_VHT_LDPCCAP	0x0001
189 #define WL_STA_SGI80		0x0002
190 #define WL_STA_SGI160		0x0004
191 #define WL_STA_VHT_TX_STBCCAP	0x0008
192 #define WL_STA_VHT_RX_STBCCAP	0x0010
193 #define WL_STA_SU_BEAMFORMER	0x0020
194 #define WL_STA_SU_BEAMFORMEE	0x0040
195 #define WL_STA_MU_BEAMFORMER	0x0080
196 #define WL_STA_MU_BEAMFORMEE	0x0100
197 #define WL_STA_VHT_TXOP_PS	0x0200
198 #define WL_STA_HTC_VHT_CAP	0x0400
199 
200 /* Values for TX Filter override mode */
201 #define WLC_TXFILTER_OVERRIDE_DISABLED  0
202 #define WLC_TXFILTER_OVERRIDE_ENABLED   1
203 
204 #define WL_IOCTL_ACTION_GET		0x0
205 #define WL_IOCTL_ACTION_SET		0x1
206 #define WL_IOCTL_ACTION_OVL_IDX_MASK	0x1e
207 #define WL_IOCTL_ACTION_OVL_RSV		0x20
208 #define WL_IOCTL_ACTION_OVL		0x40
209 #define WL_IOCTL_ACTION_MASK		0x7e
210 #define WL_IOCTL_ACTION_OVL_SHIFT	1
211 
212 /* For WLC_SET_INFRA ioctl & infra_configuration iovar SET/GET operations */
213 #define WL_BSSTYPE_INDEP 0
214 #define WL_BSSTYPE_INFRA 1
215 #define WL_BSSTYPE_ANY   2	/* deprecated */
216 #define WL_BSSTYPE_MESH  3
217 
218 /* Bit definitions of mws_active_scan_throttle iovar */
219 
220 #define WL_SCAN_THROTTLE_MASK	0xF
221 
222 #define WL_SCAN_THROTTLE_ASSOCSCAN		(1U << 0)
223 #define WL_SCAN_THROTTLE_ROAMSCAN		(1U << 1)
224 #define WL_SCAN_THROTTLE_OTHER_FW_SCAN		(1U << 2)  /* for other scans like pno etc */
225 #define WL_SCAN_THROTTLE_HOSTSCAN		(1U << 3)
226 
227 #define WL_SCANFLAGS_CLIENT_MASK    0xF00
228 #define WL_SCANFLAGS_CLIENT_SHIFT   8
229 
230 /* Bitmask for scan_type */
231 /* Use lower 16 bit for scan flags, the upper 16 bits are for internal use */
232 #define WL_SCANFLAGS_PASSIVE	0x01	/* force passive scan */
233 #define WL_SCANFLAGS_LOW_PRIO	0x02	/* Low priority scan */
234 #define WL_SCANFLAGS_PROHIBITED	0x04	/* allow scanning prohibited channels */
235 #define WL_SCANFLAGS_OFFCHAN	0x08	/* allow scanning/reporting off-channel APs */
236 #define WL_SCANFLAGS_HOTSPOT	0x10	/* automatic ANQP to hotspot APs */
237 #define WL_SCANFLAGS_SWTCHAN	0x20	/* Force channel switch for differerent bandwidth */
238 #define WL_SCANFLAGS_FORCE_PARALLEL 0x40 /* Force parallel scan even when actcb_fn_t is on.
239 					  * by default parallel scan will be disabled if actcb_fn_t
240 					  * is provided.
241 					  */
242 #define WL_SCANFLAGS_SISO	0x40	/* Use 1 RX chain for scanning */
243 #define WL_SCANFLAGS_MIMO	0x80	/* Force MIMO scanning */
244 #define WL_SCANFLAGS_ASSOCSCAN  0x100   /* Assoc scan    */
245 #define WL_SCANFLAGS_ROAMSCAN   0x200   /* Roam scan     */
246 #define WL_SCANFLAGS_FWSCAN     0x400   /* Other FW scan */
247 #define WL_SCANFLAGS_HOSTSCAN   0x800   /* Host scan     */
248 
249 /* wl_iscan_results status values */
250 #define WL_SCAN_RESULTS_SUCCESS	0
251 #define WL_SCAN_RESULTS_PARTIAL	1
252 #define WL_SCAN_RESULTS_PENDING	2
253 #define WL_SCAN_RESULTS_ABORTED	3
254 #define WL_SCAN_RESULTS_NO_MEM  4
255 
256 #define SCANOL_ENABLED			(1 << 0)
257 #define SCANOL_BCAST_SSID		(1 << 1)
258 #define SCANOL_NOTIFY_BCAST_SSID	(1 << 2)
259 #define SCANOL_RESULTS_PER_CYCLE	(1 << 3)
260 
261 /* scan times in milliseconds */
262 #define SCANOL_HOME_TIME		45	/* for home channel processing */
263 #define SCANOL_ASSOC_TIME		20	/* dwell on a channel while associated */
264 #define SCANOL_UNASSOC_TIME		40	/* dwell on a channel while unassociated */
265 #define SCANOL_PASSIVE_TIME		110	/* listen on a channelfor passive scan */
266 #define SCANOL_AWAY_LIMIT		100	/* max time to be away from home channel */
267 #define SCANOL_IDLE_REST_TIME		40
268 #define SCANOL_IDLE_REST_MULTIPLIER	0
269 #define SCANOL_ACTIVE_REST_TIME		20
270 #define SCANOL_ACTIVE_REST_MULTIPLIER	0
271 #define SCANOL_CYCLE_IDLE_REST_TIME	300000	/* Idle Rest Time between Scan Cycle (msec) */
272 #define SCANOL_CYCLE_IDLE_REST_MULTIPLIER	0	/* Idle Rest Time Multiplier */
273 #define SCANOL_CYCLE_ACTIVE_REST_TIME	200
274 #define SCANOL_CYCLE_ACTIVE_REST_MULTIPLIER	0
275 #define SCANOL_MAX_REST_TIME		3600000	/* max rest time between scan cycle (msec) */
276 #define SCANOL_CYCLE_DEFAULT		0	/* default for Max Scan Cycle, 0 = forever */
277 #define SCANOL_CYCLE_MAX		864000	/* Max Scan Cycle */
278 						/* 10 sec/scan cycle => 100 days */
279 #define SCANOL_NPROBES			2	/* for Active scan; send n probes on each channel */
280 #define SCANOL_NPROBES_MAX		5	/* for Active scan; send n probes on each channel */
281 #define SCANOL_SCAN_START_DLY		10	/* delay start of offload scan (sec) */
282 #define SCANOL_SCAN_START_DLY_MAX	240	/* delay start of offload scan (sec) */
283 #define SCANOL_MULTIPLIER_MAX		10	/* Max Multiplier */
284 #define SCANOL_UNASSOC_TIME_MAX		100	/* max dwell on a channel while unassociated */
285 #define SCANOL_PASSIVE_TIME_MAX		500	/* max listen on a channel for passive scan */
286 #define SCANOL_SSID_MAX			16	/* max supported preferred SSID */
287 
288 /* masks for channel and ssid count */
289 #define WL_SCAN_PARAMS_COUNT_MASK 0x0000ffff
290 #define WL_SCAN_PARAMS_NSSID_SHIFT 16
291 
292 #define WL_SCAN_ACTION_START      1
293 #define WL_SCAN_ACTION_CONTINUE   2
294 #define WL_SCAN_ACTION_ABORT      3
295 #if defined(SIMPLE_ISCAN)
296 #define ISCAN_RETRY_CNT   5
297 #define ISCAN_STATE_IDLE   0
298 #define ISCAN_STATE_SCANING 1
299 #define ISCAN_STATE_PENDING 2
300 #endif /* SIMPLE_ISCAN */
301 
302 #define ANTENNA_NUM_1	1		/* total number of antennas to be used */
303 #define ANTENNA_NUM_2	2
304 #define ANTENNA_NUM_3	3
305 #define ANTENNA_NUM_4	4
306 
307 #define ANT_SELCFG_AUTO		0x80	/* bit indicates antenna sel AUTO */
308 #define ANT_SELCFG_MASK		0x33	/* antenna configuration mask */
309 #define ANT_SELCFG_TX_UNICAST	0	/* unicast tx antenna configuration */
310 #define ANT_SELCFG_RX_UNICAST	1	/* unicast rx antenna configuration */
311 #define ANT_SELCFG_TX_DEF	2	/* default tx antenna configuration */
312 #define ANT_SELCFG_RX_DEF	3	/* default rx antenna configuration */
313 
314 /* interference source detection and identification mode */
315 #define ITFR_MODE_DISABLE	0	/* disable feature */
316 #define ITFR_MODE_MANUAL_ENABLE	1	/* enable manual detection */
317 #define ITFR_MODE_AUTO_ENABLE	2	/* enable auto detection */
318 
319 /* bit definitions for flags in interference source report */
320 #define ITFR_INTERFERENCED	1	/* interference detected */
321 #define ITFR_HOME_CHANNEL	2	/* home channel has interference */
322 #define ITFR_NOISY_ENVIRONMENT	4	/* noisy environemnt so feature stopped */
323 
324 #define WL_NUM_RPI_BINS		8
325 #define WL_RM_TYPE_BASIC	1
326 #define WL_RM_TYPE_CCA		2
327 #define WL_RM_TYPE_RPI		3
328 #define WL_RM_TYPE_ABORT	-1	/* ABORT any in-progress RM request */
329 
330 #define WL_RM_FLAG_PARALLEL	(1<<0)
331 
332 #define WL_RM_FLAG_LATE		(1<<1)
333 #define WL_RM_FLAG_INCAPABLE	(1<<2)
334 #define WL_RM_FLAG_REFUSED	(1<<3)
335 
336 /* flags */
337 #define WLC_ASSOC_REQ_IS_REASSOC 0x01 /* assoc req was actually a reassoc */
338 
339 #define WLC_CIS_DEFAULT	0	/* built-in default */
340 #define WLC_CIS_SROM	1	/* source is sprom */
341 #define WLC_CIS_OTP	2	/* source is otp */
342 
343 /* PCL - Power Control Loop */
344 /* current gain setting is replaced by user input */
345 #define WL_ATTEN_APP_INPUT_PCL_OFF	0	/* turn off PCL, apply supplied input */
346 #define WL_ATTEN_PCL_ON			1	/* turn on PCL */
347 /* current gain setting is maintained */
348 #define WL_ATTEN_PCL_OFF		2	/* turn off PCL. */
349 
350 /* defines used by poweridx iovar - it controls power in a-band */
351 /* current gain setting is maintained */
352 #define WL_PWRIDX_PCL_OFF	-2	/* turn off PCL.  */
353 #define WL_PWRIDX_PCL_ON	-1	/* turn on PCL */
354 #define WL_PWRIDX_LOWER_LIMIT	-2	/* lower limit */
355 #define WL_PWRIDX_UPPER_LIMIT	63	/* upper limit */
356 /* value >= 0 causes
357  *	- input to be set to that value
358  *	- PCL to be off
359  */
360 
361 #define BCM_MAC_STATUS_INDICATION	(0x40010200L)
362 
363 /* Values for TX Filter override mode */
364 #define WLC_TXFILTER_OVERRIDE_DISABLED  0
365 #define WLC_TXFILTER_OVERRIDE_ENABLED   1
366 
367 /* magic pattern used for mismatch driver and wl */
368 #define WL_TXFIFO_SZ_MAGIC	0xa5a5
369 
370 /* check this magic number */
371 #define WLC_IOCTL_MAGIC		0x14e46c77
372 
373 /* bss_info_cap_t flags */
374 #define WL_BSS_FLAGS_FROM_BEACON	0x01	/* bss_info derived from beacon */
375 #define WL_BSS_FLAGS_FROM_CACHE		0x02	/* bss_info collected from cache */
376 #define WL_BSS_FLAGS_RSSI_ONCHANNEL	0x04	/* rssi info received on channel (vs offchannel) */
377 #define WL_BSS_FLAGS_HS20		0x08	/* hotspot 2.0 capable */
378 #define WL_BSS_FLAGS_RSSI_INVALID	0x10	/* BSS contains invalid RSSI */
379 #define WL_BSS_FLAGS_RSSI_INACCURATE	0x20	/* BSS contains inaccurate RSSI */
380 #define WL_BSS_FLAGS_SNR_INVALID	0x40	/* BSS contains invalid SNR */
381 #define WL_BSS_FLAGS_NF_INVALID		0x80	/* BSS contains invalid noise floor */
382 
383 /* bit definitions for bcnflags in wl_bss_info */
384 #define WL_BSS_BCNFLAGS_INTERWORK_PRESENT	0x01 /* beacon had IE, accessnet valid */
385 #define WL_BSS_BCNFLAGS_INTERWORK_PRESENT_VALID 0x02 /* on indicates support for this API */
386 #define WL_BSS_BCNFLAGS_MULTIPLE_BSSID_SET	0x04 /* this AP belongs to a multiple BSSID set */
387 #define WL_BSS_BCNFLAGS_NONTRANSMITTED_BSSID	0x08 /* this AP is the transmitted BSSID */
388 
389 /* bssinfo flag for nbss_cap */
390 #define VHT_BI_SGI_80MHZ			0x00000100
391 #define VHT_BI_80MHZ			    0x00000200
392 #define VHT_BI_160MHZ			    0x00000400
393 #define VHT_BI_8080MHZ			    0x00000800
394 
395 /* reference to wl_ioctl_t struct used by usermode driver */
396 #define ioctl_subtype	set		/* subtype param */
397 #define ioctl_pid	used		/* pid param */
398 #define ioctl_status	needed		/* status param */
399 
400 /* Enumerate crypto algorithms */
401 #define	CRYPTO_ALGO_OFF			0
402 #define	CRYPTO_ALGO_WEP1		1
403 #define	CRYPTO_ALGO_TKIP		2
404 #define	CRYPTO_ALGO_WEP128		3
405 #define CRYPTO_ALGO_AES_CCM		4
406 #define CRYPTO_ALGO_AES_OCB_MSDU	5
407 #define CRYPTO_ALGO_AES_OCB_MPDU	6
408 #if !defined(BCMCCX) && !defined(BCMEXTCCX)
409 #define CRYPTO_ALGO_NALG		7
410 #else
411 #define CRYPTO_ALGO_CKIP		7
412 #define CRYPTO_ALGO_CKIP_MMH	8
413 #define CRYPTO_ALGO_WEP_MMH		9
414 #define CRYPTO_ALGO_NALG		10
415 #endif /* !BCMCCX && !BCMEXTCCX */
416 
417 #define CRYPTO_ALGO_SMS4		11
418 #define CRYPTO_ALGO_PMK			12	/* for 802.1x supp to set PMK before 4-way */
419 #define CRYPTO_ALGO_BIP			13  /* 802.11w BIP (aes cmac) */
420 
421 #define CRYPTO_ALGO_AES_GCM     14  /* 128 bit GCM */
422 #define CRYPTO_ALGO_AES_CCM256  15  /* 256 bit CCM */
423 #define CRYPTO_ALGO_AES_GCM256  16  /* 256 bit GCM */
424 #define CRYPTO_ALGO_BIP_CMAC256 17  /* 256 bit BIP CMAC */
425 #define CRYPTO_ALGO_BIP_GMAC    18  /* 128 bit BIP GMAC */
426 #define CRYPTO_ALGO_BIP_GMAC256 19  /* 256 bit BIP GMAC */
427 
428 #define CRYPTO_ALGO_DYN_SET	0xFFFE /* RT set according to received packet, used by GTKOE */
429 #define CRYPTO_ALGO_NONE        CRYPTO_ALGO_OFF
430 
431 /* algo bit vector */
432 #define KEY_ALGO_MASK(_algo)	(1 << _algo)
433 
434 #if defined(BCMCCX) || defined(BCMEXTCCX)
435 #define KEY_ALGO_MASK_CCX		(KEY_ALGO_MASK(CRYPTO_ALGO_CKIP) | \
436 					KEY_ALGO_MASK(CRYPTO_ALGO_CKIP_MMH) | \
437 					KEY_ALGO_MASK(CRYPTO_ALGO_WEP_MMH))
438 #endif /* defined(BCMCCX) || defined(BCMEXTCCX) */
439 
440 #define KEY_ALGO_MASK_WEP		(KEY_ALGO_MASK(CRYPTO_ALGO_WEP1) | \
441 					KEY_ALGO_MASK(CRYPTO_ALGO_WEP128) | \
442 					KEY_ALGO_MASK(CRYPTO_ALGO_NALG))
443 
444 #define KEY_ALGO_MASK_AES		(KEY_ALGO_MASK(CRYPTO_ALGO_AES_CCM) | \
445 					KEY_ALGO_MASK(CRYPTO_ALGO_AES_CCM256) | \
446 					KEY_ALGO_MASK(CRYPTO_ALGO_AES_GCM) | \
447 					KEY_ALGO_MASK(CRYPTO_ALGO_AES_GCM256))
448 #define KEY_ALGO_MASK_TKIP		(KEY_ALGO_MASK(CRYPTO_ALGO_TKIP))
449 #define KEY_ALGO_MASK_WAPI		(KEY_ALGO_MASK(CRYPTO_ALGO_SMS4))
450 
451 #define WSEC_GEN_MIC_ERROR	0x0001
452 #define WSEC_GEN_REPLAY		0x0002
453 #define WSEC_GEN_ICV_ERROR	0x0004
454 #define WSEC_GEN_MFP_ACT_ERROR	0x0008
455 #define WSEC_GEN_MFP_DISASSOC_ERROR	0x0010
456 #define WSEC_GEN_MFP_DEAUTH_ERROR	0x0020
457 
458 #define WL_SOFT_KEY	(1 << 0)	/* Indicates this key is using soft encrypt */
459 #define WL_PRIMARY_KEY	(1 << 1)	/* Indicates this key is the primary (ie tx) key */
460 #if defined(BCMCCX) || defined(BCMEXTCCX)
461 #define WL_CKIP_KP	(1 << 4)	/* CMIC */
462 #define WL_CKIP_MMH	(1 << 5)	/* CKIP */
463 #else
464 #define WL_KF_RES_4	(1 << 4)	/* Reserved for backward compat */
465 #define WL_KF_RES_5	(1 << 5)	/* Reserved for backward compat */
466 #endif /* BCMCCX || BCMEXTCCX */
467 #define WL_IBSS_PEER_GROUP_KEY	(1 << 6)	/* Indicates a group key for a IBSS PEER */
468 
469 /* wireless security bitvec */
470 #define WSEC_NONE		0x0
471 #define WEP_ENABLED		0x0001
472 #define TKIP_ENABLED		0x0002
473 #define AES_ENABLED		0x0004
474 #define WSEC_SWFLAG		0x0008
475 #ifdef BCMCCX
476 #define CKIP_KP_ENABLED		0x0010
477 #define CKIP_MIC_ENABLED	0x0020
478 #endif /* BCMCCX */
479 #define SES_OW_ENABLED		0x0040	/* to go into transition mode without setting wep */
480 #define SMS4_ENABLED		0x0100
481 #define AES_GCMP256             0x0200
482 
483 #define WSEC_WEP_ENABLED(wsec)	((wsec) & WEP_ENABLED)
484 #define WSEC_TKIP_ENABLED(wsec)	((wsec) & TKIP_ENABLED)
485 #define WSEC_AES_ENABLED(wsec)	((wsec) & AES_ENABLED)
486 
487 /* Macros to check if algorithm is enabled */
488 #define	WSEC_INFO_ALGO_ENABLED(_wi, _algo) \
489 	(_wi).cur_algos & (1 << CRYPTO_ALGO_##_algo)
490 
491 #define WSEC_INFO_ALGO_NONE(_wi) (((_wi).cur_algos) == 0)
492 
493 #ifdef BCMCCX
494 #define WSEC_CKIP_KP_ENABLED(wsec)	((wsec) & CKIP_KP_ENABLED)
495 #define WSEC_CKIP_MIC_ENABLED(wsec)	((wsec) & CKIP_MIC_ENABLED)
496 #define WSEC_CKIP_ENABLED(wsec)	((wsec) & (CKIP_KP_ENABLED|CKIP_MIC_ENABLED))
497 
498 #ifdef BCMWAPI_WPI
499 #define WSEC_ENABLED(wsec) \
500 	((wsec) & (WEP_ENABLED | TKIP_ENABLED | AES_ENABLED | CKIP_KP_ENABLED |	\
501 	  CKIP_MIC_ENABLED | SMS4_ENABLED))
502 #else /* BCMWAPI_WPI */
503 #define WSEC_ENABLED(wsec) \
504 		((wsec) & \
505 		 (WEP_ENABLED | TKIP_ENABLED | AES_ENABLED | CKIP_KP_ENABLED | CKIP_MIC_ENABLED))
506 #endif /* BCMWAPI_WPI */
507 #else /* defined BCMCCX */
508 #ifdef BCMWAPI_WPI
509 #define WSEC_ENABLED(wsec)	((wsec) & (WEP_ENABLED | TKIP_ENABLED | AES_ENABLED | SMS4_ENABLED))
510 #else /* BCMWAPI_WPI */
511 #define WSEC_ENABLED(wsec)	((wsec) & (WEP_ENABLED | TKIP_ENABLED | AES_ENABLED))
512 #endif /* BCMWAPI_WPI */
513 #endif /* BCMCCX */
514 
515 #define WSEC_SES_OW_ENABLED(wsec)	((wsec) & SES_OW_ENABLED)
516 #define WSEC_SMS4_ENABLED(wsec)	((wsec) & SMS4_ENABLED)
517 
518 /* Following macros are not used any more. Just kept here to
519  * avoid build issue in BISON/CARIBOU branch
520  */
521 #define MFP_CAPABLE		0x0200
522 #define MFP_REQUIRED	0x0400
523 #define MFP_SHA256		0x0800 /* a special configuration for STA for WIFI test tool */
524 
525 /* WPA authentication mode bitvec */
526 #define WPA_AUTH_DISABLED		0x0000	/* Legacy (i.e., non-WPA) */
527 #define WPA_AUTH_NONE			0x0001	/* none (IBSS) */
528 #define WPA_AUTH_UNSPECIFIED		0x0002	/* over 802.1x */
529 #define WPA_AUTH_PSK			0x0004	/* Pre-shared key */
530 #if defined(BCMCCX) || defined(BCMEXTCCX)
531 #define WPA_AUTH_CCKM			0x0008	/* CCKM */
532 #define WPA2_AUTH_CCKM			0x0010	/* CCKM2 */
533 #endif	/* BCMCCX || BCMEXTCCX */
534 /* #define WPA_AUTH_8021X 0x0020 */	/* 802.1x, reserved */
535 #define WPA2_AUTH_UNSPECIFIED		0x0040	/* over 802.1x */
536 #define WPA2_AUTH_PSK			0x0080	/* Pre-shared key */
537 #define BRCM_AUTH_PSK			0x0100  /* BRCM specific PSK */
538 #define BRCM_AUTH_DPT			0x0200	/* DPT PSK without group keys */
539 #define WPA_AUTH_WAPI			0x0400
540 #define WAPI_AUTH_NONE			WPA_AUTH_NONE	/* none (IBSS) */
541 #define WAPI_AUTH_UNSPECIFIED		0x0400	/* over AS */
542 #define WAPI_AUTH_PSK			0x0800	/* Pre-shared key */
543 #define WPA2_AUTH_1X_SHA256		0x1000  /* 1X with SHA256 key derivation */
544 #define WPA2_AUTH_TPK			0x2000	/* TDLS Peer Key */
545 #define WPA2_AUTH_FT			0x4000	/* Fast Transition. */
546 #define WPA2_AUTH_PSK_SHA256		0x8000	/* PSK with SHA256 key derivation */
547 #define WPA2_AUTH_FILS_SHA256		0x10000 /* FILS with SHA256 key derivation */
548 #define WPA2_AUTH_FILS_SHA384		0x20000 /* FILS with SHA384 key derivation */
549 #define WPA2_AUTH_IS_FILS(auth) ((auth) & (WPA2_AUTH_FILS_SHA256 | WPA2_AUTH_FILS_SHA384))
550 #define WPA3_AUTH_SAE_PSK		0x40000 /* SAE with 4-way handshake */
551 #define WPA3_AUTH_SAE_FBT		0x80000 /* SAE with FT */
552 #define WPA3_AUTH_OWE			0x100000 /* OWE */
553 #define WPA3_AUTH_1X_SUITE_B_SHA256	0x200000 /* Suite B SHA256 */
554 #define WPA3_AUTH_1X_SUITE_B_SHA384	0x400000 /* Suite B-192 SHA384 */
555 #define WPA3_AUTH_PSK_SHA384		0x800000 /* PSK with SHA384 key derivation */
556 #define WPA3_AUTH_1X_SHA384             0x2000000 /* 1x with SHA384 key derivation */
557 
558 /* WPA2_AUTH_SHA256 not used anymore. Just kept here to avoid build issue in DINGO */
559 #define WPA2_AUTH_SHA256		0x8000
560 #define WPA_AUTH_PFN_ANY		0xffffffff	/* for PFN, match only ssid */
561 
562 #define WPA3_AUTH_SAE                  0x10000 /* SAE authentication with SHA-256 */
563 
564 /* pmkid */
565 #define	MAXPMKID		16
566 
567 /* SROM12 changes */
568 #define	WLC_IOCTL_MAXLEN		8192	/* max length ioctl buffer required */
569 
570 #define WLC_IOCTL_SMLEN		256	/* "small" length ioctl buffer required */
571 #define WLC_IOCTL_MEDLEN		1896	/* "med" length ioctl buffer required */
572 #if defined(LCNCONF) || defined(LCN40CONF) || defined(LCN20CONF)
573 #define WLC_SAMPLECOLLECT_MAXLEN	8192	/* Max Sample Collect buffer */
574 #else
575 #define WLC_SAMPLECOLLECT_MAXLEN	10240	/* Max Sample Collect buffer for two cores */
576 #endif // endif
577 #define WLC_SAMPLECOLLECT_MAXLEN_LCN40  8192
578 
579 #define WLC_IOCTL_NANRESP_MAXLEN        4096u    /* "max" length nan ioctl resp buffer required */
580 #define WLC_IOCTL_NANRESP_MEDLEN        800u     /* "med" length nan ioctl resp buffer required */
581 
582 /* common ioctl definitions */
583 #define WLC_GET_MAGIC				0
584 #define WLC_GET_VERSION				1
585 #define WLC_UP					2
586 #define WLC_DOWN				3
587 #define WLC_GET_LOOP				4
588 #define WLC_SET_LOOP				5
589 #define WLC_DUMP				6
590 #define WLC_GET_MSGLEVEL			7
591 #define WLC_SET_MSGLEVEL			8
592 #define WLC_GET_PROMISC				9
593 #define WLC_SET_PROMISC				10
594 /* #define WLC_OVERLAY_IOCTL			11 */ /* not supported */
595 #define WLC_GET_RATE				12
596 #define WLC_GET_MAX_RATE			13
597 #define WLC_GET_INSTANCE			14
598 /* #define WLC_GET_FRAG				15 */ /* no longer supported */
599 /* #define WLC_SET_FRAG				16 */ /* no longer supported */
600 /* #define WLC_GET_RTS				17 */ /* no longer supported */
601 /* #define WLC_SET_RTS				18 */ /* no longer supported */
602 #define WLC_GET_INFRA				19
603 #define WLC_SET_INFRA				20
604 #define WLC_GET_AUTH				21
605 #define WLC_SET_AUTH				22
606 #define WLC_GET_BSSID				23
607 #define WLC_SET_BSSID				24
608 #define WLC_GET_SSID				25
609 #define WLC_SET_SSID				26
610 #define WLC_RESTART				27
611 #define WLC_TERMINATED				28
612 /* #define WLC_DUMP_SCB				28 */ /* no longer supported */
613 #define WLC_GET_CHANNEL				29
614 #define WLC_SET_CHANNEL				30
615 #define WLC_GET_SRL				31
616 #define WLC_SET_SRL				32
617 #define WLC_GET_LRL				33
618 #define WLC_SET_LRL				34
619 #define WLC_GET_PLCPHDR				35
620 #define WLC_SET_PLCPHDR				36
621 #define WLC_GET_RADIO				37
622 #define WLC_SET_RADIO				38
623 #define WLC_GET_PHYTYPE				39
624 #define WLC_DUMP_RATE				40
625 #define WLC_SET_RATE_PARAMS			41
626 #define WLC_GET_FIXRATE				42
627 #define WLC_SET_FIXRATE				43
628 /* #define WLC_GET_WEP				42 */ /* no longer supported */
629 /* #define WLC_SET_WEP				43 */ /* no longer supported */
630 #define WLC_GET_KEY				44
631 #define WLC_SET_KEY				45
632 #define WLC_GET_REGULATORY			46
633 #define WLC_SET_REGULATORY			47
634 #define WLC_GET_PASSIVE_SCAN			48
635 #define WLC_SET_PASSIVE_SCAN			49
636 #define WLC_SCAN				50
637 #define WLC_SCAN_RESULTS			51
638 #define WLC_DISASSOC				52
639 #define WLC_REASSOC				53
640 #define WLC_GET_ROAM_TRIGGER			54
641 #define WLC_SET_ROAM_TRIGGER			55
642 #define WLC_GET_ROAM_DELTA			56
643 #define WLC_SET_ROAM_DELTA			57
644 #define WLC_GET_ROAM_SCAN_PERIOD		58
645 #define WLC_SET_ROAM_SCAN_PERIOD		59
646 #define WLC_EVM					60	/* diag */
647 #define WLC_GET_TXANT				61
648 #define WLC_SET_TXANT				62
649 #define WLC_GET_ANTDIV				63
650 #define WLC_SET_ANTDIV				64
651 /* #define WLC_GET_TXPWR			65 */ /* no longer supported */
652 /* #define WLC_SET_TXPWR			66 */ /* no longer supported */
653 #define WLC_GET_CLOSED				67
654 #define WLC_SET_CLOSED				68
655 #define WLC_GET_MACLIST				69
656 #define WLC_SET_MACLIST				70
657 #define WLC_GET_RATESET				71
658 #define WLC_SET_RATESET				72
659 /* #define WLC_GET_LOCALE			73 */ /* no longer supported */
660 #define WLC_LONGTRAIN				74
661 #define WLC_GET_BCNPRD				75
662 #define WLC_SET_BCNPRD				76
663 #define WLC_GET_DTIMPRD				77
664 #define WLC_SET_DTIMPRD				78
665 #define WLC_GET_SROM				79
666 #define WLC_SET_SROM				80
667 #define WLC_GET_WEP_RESTRICT			81
668 #define WLC_SET_WEP_RESTRICT			82
669 #define WLC_GET_COUNTRY				83
670 #define WLC_SET_COUNTRY				84
671 #define WLC_GET_PM				85
672 #define WLC_SET_PM				86
673 #define WLC_GET_WAKE				87
674 #define WLC_SET_WAKE				88
675 /* #define WLC_GET_D11CNTS			89 */ /* -> "counters" iovar */
676 #define WLC_GET_FORCELINK			90	/* ndis only */
677 #define WLC_SET_FORCELINK			91	/* ndis only */
678 #define WLC_FREQ_ACCURACY			92	/* diag */
679 #define WLC_CARRIER_SUPPRESS			93	/* diag */
680 #define WLC_GET_PHYREG				94
681 #define WLC_SET_PHYREG				95
682 #define WLC_GET_RADIOREG			96
683 #define WLC_SET_RADIOREG			97
684 #define WLC_GET_REVINFO				98
685 #define WLC_GET_UCANTDIV			99
686 #define WLC_SET_UCANTDIV			100
687 #define WLC_R_REG				101
688 #define WLC_W_REG				102
689 /* #define WLC_DIAG_LOOPBACK			103	old tray diag */
690 /* #define WLC_RESET_D11CNTS			104 */ /* -> "reset_d11cnts" iovar */
691 #define WLC_GET_MACMODE				105
692 #define WLC_SET_MACMODE				106
693 #define WLC_GET_MONITOR				107
694 #define WLC_SET_MONITOR				108
695 #define WLC_GET_GMODE				109
696 #define WLC_SET_GMODE				110
697 #define WLC_GET_LEGACY_ERP			111
698 #define WLC_SET_LEGACY_ERP			112
699 #define WLC_GET_RX_ANT				113
700 #define WLC_GET_CURR_RATESET			114	/* current rateset */
701 #define WLC_GET_SCANSUPPRESS			115
702 #define WLC_SET_SCANSUPPRESS			116
703 #define WLC_GET_AP				117
704 #define WLC_SET_AP				118
705 #define WLC_GET_EAP_RESTRICT			119
706 #define WLC_SET_EAP_RESTRICT			120
707 #define WLC_SCB_AUTHORIZE			121
708 #define WLC_SCB_DEAUTHORIZE			122
709 #define WLC_GET_WDSLIST				123
710 #define WLC_SET_WDSLIST				124
711 #define WLC_GET_ATIM				125
712 #define WLC_SET_ATIM				126
713 #define WLC_GET_RSSI				127
714 #define WLC_GET_PHYANTDIV			128
715 #define WLC_SET_PHYANTDIV			129
716 #define WLC_AP_RX_ONLY				130
717 #define WLC_GET_TX_PATH_PWR			131
718 #define WLC_SET_TX_PATH_PWR			132
719 #define WLC_GET_WSEC				133
720 #define WLC_SET_WSEC				134
721 #define WLC_GET_PHY_NOISE			135
722 #define WLC_GET_BSS_INFO			136
723 #define WLC_GET_PKTCNTS				137
724 #define WLC_GET_LAZYWDS				138
725 #define WLC_SET_LAZYWDS				139
726 #define WLC_GET_BANDLIST			140
727 
728 #define WLC_GET_BAND				141
729 #define WLC_SET_BAND				142
730 #define WLC_SCB_DEAUTHENTICATE			143
731 #define WLC_GET_SHORTSLOT			144
732 #define WLC_GET_SHORTSLOT_OVERRIDE		145
733 #define WLC_SET_SHORTSLOT_OVERRIDE		146
734 #define WLC_GET_SHORTSLOT_RESTRICT		147
735 #define WLC_SET_SHORTSLOT_RESTRICT		148
736 #define WLC_GET_GMODE_PROTECTION		149
737 #define WLC_GET_GMODE_PROTECTION_OVERRIDE	150
738 #define WLC_SET_GMODE_PROTECTION_OVERRIDE	151
739 #define WLC_UPGRADE				152
740 /* #define WLC_GET_MRATE			153 */ /* no longer supported */
741 /* #define WLC_SET_MRATE			154 */ /* no longer supported */
742 #define WLC_GET_IGNORE_BCNS			155
743 #define WLC_SET_IGNORE_BCNS			156
744 #define WLC_GET_SCB_TIMEOUT			157
745 #define WLC_SET_SCB_TIMEOUT			158
746 #define WLC_GET_ASSOCLIST			159
747 #define WLC_GET_CLK				160
748 #define WLC_SET_CLK				161
749 #define WLC_GET_UP				162
750 #define WLC_OUT					163
751 #define WLC_GET_WPA_AUTH			164
752 #define WLC_SET_WPA_AUTH			165
753 #define WLC_GET_UCFLAGS				166
754 #define WLC_SET_UCFLAGS				167
755 #define WLC_GET_PWRIDX				168
756 #define WLC_SET_PWRIDX				169
757 #define WLC_GET_TSSI				170
758 #define WLC_GET_SUP_RATESET_OVERRIDE		171
759 #define WLC_SET_SUP_RATESET_OVERRIDE		172
760 /* #define WLC_SET_FAST_TIMER			173 */ /* no longer supported */
761 /* #define WLC_GET_FAST_TIMER			174 */ /* no longer supported */
762 /* #define WLC_SET_SLOW_TIMER			175 */ /* no longer supported */
763 /* #define WLC_GET_SLOW_TIMER			176 */ /* no longer supported */
764 /* #define WLC_DUMP_PHYREGS			177 */ /* no longer supported */
765 #define WLC_GET_PROTECTION_CONTROL		178
766 #define WLC_SET_PROTECTION_CONTROL		179
767 #define WLC_GET_PHYLIST				180
768 #define WLC_ENCRYPT_STRENGTH			181	/* ndis only */
769 #define WLC_DECRYPT_STATUS			182	/* ndis only */
770 #define WLC_GET_KEY_SEQ				183
771 #define WLC_GET_SCAN_CHANNEL_TIME		184
772 #define WLC_SET_SCAN_CHANNEL_TIME		185
773 #define WLC_GET_SCAN_UNASSOC_TIME		186
774 #define WLC_SET_SCAN_UNASSOC_TIME		187
775 #define WLC_GET_SCAN_HOME_TIME			188
776 #define WLC_SET_SCAN_HOME_TIME			189
777 #define WLC_GET_SCAN_NPROBES			190
778 #define WLC_SET_SCAN_NPROBES			191
779 #define WLC_GET_PRB_RESP_TIMEOUT		192
780 #define WLC_SET_PRB_RESP_TIMEOUT		193
781 #define WLC_GET_ATTEN				194
782 #define WLC_SET_ATTEN				195
783 #define WLC_GET_SHMEM				196	/* diag */
784 #define WLC_SET_SHMEM				197	/* diag */
785 /* #define WLC_GET_GMODE_PROTECTION_CTS		198 */ /* no longer supported */
786 /* #define WLC_SET_GMODE_PROTECTION_CTS		199 */ /* no longer supported */
787 #define WLC_SET_WSEC_TEST			200
788 #define WLC_SCB_DEAUTHENTICATE_FOR_REASON	201
789 #define WLC_TKIP_COUNTERMEASURES		202
790 #define WLC_GET_PIOMODE				203
791 #define WLC_SET_PIOMODE				204
792 #define WLC_SET_ASSOC_PREFER			205
793 #define WLC_GET_ASSOC_PREFER			206
794 #define WLC_SET_ROAM_PREFER			207
795 #define WLC_GET_ROAM_PREFER			208
796 #define WLC_SET_LED				209
797 #define WLC_GET_LED				210
798 #define WLC_GET_INTERFERENCE_MODE		211
799 #define WLC_SET_INTERFERENCE_MODE		212
800 #define WLC_GET_CHANNEL_QA			213
801 #define WLC_START_CHANNEL_QA			214
802 #define WLC_GET_CHANNEL_SEL			215
803 #define WLC_START_CHANNEL_SEL			216
804 #define WLC_GET_VALID_CHANNELS			217
805 #define WLC_GET_FAKEFRAG			218
806 #define WLC_SET_FAKEFRAG			219
807 #define WLC_GET_PWROUT_PERCENTAGE		220
808 #define WLC_SET_PWROUT_PERCENTAGE		221
809 #define WLC_SET_BAD_FRAME_PREEMPT		222
810 #define WLC_GET_BAD_FRAME_PREEMPT		223
811 #define WLC_SET_LEAP_LIST			224
812 #define WLC_GET_LEAP_LIST			225
813 #define WLC_GET_CWMIN				226
814 #define WLC_SET_CWMIN				227
815 #define WLC_GET_CWMAX				228
816 #define WLC_SET_CWMAX				229
817 #define WLC_GET_WET				230
818 #define WLC_SET_WET				231
819 #define WLC_GET_PUB				232
820 /* #define WLC_SET_GLACIAL_TIMER		233 */ /* no longer supported */
821 /* #define WLC_GET_GLACIAL_TIMER		234 */ /* no longer supported */
822 #define WLC_GET_KEY_PRIMARY			235
823 #define WLC_SET_KEY_PRIMARY			236
824 
825 /* #define WLC_DUMP_RADIOREGS			237 */ /* no longer supported */
826 #define WLC_GET_ACI_ARGS			238
827 #define WLC_SET_ACI_ARGS			239
828 #define WLC_UNSET_CALLBACK			240
829 #define WLC_SET_CALLBACK			241
830 #define WLC_GET_RADAR				242
831 #define WLC_SET_RADAR				243
832 #define WLC_SET_SPECT_MANAGMENT			244
833 #define WLC_GET_SPECT_MANAGMENT			245
834 #define WLC_WDS_GET_REMOTE_HWADDR		246	/* handled in wl_linux.c/wl_vx.c */
835 #define WLC_WDS_GET_WPA_SUP			247
836 #define WLC_SET_CS_SCAN_TIMER			248
837 #define WLC_GET_CS_SCAN_TIMER			249
838 #define WLC_MEASURE_REQUEST			250
839 #define WLC_INIT				251
840 #define WLC_SEND_QUIET				252
841 #define WLC_KEEPALIVE			253
842 #define WLC_SEND_PWR_CONSTRAINT			254
843 #define WLC_UPGRADE_STATUS			255
844 #define WLC_CURRENT_PWR				256
845 #define WLC_GET_SCAN_PASSIVE_TIME		257
846 #define WLC_SET_SCAN_PASSIVE_TIME		258
847 #define WLC_LEGACY_LINK_BEHAVIOR		259
848 #define WLC_GET_CHANNELS_IN_COUNTRY		260
849 #define WLC_GET_COUNTRY_LIST			261
850 #define WLC_GET_VAR				262	/* get value of named variable */
851 #define WLC_SET_VAR				263	/* set named variable to value */
852 #define WLC_NVRAM_GET				264	/* deprecated */
853 #define WLC_NVRAM_SET				265
854 #define WLC_NVRAM_DUMP				266
855 #define WLC_REBOOT				267
856 #define WLC_SET_WSEC_PMK			268
857 #define WLC_GET_AUTH_MODE			269
858 #define WLC_SET_AUTH_MODE			270
859 #define WLC_GET_WAKEENTRY			271
860 #define WLC_SET_WAKEENTRY			272
861 #define WLC_NDCONFIG_ITEM			273	/* currently handled in wl_oid.c */
862 #define WLC_NVOTPW				274
863 #define WLC_OTPW				275
864 #define WLC_IOV_BLOCK_GET			276
865 #define WLC_IOV_MODULES_GET			277
866 #define WLC_SOFT_RESET				278
867 #define WLC_GET_ALLOW_MODE			279
868 #define WLC_SET_ALLOW_MODE			280
869 #define WLC_GET_DESIRED_BSSID			281
870 #define WLC_SET_DESIRED_BSSID			282
871 #define	WLC_DISASSOC_MYAP			283
872 #define WLC_GET_NBANDS				284	/* for Dongle EXT_STA support */
873 #define WLC_GET_BANDSTATES			285	/* for Dongle EXT_STA support */
874 #define WLC_GET_WLC_BSS_INFO			286	/* for Dongle EXT_STA support */
875 #define WLC_GET_ASSOC_INFO			287	/* for Dongle EXT_STA support */
876 #define WLC_GET_OID_PHY				288	/* for Dongle EXT_STA support */
877 #define WLC_SET_OID_PHY				289	/* for Dongle EXT_STA support */
878 #define WLC_SET_ASSOC_TIME			290	/* for Dongle EXT_STA support */
879 #define WLC_GET_DESIRED_SSID			291	/* for Dongle EXT_STA support */
880 #define WLC_GET_CHANSPEC			292	/* for Dongle EXT_STA support */
881 #define WLC_GET_ASSOC_STATE			293	/* for Dongle EXT_STA support */
882 #define WLC_SET_PHY_STATE			294	/* for Dongle EXT_STA support */
883 #define WLC_GET_SCAN_PENDING			295	/* for Dongle EXT_STA support */
884 #define WLC_GET_SCANREQ_PENDING			296	/* for Dongle EXT_STA support */
885 #define WLC_GET_PREV_ROAM_REASON		297	/* for Dongle EXT_STA support */
886 #define WLC_SET_PREV_ROAM_REASON		298	/* for Dongle EXT_STA support */
887 #define WLC_GET_BANDSTATES_PI			299	/* for Dongle EXT_STA support */
888 #define WLC_GET_PHY_STATE			300	/* for Dongle EXT_STA support */
889 #define WLC_GET_BSS_WPA_RSN			301	/* for Dongle EXT_STA support */
890 #define WLC_GET_BSS_WPA2_RSN			302	/* for Dongle EXT_STA support */
891 #define WLC_GET_BSS_BCN_TS			303	/* for Dongle EXT_STA support */
892 #define WLC_GET_INT_DISASSOC			304	/* for Dongle EXT_STA support */
893 #define WLC_SET_NUM_PEERS			305     /* for Dongle EXT_STA support */
894 #define WLC_GET_NUM_BSS				306	/* for Dongle EXT_STA support */
895 #define WLC_PHY_SAMPLE_COLLECT			307	/* phy sample collect mode */
896 /* #define WLC_UM_PRIV				308 */	/* Deprecated: usermode driver */
897 #define WLC_GET_CMD				309
898 /* #define WLC_LAST				310 */	/* Never used - can be reused */
899 #define WLC_SET_INTERFERENCE_OVERRIDE_MODE	311	/* set inter mode override */
900 #define WLC_GET_INTERFERENCE_OVERRIDE_MODE	312	/* get inter mode override */
901 /* #define WLC_GET_WAI_RESTRICT	313 */
902 /* #define WLC_SET_WAI_RESTRICT	314 */
903 /* #define WLC_SET_WAI_REKEY	315 */
904 #define WLC_SET_NAT_CONFIG			316	/* for configuring NAT filter driver */
905 #define WLC_GET_NAT_STATE			317
906 #define WLC_GET_TXBF_RATESET			318
907 #define WLC_SET_TXBF_RATESET			319
908 #define WLC_SCAN_CQ				320
909 #define WLC_GET_RSSI_QDB			321 /* qdB portion of the RSSI */
910 #define WLC_DUMP_RATESET			322
911 #define WLC_ECHO				323
912 #define WLC_LAST				324
913 #ifndef EPICTRL_COOKIE
914 #define EPICTRL_COOKIE		0xABADCEDE
915 #endif // endif
916 
917 /* vx wlc ioctl's offset */
918 #define CMN_IOCTL_OFF 0x180
919 
920 /*
921  * custom OID support
922  *
923  * 0xFF - implementation specific OID
924  * 0xE4 - first byte of Broadcom PCI vendor ID
925  * 0x14 - second byte of Broadcom PCI vendor ID
926  * 0xXX - the custom OID number
927  */
928 
929 /* begin 0x1f values beyond the start of the ET driver range. */
930 #define WL_OID_BASE		0xFFE41420
931 
932 /* NDIS overrides */
933 #define OID_WL_GETINSTANCE	(WL_OID_BASE + WLC_GET_INSTANCE)
934 #define OID_WL_GET_FORCELINK	(WL_OID_BASE + WLC_GET_FORCELINK)
935 #define OID_WL_SET_FORCELINK	(WL_OID_BASE + WLC_SET_FORCELINK)
936 #define	OID_WL_ENCRYPT_STRENGTH	(WL_OID_BASE + WLC_ENCRYPT_STRENGTH)
937 #define OID_WL_DECRYPT_STATUS	(WL_OID_BASE + WLC_DECRYPT_STATUS)
938 #define OID_LEGACY_LINK_BEHAVIOR (WL_OID_BASE + WLC_LEGACY_LINK_BEHAVIOR)
939 #define OID_WL_NDCONFIG_ITEM	(WL_OID_BASE + WLC_NDCONFIG_ITEM)
940 
941 /* EXT_STA Dongle suuport */
942 #define OID_STA_CHANSPEC	(WL_OID_BASE + WLC_GET_CHANSPEC)
943 #define OID_STA_NBANDS		(WL_OID_BASE + WLC_GET_NBANDS)
944 #define OID_STA_GET_PHY		(WL_OID_BASE + WLC_GET_OID_PHY)
945 #define OID_STA_SET_PHY		(WL_OID_BASE + WLC_SET_OID_PHY)
946 #define OID_STA_ASSOC_TIME	(WL_OID_BASE + WLC_SET_ASSOC_TIME)
947 #define OID_STA_DESIRED_SSID	(WL_OID_BASE + WLC_GET_DESIRED_SSID)
948 #define OID_STA_SET_PHY_STATE	(WL_OID_BASE + WLC_SET_PHY_STATE)
949 #define OID_STA_SCAN_PENDING	(WL_OID_BASE + WLC_GET_SCAN_PENDING)
950 #define OID_STA_SCANREQ_PENDING (WL_OID_BASE + WLC_GET_SCANREQ_PENDING)
951 #define OID_STA_GET_ROAM_REASON (WL_OID_BASE + WLC_GET_PREV_ROAM_REASON)
952 #define OID_STA_SET_ROAM_REASON (WL_OID_BASE + WLC_SET_PREV_ROAM_REASON)
953 #define OID_STA_GET_PHY_STATE	(WL_OID_BASE + WLC_GET_PHY_STATE)
954 #define OID_STA_INT_DISASSOC	(WL_OID_BASE + WLC_GET_INT_DISASSOC)
955 #define OID_STA_SET_NUM_PEERS	(WL_OID_BASE + WLC_SET_NUM_PEERS)
956 #define OID_STA_GET_NUM_BSS	(WL_OID_BASE + WLC_GET_NUM_BSS)
957 
958 /* NAT filter driver support */
959 #define OID_NAT_SET_CONFIG	(WL_OID_BASE + WLC_SET_NAT_CONFIG)
960 #define OID_NAT_GET_STATE	(WL_OID_BASE + WLC_GET_NAT_STATE)
961 
962 #define WL_DECRYPT_STATUS_SUCCESS	1
963 #define WL_DECRYPT_STATUS_FAILURE	2
964 #define WL_DECRYPT_STATUS_UNKNOWN	3
965 
966 /* allows user-mode app to poll the status of USB image upgrade */
967 #define WLC_UPGRADE_SUCCESS			0
968 #define WLC_UPGRADE_PENDING			1
969 
970 /* WLC_GET_AUTH, WLC_SET_AUTH values */
971 #define WL_AUTH_OPEN_SYSTEM		0	/* d11 open authentication */
972 #define WL_AUTH_SHARED_KEY		1	/* d11 shared authentication */
973 #define WL_AUTH_OPEN_SHARED		2	/* try open, then shared if open failed w/rc 13 */
974 #define WL_AUTH_SAE			3	/* Simultaneous Authentication of Equals (SAE) */
975 #define WL_AUTH_FILS_SHARED		4	/* d11 fils shared key authentication */
976 #define WL_AUTH_FILS_SHARED_PFS		5	/* d11 fils shared key w/ pfs authentication */
977 #define WL_AUTH_FILS_PUBLIC		6	/* d11 fils public key authentication */
978 
979 /* a large TX Power as an init value to factor out of MIN() calculations,
980  * keep low enough to fit in an int8, units are .25 dBm
981  */
982 #define WLC_TXPWR_MAX		(127)	/* ~32 dBm = 1,500 mW */
983 
984 /* "diag" iovar argument and error code */
985 #define WL_DIAG_INTERRUPT			1	/* d11 loopback interrupt test */
986 #define WL_DIAG_LOOPBACK			2	/* d11 loopback data test */
987 #define WL_DIAG_MEMORY				3	/* d11 memory test */
988 #define WL_DIAG_LED				4	/* LED test */
989 #define WL_DIAG_REG				5	/* d11/phy register test */
990 #define WL_DIAG_SROM				6	/* srom read/crc test */
991 #define WL_DIAG_DMA				7	/* DMA test */
992 #define WL_DIAG_LOOPBACK_EXT			8	/* enhenced d11 loopback data test */
993 
994 #define WL_DIAGERR_SUCCESS			0
995 #define WL_DIAGERR_FAIL_TO_RUN			1	/* unable to run requested diag */
996 #define WL_DIAGERR_NOT_SUPPORTED		2	/* diag requested is not supported */
997 #define WL_DIAGERR_INTERRUPT_FAIL		3	/* loopback interrupt test failed */
998 #define WL_DIAGERR_LOOPBACK_FAIL		4	/* loopback data test failed */
999 #define WL_DIAGERR_SROM_FAIL			5	/* srom read failed */
1000 #define WL_DIAGERR_SROM_BADCRC			6	/* srom crc failed */
1001 #define WL_DIAGERR_REG_FAIL			7	/* d11/phy register test failed */
1002 #define WL_DIAGERR_MEMORY_FAIL			8	/* d11 memory test failed */
1003 #define WL_DIAGERR_NOMEM			9	/* diag test failed due to no memory */
1004 #define WL_DIAGERR_DMA_FAIL			10	/* DMA test failed */
1005 
1006 #define WL_DIAGERR_MEMORY_TIMEOUT		11	/* d11 memory test didn't finish in time */
1007 #define WL_DIAGERR_MEMORY_BADPATTERN		12	/* d11 memory test result in bad pattern */
1008 
1009 /* band types */
1010 #define	WLC_BAND_AUTO		0	/* auto-select */
1011 #define	WLC_BAND_5G		1	/* 5 Ghz */
1012 #define	WLC_BAND_2G		2	/* 2.4 Ghz */
1013 #define	WLC_BAND_6G		3	/* 6 Ghz */
1014 #define	WLC_BAND_ALL		4	/* all bands */
1015 
1016 #ifdef CONFIG_BCM43012
1017 #undef WLC_BAND_ALL
1018 #define	WLC_BAND_ALL		3	/* all bands */
1019 #endif // endif
1020 
1021 #define WLC_BAND_INVALID	-1	/* Invalid band */
1022 
1023 /* band range returned by band_range iovar */
1024 #define WL_CHAN_FREQ_RANGE_2G      0
1025 #define WL_CHAN_FREQ_RANGE_5GL     1
1026 #define WL_CHAN_FREQ_RANGE_5GM     2
1027 #define WL_CHAN_FREQ_RANGE_5GH     3
1028 
1029 #define WL_CHAN_FREQ_RANGE_5GLL_5BAND    4
1030 #define WL_CHAN_FREQ_RANGE_5GLH_5BAND    5
1031 #define WL_CHAN_FREQ_RANGE_5GML_5BAND    6
1032 #define WL_CHAN_FREQ_RANGE_5GMH_5BAND    7
1033 #define WL_CHAN_FREQ_RANGE_5GH_5BAND     8
1034 
1035 #define WL_CHAN_FREQ_RANGE_5G_BAND0     1
1036 #define WL_CHAN_FREQ_RANGE_5G_BAND1     2
1037 #define WL_CHAN_FREQ_RANGE_5G_BAND2     3
1038 #define WL_CHAN_FREQ_RANGE_5G_BAND3     4
1039 #define WL_CHAN_FREQ_RANGE_5G_4BAND     5
1040 
1041 /* 6G Subbands */
1042 #define WL_CHAN_FREQ_RANGE_6G_BAND0     5
1043 #define WL_CHAN_FREQ_RANGE_6G_BAND1     6
1044 #define WL_CHAN_FREQ_RANGE_6G_BAND2     7
1045 #define WL_CHAN_FREQ_RANGE_6G_BAND3     8
1046 
1047 /* SROM12 */
1048 #define WL_CHAN_FREQ_RANGE_5G_BAND4 5
1049 #define WL_CHAN_FREQ_RANGE_2G_40 6
1050 #define WL_CHAN_FREQ_RANGE_5G_BAND0_40 7
1051 #define WL_CHAN_FREQ_RANGE_5G_BAND1_40 8
1052 #define WL_CHAN_FREQ_RANGE_5G_BAND2_40 9
1053 #define WL_CHAN_FREQ_RANGE_5G_BAND3_40 10
1054 #define WL_CHAN_FREQ_RANGE_5G_BAND4_40 11
1055 #define WL_CHAN_FREQ_RANGE_5G_BAND0_80 12
1056 #define WL_CHAN_FREQ_RANGE_5G_BAND1_80 13
1057 #define WL_CHAN_FREQ_RANGE_5G_BAND2_80 14
1058 #define WL_CHAN_FREQ_RANGE_5G_BAND3_80 15
1059 #define WL_CHAN_FREQ_RANGE_5G_BAND4_80 16
1060 
1061 #define WL_CHAN_FREQ_RANGE_5G_5BAND	18
1062 #define WL_CHAN_FREQ_RANGE_5G_5BAND_40	19
1063 #define WL_CHAN_FREQ_RANGE_5G_5BAND_80	20
1064 
1065 #define WLC_MACMODE_DISABLED	0	/* MAC list disabled */
1066 #define WLC_MACMODE_DENY	1	/* Deny specified (i.e. allow unspecified) */
1067 #define WLC_MACMODE_ALLOW	2	/* Allow specified (i.e. deny unspecified) */
1068 
1069 /*
1070  * 54g modes (basic bits may still be overridden)
1071  *
1072  * GMODE_LEGACY_B			Rateset: 1b, 2b, 5.5, 11
1073  *					Preamble: Long
1074  *					Shortslot: Off
1075  * GMODE_AUTO				Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54
1076  *					Extended Rateset: 6, 9, 12, 48
1077  *					Preamble: Long
1078  *					Shortslot: Auto
1079  * GMODE_ONLY				Rateset: 1b, 2b, 5.5b, 11b, 18, 24b, 36, 54
1080  *					Extended Rateset: 6b, 9, 12b, 48
1081  *					Preamble: Short required
1082  *					Shortslot: Auto
1083  * GMODE_B_DEFERRED			Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54
1084  *					Extended Rateset: 6, 9, 12, 48
1085  *					Preamble: Long
1086  *					Shortslot: On
1087  * GMODE_PERFORMANCE			Rateset: 1b, 2b, 5.5b, 6b, 9, 11b, 12b, 18, 24b, 36, 48, 54
1088  *					Preamble: Short required
1089  *					Shortslot: On and required
1090  * GMODE_LRS				Rateset: 1b, 2b, 5.5b, 11b
1091  *					Extended Rateset: 6, 9, 12, 18, 24, 36, 48, 54
1092  *					Preamble: Long
1093  *					Shortslot: Auto
1094  */
1095 #define GMODE_LEGACY_B		0
1096 #define GMODE_AUTO		1
1097 #define GMODE_ONLY		2
1098 #define GMODE_B_DEFERRED	3
1099 #define GMODE_PERFORMANCE	4
1100 #define GMODE_LRS		5
1101 #define GMODE_MAX		6
1102 
1103 /* values for PLCPHdr_override */
1104 #define WLC_PLCP_AUTO	-1
1105 #define WLC_PLCP_SHORT	0
1106 #define WLC_PLCP_LONG	1
1107 
1108 /* values for g_protection_override and n_protection_override */
1109 #define WLC_PROTECTION_AUTO		-1
1110 #define WLC_PROTECTION_OFF		0
1111 #define WLC_PROTECTION_ON		1
1112 #define WLC_PROTECTION_MMHDR_ONLY	2
1113 #define WLC_PROTECTION_CTS_ONLY		3
1114 
1115 /* values for g_protection_control and n_protection_control */
1116 #define WLC_PROTECTION_CTL_OFF		0
1117 #define WLC_PROTECTION_CTL_LOCAL	1
1118 #define WLC_PROTECTION_CTL_OVERLAP	2
1119 
1120 /* values for n_protection */
1121 #define WLC_N_PROTECTION_OFF		0
1122 #define WLC_N_PROTECTION_OPTIONAL	1
1123 #define WLC_N_PROTECTION_20IN40		2
1124 #define WLC_N_PROTECTION_MIXEDMODE	3
1125 
1126 /* values for n_preamble_type */
1127 #define WLC_N_PREAMBLE_MIXEDMODE	0
1128 #define WLC_N_PREAMBLE_GF		1
1129 #define WLC_N_PREAMBLE_GF_BRCM          2
1130 
1131 /* values for band specific 40MHz capabilities (deprecated) */
1132 #define WLC_N_BW_20ALL			0
1133 #define WLC_N_BW_40ALL			1
1134 #define WLC_N_BW_20IN2G_40IN5G		2
1135 
1136 #define WLC_BW_20MHZ_BIT		(1<<0)
1137 #define WLC_BW_40MHZ_BIT		(1<<1)
1138 #define WLC_BW_80MHZ_BIT		(1<<2)
1139 #define WLC_BW_160MHZ_BIT		(1<<3)
1140 #define WLC_BW_10MHZ_BIT		(1<<4)
1141 #define WLC_BW_5MHZ_BIT			(1<<5)
1142 #define WLC_BW_2P5MHZ_BIT		(1<<6)
1143 /* Bandwidth capabilities */
1144 #define WLC_BW_CAP_20MHZ		(WLC_BW_20MHZ_BIT)
1145 #define WLC_BW_CAP_40MHZ		(WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT)
1146 #define WLC_BW_CAP_80MHZ		(WLC_BW_80MHZ_BIT|WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT)
1147 #define WLC_BW_CAP_160MHZ		(WLC_BW_160MHZ_BIT|WLC_BW_80MHZ_BIT| \
1148 	WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT)
1149 #define WLC_BW_CAP_2P5MHZ		(WLC_BW_2P5MHZ_BIT)
1150 #define WLC_BW_CAP_5MHZ			(WLC_BW_5MHZ_BIT)
1151 #define WLC_BW_CAP_10MHZ		(WLC_BW_10MHZ_BIT)
1152 #define WLC_BW_CAP_UNRESTRICTED		0xFF
1153 
1154 #define WL_BW_CAP_20MHZ(bw_cap)	(((bw_cap) & WLC_BW_20MHZ_BIT) ? TRUE : FALSE)
1155 #define WL_BW_CAP_40MHZ(bw_cap)	(((bw_cap) & WLC_BW_40MHZ_BIT) ? TRUE : FALSE)
1156 #define WL_BW_CAP_80MHZ(bw_cap)	(((bw_cap) & WLC_BW_80MHZ_BIT) ? TRUE : FALSE)
1157 #define WL_BW_CAP_160MHZ(bw_cap)(((bw_cap) & WLC_BW_160MHZ_BIT) ? TRUE : FALSE)
1158 #define WL_BW_CAP_2P5MHZ(bw_cap)(((bw_cap) & WLC_BW_2P5MHZ_BIT) ? TRUE : FALSE)
1159 #define WL_BW_CAP_5MHZ(bw_cap)	(((bw_cap) & WLC_BW_5MHZ_BIT) ? TRUE : FALSE)
1160 #define WL_BW_CAP_10MHZ(bw_cap)	(((bw_cap) & WLC_BW_10MHZ_BIT) ? TRUE : FALSE)
1161 /* values to force tx/rx chain */
1162 #define WLC_N_TXRX_CHAIN0		0
1163 #define WLC_N_TXRX_CHAIN1		1
1164 
1165 /* bitflags for SGI support (sgi_rx iovar) */
1166 #define WLC_N_SGI_20			0x01
1167 #define WLC_N_SGI_40			0x02
1168 #define WLC_VHT_SGI_80			0x04
1169 #define WLC_VHT_SGI_160			0x08
1170 
1171 /* when sgi_tx==WLC_SGI_ALL, bypass rate selection, enable sgi for all mcs */
1172 #define WLC_SGI_ALL				0x02
1173 
1174 #define LISTEN_INTERVAL			10
1175 /* interference mitigation options */
1176 #define	INTERFERE_OVRRIDE_OFF	-1	/* interference override off */
1177 #define	INTERFERE_NONE	0	/* off */
1178 #define	NON_WLAN	1	/* foreign/non 802.11 interference, no auto detect */
1179 #define	WLAN_MANUAL	2	/* ACI: no auto detection */
1180 #define	WLAN_AUTO	3	/* ACI: auto detect */
1181 #define	WLAN_AUTO_W_NOISE	4	/* ACI: auto - detect and non 802.11 interference */
1182 #define AUTO_ACTIVE	(1 << 7) /* Auto is currently active */
1183 
1184 /* interfernece mode bit-masks (ACPHY) */
1185 #define ACPHY_ACI_GLITCHBASED_DESENSE 1   /* bit 0 */
1186 #define ACPHY_ACI_HWACI_PKTGAINLMT 2      /* bit 1 */
1187 #define ACPHY_ACI_W2NB_PKTGAINLMT 4       /* bit 2 */
1188 #define ACPHY_ACI_PREEMPTION 8            /* bit 3 */
1189 #define ACPHY_HWACI_MITIGATION 16         /* bit 4 */
1190 #define ACPHY_LPD_PREEMPTION 32           /* bit 5 */
1191 #define ACPHY_HWOBSS_MITIGATION 64        /* bit 6 */
1192 #define ACPHY_ACI_NBDETECT 128            /* bit 7 */
1193 #define ACPHY_ACI_MAX_MODE 255
1194 
1195 /* AP environment */
1196 #define AP_ENV_DETECT_NOT_USED		0 /* We aren't using AP environment detection */
1197 #define AP_ENV_DENSE			1 /* "Corporate" or other AP dense environment */
1198 #define AP_ENV_SPARSE			2 /* "Home" or other sparse environment */
1199 #define AP_ENV_INDETERMINATE		3 /* AP environment hasn't been identified */
1200 
1201 #define TRIGGER_NOW				0
1202 #define TRIGGER_CRS				0x01
1203 #define TRIGGER_CRSDEASSERT			0x02
1204 #define TRIGGER_GOODFCS				0x04
1205 #define TRIGGER_BADFCS				0x08
1206 #define TRIGGER_BADPLCP				0x10
1207 #define TRIGGER_CRSGLITCH			0x20
1208 
1209 #define	WL_SAMPLEDATA_HEADER_TYPE	1
1210 #define WL_SAMPLEDATA_HEADER_SIZE	80	/* sample collect header size (bytes) */
1211 #define	WL_SAMPLEDATA_TYPE		2
1212 #define	WL_SAMPLEDATA_SEQ		0xff	/* sequence # */
1213 #define	WL_SAMPLEDATA_MORE_DATA		0x100	/* more data mask */
1214 
1215 /* WL_OTA START */
1216 #define WL_OTA_ARG_PARSE_BLK_SIZE	1200
1217 #define WL_OTA_TEST_MAX_NUM_RATE	30
1218 #define WL_OTA_TEST_MAX_NUM_SEQ		100
1219 #define WL_OTA_TEST_MAX_NUM_RSSI	85
1220 #define WL_THRESHOLD_LO_BAND	70	/* range from 5250MHz - 5350MHz */
1221 
1222 /* radar iovar SET defines */
1223 #define WL_RADAR_DETECTOR_OFF		0	/* radar detector off */
1224 #define WL_RADAR_DETECTOR_ON		1	/* radar detector on */
1225 #define WL_RADAR_SIMULATED		2	/* force radar detector to declare
1226 						 * detection once
1227 						 */
1228 #define WL_RADAR_SIMULATED_SC		3	/* force radar detector to declare
1229 						 * detection once on scan core
1230 						 * if available and active
1231 						 */
1232 #define WL_RSSI_ANT_VERSION	1	/* current version of wl_rssi_ant_t */
1233 #define WL_ANT_RX_MAX		2	/* max 2 receive antennas */
1234 #define WL_ANT_HT_RX_MAX	4	/* max 4 receive antennas/cores */
1235 #define WL_ANT_IDX_1		0	/* antenna index 1 */
1236 #define WL_ANT_IDX_2		1	/* antenna index 2 */
1237 
1238 #ifndef WL_RSSI_ANT_MAX
1239 #define WL_RSSI_ANT_MAX		4	/* max possible rx antennas */
1240 #elif WL_RSSI_ANT_MAX != 4
1241 #error "WL_RSSI_ANT_MAX does not match"
1242 #endif // endif
1243 
1244 /* dfs_status iovar-related defines */
1245 
1246 /* cac - channel availability check,
1247  * ism - in-service monitoring
1248  * csa - channel switching announcement
1249  */
1250 
1251 /* cac state values */
1252 #define WL_DFS_CACSTATE_IDLE		0	/* state for operating in non-radar channel */
1253 #define	WL_DFS_CACSTATE_PREISM_CAC	1	/* CAC in progress */
1254 #define WL_DFS_CACSTATE_ISM		2	/* ISM in progress */
1255 #define WL_DFS_CACSTATE_CSA		3	/* csa */
1256 #define WL_DFS_CACSTATE_POSTISM_CAC	4	/* ISM CAC */
1257 #define WL_DFS_CACSTATE_PREISM_OOC	5	/* PREISM OOC */
1258 #define WL_DFS_CACSTATE_POSTISM_OOC	6	/* POSTISM OOC */
1259 #define WL_DFS_CACSTATES		7	/* this many states exist */
1260 
1261 /* Defines used with channel_bandwidth for curpower */
1262 #define WL_BW_20MHZ		0
1263 #define WL_BW_40MHZ		1
1264 #define WL_BW_80MHZ		2
1265 #define WL_BW_160MHZ		3
1266 #define WL_BW_8080MHZ		4
1267 #define WL_BW_2P5MHZ		5
1268 #define WL_BW_5MHZ		6
1269 #define WL_BW_10MHZ		7
1270 
1271 /* tx_power_t.flags bits */
1272 #define WL_TX_POWER_F_ENABLED	1
1273 #define WL_TX_POWER_F_HW		2
1274 #define WL_TX_POWER_F_MIMO		4
1275 #define WL_TX_POWER_F_SISO		8
1276 #define WL_TX_POWER_F_HT		0x10
1277 #define WL_TX_POWER_F_VHT		0x20
1278 #define WL_TX_POWER_F_OPENLOOP		0x40
1279 #define WL_TX_POWER_F_PROP11NRATES	0x80
1280 #define WL_TX_POWER_F_UNIT_QDBM		0x100
1281 #define WL_TX_POWER_F_TXCAP		0x200
1282 /* Message levels */
1283 #define WL_ERROR_VAL		0x00000001
1284 #define WL_TRACE_VAL		0x00000002
1285 #define WL_PRHDRS_VAL		0x00000004
1286 #define WL_PRPKT_VAL		0x00000008
1287 #define WL_INFORM_VAL		0x00000010
1288 #define WL_TMP_VAL		0x00000020
1289 #define WL_OID_VAL		0x00000040
1290 #define WL_RATE_VAL		0x00000080
1291 #define WL_ASSOC_VAL		0x00000100
1292 #define WL_PRUSR_VAL		0x00000200
1293 #define WL_PS_VAL		0x00000400
1294 #define WL_TXPWR_VAL		0x00000000	/* retired in TOT on 6/10/2009 */
1295 #define WL_MODE_SWITCH_VAL	0x00000800 /* Using retired TXPWR val */
1296 #define WL_PORT_VAL		0x00001000
1297 #define WL_DUAL_VAL		0x00002000
1298 #define WL_WSEC_VAL		0x00004000
1299 #define WL_WSEC_DUMP_VAL	0x00008000
1300 #define WL_LOG_VAL		0x00010000
1301 #define WL_NRSSI_VAL		0x00000000	/* retired in TOT on 6/10/2009 */
1302 #define WL_BCNTRIM_VAL		0x00020000	/* Using retired NRSSI VAL */
1303 #define WL_LOFT_VAL		0x00000000	/* retired in TOT on 6/10/2009 */
1304 #define WL_PFN_VAL		0x00040000 /* Using retired LOFT_VAL */
1305 #define WL_REGULATORY_VAL	0x00080000
1306 #define WL_CSA_VAL		0x00080000  /* Reusing REGULATORY_VAL due to lackof bits */
1307 #define WL_TAF_VAL		0x00100000
1308 #define WL_RADAR_VAL		0x00000000	/* retired in TOT on 6/10/2009 */
1309 #define WL_WDI_VAL		0x00200000	/* Using retired WL_RADAR_VAL VAL */
1310 #define WL_MPC_VAL		0x00400000
1311 #define WL_APSTA_VAL		0x00800000
1312 #define WL_DFS_VAL		0x01000000
1313 #define WL_BA_VAL		0x00000000	/* retired in TOT on 6/14/2010 */
1314 #define WL_MUMIMO_VAL		0x02000000      /* Using retired WL_BA_VAL */
1315 #define WL_ACI_VAL		0x04000000
1316 #define WL_PRMAC_VAL		0x04000000
1317 #define WL_MBSS_VAL		0x04000000
1318 #define WL_CAC_VAL		0x08000000
1319 #define WL_AMSDU_VAL		0x10000000
1320 #define WL_AMPDU_VAL		0x20000000
1321 #define WL_FFPLD_VAL		0x40000000
1322 #define WL_ROAM_EXP_VAL		0x80000000
1323 
1324 /* wl_msg_level is full. For new bits take the next one and AND with
1325  * wl_msg_level2 in wl_dbg.h
1326  */
1327 #define WL_DPT_VAL		0x00000001
1328 /* re-using WL_DPT_VAL */
1329 /* re-using WL_MESH_VAL */
1330 #define WL_NATOE_VAL		0x00000001
1331 #define WL_MESH_VAL		0x00000001
1332 #define WL_SCAN_VAL		0x00000002
1333 #define WL_WOWL_VAL		0x00000004
1334 #define WL_COEX_VAL		0x00000008
1335 #define WL_RTDC_VAL		0x00000010
1336 #define WL_PROTO_VAL		0x00000020
1337 #define WL_SWDIV_VAL		0x00000040
1338 #define WL_CHANINT_VAL		0x00000080
1339 #define WL_WMF_VAL		0x00000100
1340 #define WL_P2P_VAL		0x00000200
1341 #define WL_ITFR_VAL		0x00000400
1342 #define WL_MCHAN_VAL		0x00000800
1343 #define WL_TDLS_VAL		0x00001000
1344 #define WL_MCNX_VAL		0x00002000
1345 #define WL_PROT_VAL		0x00004000
1346 #define WL_PSTA_VAL		0x00008000
1347 #define WL_TSO_VAL		0x00010000
1348 #define WL_TRF_MGMT_VAL		0x00020000
1349 #define WL_LPC_VAL	        0x00040000
1350 #define WL_L2FILTER_VAL		0x00080000
1351 #define WL_TXBF_VAL		0x00100000
1352 #define WL_P2PO_VAL		0x00200000
1353 #define WL_TBTT_VAL		0x00400000
1354 #define WL_FBT_VAL		0x00800000
1355 #define WL_RRM_VAL		0x00800000 /* reuse */
1356 #define WL_MQ_VAL		0x01000000
1357 /* This level is currently used in Phoenix2 only */
1358 #define WL_SRSCAN_VAL		0x02000000
1359 #define WL_WNM_VAL		0x04000000
1360 /* re-using WL_WNM_VAL for MBO */
1361 #define WL_MBO_VAL		0x04000000
1362 /* re-using WL_SRSCAN_VAL */
1363 #define WL_RANDMAC_VAL		0x02000000
1364 #define WL_UNUSED_VAL		0x10000000	/* Was a duplicate for WL_LPC_VAL. Removed */
1365 #define WL_NET_DETECT_VAL	0x20000000
1366 #define WL_OCE_VAL  0x20000000 /* reuse */
1367 #define WL_PCIE_VAL		0x40000000
1368 #define WL_PMDUR_VAL	0x80000000
1369 /* use top-bit for WL_TIME_STAMP_VAL because this is a modifier
1370  * rather than a message-type of its own
1371  */
1372 #define WL_TIMESTAMP_VAL        0x80000000
1373 
1374 /* wl_msg_level2 is full. For new bits take the next one and AND with
1375  * wl_msg_level3 in wl_dbg.h
1376  */
1377 #define WL_ASSOC_AP_VAL		0x00000001
1378 #define WL_FILS_VAL		0x00000002
1379 #define WL_HE_VAL		0x00000004
1380 
1381 /* max # of leds supported by GPIO (gpio pin# == led index#) */
1382 #define	WL_LED_NUMGPIO		32	/* gpio 0-31 */
1383 
1384 /* led per-pin behaviors */
1385 #define	WL_LED_OFF		0		/* always off */
1386 #define	WL_LED_ON		1		/* always on */
1387 #define	WL_LED_ACTIVITY		2		/* activity */
1388 #define	WL_LED_RADIO		3		/* radio enabled */
1389 #define	WL_LED_ARADIO		4		/* 5  Ghz radio enabled */
1390 #define	WL_LED_BRADIO		5		/* 2.4Ghz radio enabled */
1391 #define	WL_LED_BGMODE		6		/* on if gmode, off if bmode */
1392 #define	WL_LED_WI1		7
1393 #define	WL_LED_WI2		8
1394 #define	WL_LED_WI3		9
1395 #define	WL_LED_ASSOC		10		/* associated state indicator */
1396 #define	WL_LED_INACTIVE		11		/* null behavior (clears default behavior) */
1397 #define	WL_LED_ASSOCACT		12		/* on when associated; blink fast for activity */
1398 #define WL_LED_WI4		13
1399 #define WL_LED_WI5		14
1400 #define	WL_LED_BLINKSLOW	15		/* blink slow */
1401 #define	WL_LED_BLINKMED		16		/* blink med */
1402 #define	WL_LED_BLINKFAST	17		/* blink fast */
1403 #define	WL_LED_BLINKCUSTOM	18		/* blink custom */
1404 #define	WL_LED_BLINKPERIODIC	19		/* blink periodic (custom 1000ms / off 400ms) */
1405 #define WL_LED_ASSOC_WITH_SEC	20		/* when connected with security */
1406 						/* keep on for 300 sec */
1407 #define WL_LED_START_OFF	21		/* off upon boot, could be turned on later */
1408 #define WL_LED_WI6		22
1409 #define WL_LED_WI7		23
1410 #define WL_LED_WI8		24
1411 #define	WL_LED_NUMBEHAVIOR	25
1412 
1413 /* led behavior numeric value format */
1414 #define	WL_LED_BEH_MASK		0x3f		/* behavior mask */
1415 #define	WL_LED_PMU_OVERRIDE	0x40		/* need to set PMU Override bit for the GPIO */
1416 #define	WL_LED_AL_MASK		0x80		/* activelow (polarity) bit */
1417 
1418 /* number of bytes needed to define a proper bit mask for MAC event reporting */
1419 #define BCMIO_ROUNDUP(x, y)	((((x) + ((y) - 1)) / (y)) * (y))
1420 #define BCMIO_NBBY		8
1421 #define WL_EVENTING_MASK_LEN	16
1422 
1423 #define WL_EVENTING_MASK_EXT_LEN \
1424     MAX(WL_EVENTING_MASK_LEN, (ROUNDUP(WLC_E_LAST, NBBY)/NBBY))
1425 
1426 /* join preference types */
1427 #define WL_JOIN_PREF_RSSI	1	/* by RSSI */
1428 #define WL_JOIN_PREF_WPA	2	/* by akm and ciphers */
1429 #define WL_JOIN_PREF_BAND	3	/* by 802.11 band */
1430 #define WL_JOIN_PREF_RSSI_DELTA	4	/* by 802.11 band only if RSSI delta condition matches */
1431 #define WL_JOIN_PREF_TRANS_PREF	5	/* defined by requesting AP */
1432 
1433 /* band preference */
1434 #define WLJP_BAND_ASSOC_PREF	255	/* use what WLC_SET_ASSOC_PREFER ioctl specifies */
1435 
1436 /* any multicast cipher suite */
1437 #define WL_WPA_ACP_MCS_ANY	"\x00\x00\x00\x00"
1438 
1439 /* 802.11h measurement types */
1440 #define WLC_MEASURE_TPC			1
1441 #define WLC_MEASURE_CHANNEL_BASIC	2
1442 #define WLC_MEASURE_CHANNEL_CCA		3
1443 #define WLC_MEASURE_CHANNEL_RPI		4
1444 
1445 /* regulatory enforcement levels */
1446 #define SPECT_MNGMT_OFF			0		/* both 11h and 11d disabled */
1447 #define SPECT_MNGMT_LOOSE_11H		1		/* allow non-11h APs in scan lists */
1448 #define SPECT_MNGMT_STRICT_11H		2		/* prune out non-11h APs from scan list */
1449 #define SPECT_MNGMT_STRICT_11D		3		/* switch to 802.11D mode */
1450 /* SPECT_MNGMT_LOOSE_11H_D - same as SPECT_MNGMT_LOOSE with the exception that Country IE
1451  * adoption is done regardless of capability spectrum_management
1452  */
1453 #define SPECT_MNGMT_LOOSE_11H_D		4		/* operation defined above */
1454 
1455 /* bit position in per_chan_info; these depend on current country/regulatory domain */
1456 #define WL_CHAN_VALID_HW           (1u << 0)     /* valid with current HW */
1457 #define WL_CHAN_VALID_SW           (1u << 1)     /* valid with current country setting */
1458 #define WL_CHAN_BAND_5G            (1u << 2)     /* 5GHz-band channel */
1459 #define WL_CHAN_RADAR              (1u << 3)     /* radar sensitive channel */
1460 #define WL_CHAN_INACTIVE           (1u << 4)     /* temporarily inactive due to radar */
1461 #define WL_CHAN_PASSIVE            (1u << 5)     /* channel is in passive mode */
1462 #define WL_CHAN_RESTRICTED         (1u << 6)     /* restricted use channel */
1463 #define WL_CHAN_RADAR_EU_WEATHER   (1u << 7)     /* EU Radar weather channel.
1464 						  * Implies an EU Radar channel.
1465 						  */
1466 #define WL_CHAN_CLM_RESTRICTED     (1u << 8)     /* channel restricted in CLM (i.e. by default) */
1467 #define WL_CHAN_BAND_6G            (1u << 9)     /* 6GHz-band channel */
1468 #define WL_CHAN_OOS_SHIFT          24u           /* shift for OOS field */
1469 #define WL_CHAN_OOS_MASK           0xFF000000u   /* field specifying minutes remaining for this
1470 						  * channel's out-of-service period due to radar
1471 						  * detection
1472 						  */
1473 
1474 /* BTC mode used by "btc_mode" iovar */
1475 #define	WL_BTC_DISABLE		0	/* disable BT coexistence */
1476 #define WL_BTC_FULLTDM      1	/* full TDM COEX */
1477 #define WL_BTC_ENABLE       1	/* full TDM COEX to maintain backward compatiblity */
1478 #define WL_BTC_PREMPT      2    /* full TDM COEX with preemption */
1479 #define WL_BTC_LITE        3	/* light weight coex for large isolation platform */
1480 #define WL_BTC_PARALLEL		4   /* BT and WLAN run in parallel with separate antenna  */
1481 #define WL_BTC_HYBRID		5   /* hybrid coex, only ack is allowed to transmit in BT slot */
1482 #define WL_BTC_DEFAULT		8	/* set the default mode for the device */
1483 #define WL_INF_BTC_DISABLE      0
1484 #define WL_INF_BTC_ENABLE       1
1485 #define WL_INF_BTC_AUTO         3
1486 
1487 /* BTC wire used by "btc_wire" iovar */
1488 #define	WL_BTC_DEFWIRE		0	/* use default wire setting */
1489 #define WL_BTC_2WIRE		2	/* use 2-wire BTC */
1490 #define WL_BTC_3WIRE		3	/* use 3-wire BTC */
1491 #define WL_BTC_4WIRE		4	/* use 4-wire BTC */
1492 
1493 /* BTC flags: BTC configuration that can be set by host */
1494 #define WL_BTC_FLAG_PREMPT               (1 << 0)
1495 #define WL_BTC_FLAG_BT_DEF               (1 << 1)
1496 #define WL_BTC_FLAG_ACTIVE_PROT          (1 << 2)
1497 #define WL_BTC_FLAG_SIM_RSP              (1 << 3)
1498 #define WL_BTC_FLAG_PS_PROTECT           (1 << 4)
1499 #define WL_BTC_FLAG_SIM_TX_LP	         (1 << 5)
1500 #define WL_BTC_FLAG_ECI                  (1 << 6)
1501 #define WL_BTC_FLAG_LIGHT                (1 << 7)
1502 #define WL_BTC_FLAG_PARALLEL             (1 << 8)
1503 
1504 /* maximum channels returned by the get valid channels iovar */
1505 #define WL_NUMCHANNELS		64
1506 
1507 /* max number of chanspecs (used by the iovar to calc. buf space) */
1508 #ifdef WL11AC_80P80
1509 #define WL_NUMCHANSPECS 206
1510 #else
1511 #define WL_NUMCHANSPECS 110
1512 #endif // endif
1513 
1514 /* WDS link local endpoint WPA role */
1515 #define WL_WDS_WPA_ROLE_AUTH	0	/* authenticator */
1516 #define WL_WDS_WPA_ROLE_SUP	1	/* supplicant */
1517 #define WL_WDS_WPA_ROLE_AUTO	255	/* auto, based on mac addr value */
1518 
1519 /* Base offset values */
1520 #define WL_PKT_FILTER_BASE_PKT   0
1521 #define WL_PKT_FILTER_BASE_END   1
1522 #define WL_PKT_FILTER_BASE_D11_H 2 /* May be removed */
1523 #define WL_PKT_FILTER_BASE_D11_D 3 /* May be removed */
1524 #define WL_PKT_FILTER_BASE_ETH_H 4
1525 #define WL_PKT_FILTER_BASE_ETH_D 5
1526 #define WL_PKT_FILTER_BASE_ARP_H 6
1527 #define WL_PKT_FILTER_BASE_ARP_D 7 /* May be removed */
1528 #define WL_PKT_FILTER_BASE_IP4_H 8
1529 #define WL_PKT_FILTER_BASE_IP4_D 9
1530 #define WL_PKT_FILTER_BASE_IP6_H 10
1531 #define WL_PKT_FILTER_BASE_IP6_D 11
1532 #define WL_PKT_FILTER_BASE_TCP_H 12
1533 #define WL_PKT_FILTER_BASE_TCP_D 13 /* May be removed */
1534 #define WL_PKT_FILTER_BASE_UDP_H 14
1535 #define WL_PKT_FILTER_BASE_UDP_D 15
1536 #define WL_PKT_FILTER_BASE_IP6_P 16
1537 #define WL_PKT_FILTER_BASE_COUNT 17 /* May be removed */
1538 
1539 /* String mapping for bases that may be used by applications or debug */
1540 #define WL_PKT_FILTER_BASE_NAMES \
1541 	{ "START", WL_PKT_FILTER_BASE_PKT },   \
1542 	{ "END",   WL_PKT_FILTER_BASE_END },   \
1543 	{ "ETH_H", WL_PKT_FILTER_BASE_ETH_H }, \
1544 	{ "ETH_D", WL_PKT_FILTER_BASE_ETH_D }, \
1545 	{ "D11_H", WL_PKT_FILTER_BASE_D11_H }, \
1546 	{ "D11_D", WL_PKT_FILTER_BASE_D11_D }, \
1547 	{ "ARP_H", WL_PKT_FILTER_BASE_ARP_H }, \
1548 	{ "IP4_H", WL_PKT_FILTER_BASE_IP4_H }, \
1549 	{ "IP4_D", WL_PKT_FILTER_BASE_IP4_D }, \
1550 	{ "IP6_H", WL_PKT_FILTER_BASE_IP6_H }, \
1551 	{ "IP6_D", WL_PKT_FILTER_BASE_IP6_D }, \
1552 	{ "IP6_P", WL_PKT_FILTER_BASE_IP6_P }, \
1553 	{ "TCP_H", WL_PKT_FILTER_BASE_TCP_H }, \
1554 	{ "TCP_D", WL_PKT_FILTER_BASE_TCP_D }, \
1555 	{ "UDP_H", WL_PKT_FILTER_BASE_UDP_H }, \
1556 	{ "UDP_D", WL_PKT_FILTER_BASE_UDP_D }
1557 
1558 /* Flags for a pattern list element */
1559 #define WL_PKT_FILTER_MFLAG_NEG 0x0001
1560 
1561 /*
1562  * Packet engine interface
1563  */
1564 
1565 #define WL_PKTENG_PER_TX_START			0x01
1566 #define WL_PKTENG_PER_TX_STOP			0x02
1567 #define WL_PKTENG_PER_RX_START			0x04
1568 #define WL_PKTENG_PER_RX_WITH_ACK_START		0x05
1569 #define WL_PKTENG_PER_TX_WITH_ACK_START		0x06
1570 #define WL_PKTENG_PER_RX_STOP			0x08
1571 #define WL_PKTENG_PER_RU_TX_START		0x09
1572 #define WL_PKTENG_PER_TRIG_TX_START		0x0a
1573 #define WL_PKTENG_PER_MASK			0xff
1574 
1575 #define WL_PKTENG_SYNCHRONOUS			0x100	/* synchronous flag */
1576 #define WL_PKTENG_SYNCHRONOUS_UNBLK		0x200	/* synchronous unblock flag */
1577 #define WL_PKTENG_COLLECT			0x400	/* Save last Rx'ed packet */
1578 #ifdef PKTENG_LONGPKTSZ
1579 /* max pktsz limit for pkteng */
1580 #define WL_PKTENG_MAXPKTSZ				PKTENG_LONGPKTSZ
1581 #else
1582 #define WL_PKTENG_MAXPKTSZ				16384
1583 #endif // endif
1584 
1585 #define NUM_80211b_RATES	4
1586 #define NUM_80211ag_RATES	8
1587 #define NUM_80211n_RATES	32
1588 #define NUM_80211_RATES		(NUM_80211b_RATES+NUM_80211ag_RATES+NUM_80211n_RATES)
1589 
1590 /*
1591  * WOWL capability/override settings
1592  */
1593 #define WL_WOWL_MAGIC           (1 << 0)    /* Wakeup on Magic packet */
1594 #define WL_WOWL_NET             (1 << 1)    /* Wakeup on Netpattern */
1595 #define WL_WOWL_DIS             (1 << 2)    /* Wakeup on loss-of-link due to Disassoc/Deauth */
1596 #define WL_WOWL_RETR            (1 << 3)    /* Wakeup on retrograde TSF */
1597 #define WL_WOWL_BCN             (1 << 4)    /* Wakeup on loss of beacon */
1598 #define WL_WOWL_TST             (1 << 5)    /* Wakeup after test */
1599 #define WL_WOWL_M1              (1 << 6)    /* Wakeup after PTK refresh */
1600 #define WL_WOWL_EAPID           (1 << 7)    /* Wakeup after receipt of EAP-Identity Req */
1601 #define WL_WOWL_PME_GPIO        (1 << 8)    /* Wakeind via PME(0) or GPIO(1) */
1602 #define WL_WOWL_ULP_BAILOUT     (1 << 8)    /* wakeind via unknown pkt by basic ULP-offloads -
1603  * WL_WOWL_ULP_BAILOUT - same as WL_WOWL_PME_GPIO used only for DONGLE BUILDS
1604  */
1605 #define WL_WOWL_NEEDTKIP1       (1 << 9)    /* need tkip phase 1 key to be updated by the driver */
1606 #define WL_WOWL_GTK_FAILURE     (1 << 10)   /* enable wakeup if GTK fails */
1607 #define WL_WOWL_EXTMAGPAT       (1 << 11)   /* support extended magic packets */
1608 #define WL_WOWL_ARPOFFLOAD      (1 << 12)   /* support ARP/NS/keepalive offloading */
1609 #define WL_WOWL_WPA2            (1 << 13)   /* read protocol version for EAPOL frames */
1610 #define WL_WOWL_KEYROT          (1 << 14)   /* If the bit is set, use key rotaton */
1611 #define WL_WOWL_BCAST           (1 << 15)   /* If the bit is set, frm received was bcast frame */
1612 #define WL_WOWL_SCANOL          (1 << 16)   /* If the bit is set, scan offload is enabled */
1613 #define WL_WOWL_TCPKEEP_TIME    (1 << 17)   /* Wakeup on tcpkeep alive timeout */
1614 #define WL_WOWL_MDNS_CONFLICT   (1 << 18)   /* Wakeup on mDNS Conflict Resolution */
1615 #define WL_WOWL_MDNS_SERVICE    (1 << 19)   /* Wakeup on mDNS Service Connect */
1616 #define WL_WOWL_TCPKEEP_DATA    (1 << 20)   /* tcp keepalive got data */
1617 #define WL_WOWL_FW_HALT         (1 << 21)   /* Firmware died in wowl mode */
1618 #define WL_WOWL_ENAB_HWRADIO    (1 << 22)   /* Enable detection of radio button changes */
1619 #define WL_WOWL_MIC_FAIL        (1 << 23)   /* Offloads detected MIC failure(s) */
1620 #define WL_WOWL_UNASSOC         (1 << 24)   /* Wakeup in Unassociated state (Net/Magic Pattern) */
1621 #define WL_WOWL_SECURE          (1 << 25)   /* Wakeup if received matched secured pattern */
1622 #define WL_WOWL_EXCESS_WAKE     (1 << 26)   /* Excess wake */
1623 #define WL_WOWL_LINKDOWN        (1 << 31)   /* Link Down indication in WoWL mode */
1624 
1625 #define WL_WOWL_TCPKEEP         (1 << 20)   /* temp copy to satisfy automerger */
1626 #define MAGIC_PKT_MINLEN 102    /* Magic pkt min length is 6 * 0xFF + 16 * ETHER_ADDR_LEN */
1627 
1628 #define WOWL_PATTEN_TYPE_ARP	(1 << 0)	/* ARP offload Pattern */
1629 #define WOWL_PATTEN_TYPE_NA	(1 << 1)	/* NA offload Pattern */
1630 
1631 #define MAGIC_PKT_MINLEN	102    /* Magic pkt min length is 6 * 0xFF + 16 * ETHER_ADDR_LEN */
1632 #define MAGIC_PKT_NUM_MAC_ADDRS	16
1633 
1634 /* Overlap BSS Scan parameters default, minimum, maximum */
1635 #define WLC_OBSS_SCAN_PASSIVE_DWELL_DEFAULT		20	/* unit TU */
1636 #define WLC_OBSS_SCAN_PASSIVE_DWELL_MIN			5	/* unit TU */
1637 #define WLC_OBSS_SCAN_PASSIVE_DWELL_MAX			1000	/* unit TU */
1638 #define WLC_OBSS_SCAN_ACTIVE_DWELL_DEFAULT		10	/* unit TU */
1639 #define WLC_OBSS_SCAN_ACTIVE_DWELL_MIN			10	/* unit TU */
1640 #define WLC_OBSS_SCAN_ACTIVE_DWELL_MAX			1000	/* unit TU */
1641 #define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_DEFAULT	300	/* unit Sec */
1642 #define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MIN		10	/* unit Sec */
1643 #define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MAX		900	/* unit Sec */
1644 #define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_DEFAULT	5
1645 #define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MIN	5
1646 #define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MAX	100
1647 #define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_DEFAULT	200	/* unit TU */
1648 #define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MIN	200	/* unit TU */
1649 #define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MAX	10000	/* unit TU */
1650 #define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_DEFAULT	20	/* unit TU */
1651 #define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MIN	20	/* unit TU */
1652 #define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MAX	10000	/* unit TU */
1653 #define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_DEFAULT	25	/* unit percent */
1654 #define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MIN		0	/* unit percent */
1655 #define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MAX		100	/* unit percent */
1656 
1657 #define WL_MIN_NUM_OBSS_SCAN_ARG 7	/* minimum number of arguments required for OBSS Scan */
1658 
1659 #define WL_COEX_INFO_MASK		0x07
1660 #define WL_COEX_INFO_REQ		0x01
1661 #define	WL_COEX_40MHZ_INTOLERANT	0x02
1662 #define	WL_COEX_WIDTH20			0x04
1663 
1664 #define	WLC_RSSI_INVALID	 0	/* invalid RSSI value */
1665 
1666 #define MAX_RSSI_LEVELS 8
1667 
1668 /* **** EXTLOG **** */
1669 #define EXTLOG_CUR_VER		0x0100
1670 
1671 #define MAX_ARGSTR_LEN		18 /* At least big enough for storing ETHER_ADDR_STR_LEN */
1672 
1673 /* log modules (bitmap) */
1674 #define LOG_MODULE_COMMON	0x0001
1675 #define LOG_MODULE_ASSOC	0x0002
1676 #define LOG_MODULE_EVENT	0x0004
1677 #define LOG_MODULE_MAX		3			/* Update when adding module */
1678 
1679 /* log levels */
1680 #define WL_LOG_LEVEL_DISABLE	0
1681 #define WL_LOG_LEVEL_ERR	1
1682 #define WL_LOG_LEVEL_WARN	2
1683 #define WL_LOG_LEVEL_INFO	3
1684 #define WL_LOG_LEVEL_MAX	WL_LOG_LEVEL_INFO	/* Update when adding level */
1685 
1686 /* flag */
1687 #define LOG_FLAG_EVENT		1
1688 
1689 /* log arg_type */
1690 #define LOG_ARGTYPE_NULL	0
1691 #define LOG_ARGTYPE_STR		1	/* %s */
1692 #define LOG_ARGTYPE_INT		2	/* %d */
1693 #define LOG_ARGTYPE_INT_STR	3	/* %d...%s */
1694 #define LOG_ARGTYPE_STR_INT	4	/* %s...%d */
1695 
1696 /* 802.11 Mgmt Packet flags */
1697 #define VNDR_IE_BEACON_FLAG	0x1
1698 #define VNDR_IE_PRBRSP_FLAG	0x2
1699 #define VNDR_IE_ASSOCRSP_FLAG	0x4
1700 #define VNDR_IE_AUTHRSP_FLAG	0x8
1701 #define VNDR_IE_PRBREQ_FLAG	0x10
1702 #define VNDR_IE_ASSOCREQ_FLAG	0x20
1703 #define VNDR_IE_IWAPID_FLAG	0x40 /* vendor IE in IW advertisement protocol ID field */
1704 #define VNDR_IE_AUTHREQ_FLAG	0x80
1705 #define VNDR_IE_CUSTOM_FLAG	0x100 /* allow custom IE id */
1706 #define VNDR_IE_DISASSOC_FLAG	0x200
1707 
1708 #if defined(WLP2P)
1709 /* P2P Action Frames flags (spec ordered) */
1710 #define VNDR_IE_GONREQ_FLAG     0x001000
1711 #define VNDR_IE_GONRSP_FLAG     0x002000
1712 #define VNDR_IE_GONCFM_FLAG     0x004000
1713 #define VNDR_IE_INVREQ_FLAG     0x008000
1714 #define VNDR_IE_INVRSP_FLAG     0x010000
1715 #define VNDR_IE_DISREQ_FLAG     0x020000
1716 #define VNDR_IE_DISRSP_FLAG     0x040000
1717 #define VNDR_IE_PRDREQ_FLAG     0x080000
1718 #define VNDR_IE_PRDRSP_FLAG     0x100000
1719 
1720 #define VNDR_IE_P2PAF_SHIFT	12
1721 #endif /* WLP2P */
1722 
1723 /* channel interference measurement (chanim) related defines */
1724 
1725 /* chanim mode */
1726 #define CHANIM_DISABLE	0	/* disabled */
1727 #define CHANIM_DETECT	1	/* detection only */
1728 #define CHANIM_EXT		2	/* external state machine */
1729 #define CHANIM_ACT		3	/* full internal state machine, detect + act */
1730 #define CHANIM_MODE_MAX 4
1731 
1732 /* define for apcs reason code */
1733 #define APCS_INIT		0
1734 #define APCS_IOCTL		1
1735 #define APCS_CHANIM		2
1736 #define APCS_CSTIMER		3
1737 #define APCS_TXDLY		5
1738 #define APCS_NONACSD		6
1739 #define APCS_DFS_REENTRY	7
1740 #define APCS_TXFAIL		8
1741 #define APCS_MAX		9
1742 
1743 /* number of ACS record entries */
1744 #define CHANIM_ACS_RECORD			10
1745 
1746 /* CHANIM */
1747 #define CCASTATS_TXDUR  0
1748 #define CCASTATS_INBSS  1
1749 #define CCASTATS_OBSS   2
1750 #define CCASTATS_NOCTG  3
1751 #define CCASTATS_NOPKT  4
1752 #define CCASTATS_DOZE   5
1753 #define CCASTATS_TXOP	6
1754 #define CCASTATS_GDTXDUR        7
1755 #define CCASTATS_BDTXDUR        8
1756 
1757 #ifndef WLCHANIM_V2
1758 #define CCASTATS_MAX    9
1759 #else /* WLCHANIM_V2 */
1760 #define CCASTATS_MYRX      9
1761 #define CCASTATS_MAX    10
1762 #endif /* WLCHANIM_V2 */
1763 
1764 #define WL_CHANIM_COUNT_ALL	0xff
1765 #define WL_CHANIM_COUNT_ONE	0x1
1766 
1767 /* ap tpc modes */
1768 #define	AP_TPC_OFF		0
1769 #define	AP_TPC_BSS_PWR		1	/* BSS power control */
1770 #define AP_TPC_AP_PWR		2	/* AP power control */
1771 #define	AP_TPC_AP_BSS_PWR	3	/* Both AP and BSS power control */
1772 #define AP_TPC_MAX_LINK_MARGIN	127
1773 
1774 /* ap tpc modes */
1775 #define	AP_TPC_OFF		0
1776 #define	AP_TPC_BSS_PWR		1	/* BSS power control */
1777 #define AP_TPC_AP_PWR		2	/* AP power control */
1778 #define	AP_TPC_AP_BSS_PWR	3	/* Both AP and BSS power control */
1779 #define AP_TPC_MAX_LINK_MARGIN	127
1780 
1781 /* state */
1782 #define WL_P2P_DISC_ST_SCAN	0
1783 #define WL_P2P_DISC_ST_LISTEN	1
1784 #define WL_P2P_DISC_ST_SEARCH	2
1785 
1786 /* i/f type */
1787 #define WL_P2P_IF_CLIENT	0
1788 #define WL_P2P_IF_GO		1
1789 #define WL_P2P_IF_DYNBCN_GO	2
1790 #define WL_P2P_IF_DEV		3
1791 
1792 /* p2p GO configuration */
1793 #define WL_P2P_ENABLE_CONF	1	/* configure */
1794 #define WL_P2P_DISABLE_CONF	0	/* un-configure */
1795 
1796 /* count */
1797 #define WL_P2P_SCHED_RSVD	0
1798 #define WL_P2P_SCHED_REPEAT	255	/* anything > 255 will be treated as 255 */
1799 
1800 #define WL_P2P_SCHED_FIXED_LEN		3
1801 
1802 /* schedule type */
1803 #define WL_P2P_SCHED_TYPE_ABS		0	/* Scheduled Absence */
1804 #define WL_P2P_SCHED_TYPE_REQ_ABS	1	/* Requested Absence */
1805 
1806 /* schedule action during absence periods (for WL_P2P_SCHED_ABS type) */
1807 #define WL_P2P_SCHED_ACTION_NONE	0	/* no action */
1808 #define WL_P2P_SCHED_ACTION_DOZE	1	/* doze */
1809 /* schedule option - WL_P2P_SCHED_TYPE_REQ_ABS */
1810 #define WL_P2P_SCHED_ACTION_GOOFF	2	/* turn off GO beacon/prbrsp functions */
1811 /* schedule option - WL_P2P_SCHED_TYPE_XXX */
1812 #define WL_P2P_SCHED_ACTION_RESET	255	/* reset */
1813 
1814 /* schedule option - WL_P2P_SCHED_TYPE_ABS */
1815 #define WL_P2P_SCHED_OPTION_NORMAL	0	/* normal start/interval/duration/count */
1816 #define WL_P2P_SCHED_OPTION_BCNPCT	1	/* percentage of beacon interval */
1817 /* schedule option - WL_P2P_SCHED_TYPE_REQ_ABS */
1818 #define WL_P2P_SCHED_OPTION_TSFOFS	2	/* normal start/internal/duration/count with
1819 						 * start being an offset of the 'current' TSF
1820 						 */
1821 
1822 /* feature flags */
1823 #define WL_P2P_FEAT_GO_CSA	(1 << 0)	/* GO moves with the STA using CSA method */
1824 #define WL_P2P_FEAT_GO_NOLEGACY	(1 << 1)	/* GO does not probe respond to non-p2p probe
1825 						 * requests
1826 						 */
1827 #define WL_P2P_FEAT_RESTRICT_DEV_RESP (1 << 2)	/* Restrict p2p dev interface from responding */
1828 
1829 /* n-mode support capability */
1830 /* 2x2 includes both 1x1 & 2x2 devices
1831  * reserved #define 2 for future when we want to separate 1x1 & 2x2 and
1832  * control it independently
1833  */
1834 #define WL_11N_2x2			1
1835 #define WL_11N_3x3			3
1836 #define WL_11N_4x4			4
1837 
1838 /* define 11n feature disable flags */
1839 #define WLFEATURE_DISABLE_11N		0x00000001
1840 #define WLFEATURE_DISABLE_11N_STBC_TX	0x00000002
1841 #define WLFEATURE_DISABLE_11N_STBC_RX	0x00000004
1842 #define WLFEATURE_DISABLE_11N_SGI_TX	0x00000008
1843 #define WLFEATURE_DISABLE_11N_SGI_RX	0x00000010
1844 #define WLFEATURE_DISABLE_11N_AMPDU_TX	0x00000020
1845 #define WLFEATURE_DISABLE_11N_AMPDU_RX	0x00000040
1846 #define WLFEATURE_DISABLE_11N_GF	0x00000080
1847 
1848 /* Proxy STA modes */
1849 #define PSTA_MODE_DISABLED		0
1850 #define PSTA_MODE_PROXY			1
1851 #define PSTA_MODE_REPEATER		2
1852 
1853 /* op code in nat_cfg */
1854 #define NAT_OP_ENABLE		1	/* enable NAT on given interface */
1855 #define NAT_OP_DISABLE		2	/* disable NAT on given interface */
1856 #define NAT_OP_DISABLE_ALL	3	/* disable NAT on all interfaces */
1857 
1858 /* NAT state */
1859 #define NAT_STATE_ENABLED	1	/* NAT is enabled */
1860 #define NAT_STATE_DISABLED	2	/* NAT is disabled */
1861 
1862 #define CHANNEL_5G_LOW_START	36	/* 5G low (36..48) CDD enable/disable bit mask */
1863 #define CHANNEL_5G_MID_START	52	/* 5G mid (52..64) CDD enable/disable bit mask */
1864 #define CHANNEL_5G_HIGH_START	100	/* 5G high (100..140) CDD enable/disable bit mask */
1865 #define CHANNEL_5G_UPPER_START	149	/* 5G upper (149..161) CDD enable/disable bit mask */
1866 
1867 /* D0 Coalescing */
1868 #define IPV4_ARP_FILTER		0x0001
1869 #define IPV4_NETBT_FILTER	0x0002
1870 #define IPV4_LLMNR_FILTER	0x0004
1871 #define IPV4_SSDP_FILTER	0x0008
1872 #define IPV4_WSD_FILTER		0x0010
1873 #define IPV6_NETBT_FILTER	0x0200
1874 #define IPV6_LLMNR_FILTER	0x0400
1875 #define IPV6_SSDP_FILTER	0x0800
1876 #define IPV6_WSD_FILTER		0x1000
1877 
1878 /* Network Offload Engine */
1879 #define NWOE_OL_ENABLE		0x00000001
1880 
1881 /*
1882  * Traffic management structures/defines.
1883  */
1884 
1885 /* Traffic management bandwidth parameters */
1886 #define TRF_MGMT_MAX_PRIORITIES                 3
1887 
1888 #define TRF_MGMT_FLAG_ADD_DSCP                  0x0001  /* Add DSCP to IP TOS field */
1889 #define TRF_MGMT_FLAG_DISABLE_SHAPING           0x0002  /* Don't shape traffic */
1890 #define TRF_MGMT_FLAG_MANAGE_LOCAL_TRAFFIC      0x0008  /* Manage traffic over our local subnet */
1891 #define TRF_MGMT_FLAG_FILTER_ON_MACADDR         0x0010  /* filter on MAC address */
1892 #define TRF_MGMT_FLAG_NO_RX                     0x0020  /* do not apply fiters to rx packets */
1893 
1894 #define TRF_FILTER_MAC_ADDR              0x0001 /* L2 filter use dst mac address for filtering */
1895 #define TRF_FILTER_IP_ADDR               0x0002 /* L3 filter use ip ddress for filtering */
1896 #define TRF_FILTER_L4                    0x0004 /* L4 filter use tcp/udp for filtering */
1897 #define TRF_FILTER_DWM                   0x0008 /* L3 filter use DSCP for filtering */
1898 #define TRF_FILTER_FAVORED               0x0010 /* Tag the packet FAVORED */
1899 
1900 /* WNM/NPS subfeatures mask */
1901 #define WL_WNM_BSSTRANS		0x00000001
1902 #define WL_WNM_PROXYARP		0x00000002
1903 #define WL_WNM_MAXIDLE		0x00000004
1904 #define WL_WNM_TIMBC		0x00000008
1905 #define WL_WNM_TFS		0x00000010
1906 #define WL_WNM_SLEEP		0x00000020
1907 #define WL_WNM_DMS		0x00000040
1908 #define WL_WNM_FMS		0x00000080
1909 #define WL_WNM_NOTIF		0x00000100
1910 #define WL_WNM_WBTEXT	0x00000200
1911 #define WL_WNM_ESTM		0x00000400
1912 #define WL_WNM_MAX		0x00000800
1913 #ifdef WLWNM_BRCM
1914 #define BRCM_WNM_FEATURE_SET\
1915 					(WL_WNM_PROXYARP | \
1916 					WL_WNM_SLEEP | \
1917 					WL_WNM_FMS | \
1918 					WL_WNM_TFS | \
1919 					WL_WNM_TIMBC | \
1920 					WL_WNM_BSSTRANS | \
1921 					WL_WNM_DMS | \
1922 					WL_WNM_NOTIF | \
1923 					0)
1924 #endif /* WLWNM_BRCM */
1925 #ifndef ETHER_MAX_DATA
1926 #define ETHER_MAX_DATA	1500
1927 #endif /* ETHER_MAX_DATA */
1928 
1929 /* Different discovery modes for dpt */
1930 #define	DPT_DISCOVERY_MANUAL	0x01	/* manual discovery mode */
1931 #define	DPT_DISCOVERY_AUTO	0x02	/* auto discovery mode */
1932 #define	DPT_DISCOVERY_SCAN	0x04	/* scan-based discovery mode */
1933 
1934 /* different path selection values */
1935 #define DPT_PATHSEL_AUTO	0	/* auto mode for path selection */
1936 #define DPT_PATHSEL_DIRECT	1	/* always use direct DPT path */
1937 #define DPT_PATHSEL_APPATH	2	/* always use AP path */
1938 
1939 /* different ops for deny list */
1940 #define DPT_DENY_LIST_ADD	1	/* add to dpt deny list */
1941 #define DPT_DENY_LIST_REMOVE	2	/* remove from dpt deny list */
1942 
1943 /* different ops for manual end point */
1944 #define DPT_MANUAL_EP_CREATE	1	/* create manual dpt endpoint */
1945 #define DPT_MANUAL_EP_MODIFY	2	/* modify manual dpt endpoint */
1946 #define DPT_MANUAL_EP_DELETE	3	/* delete manual dpt endpoint */
1947 
1948 /* flags to indicate DPT status */
1949 #define	DPT_STATUS_ACTIVE	0x01	/* link active (though may be suspended) */
1950 #define	DPT_STATUS_AES		0x02	/* link secured through AES encryption */
1951 #define	DPT_STATUS_FAILED	0x04	/* DPT link failed */
1952 
1953 #ifdef WLTDLS
1954 /* different ops for manual end point */
1955 #define TDLS_MANUAL_EP_CREATE	1	/* create manual dpt endpoint */
1956 #define TDLS_MANUAL_EP_MODIFY	2	/* modify manual dpt endpoint */
1957 #define TDLS_MANUAL_EP_DELETE	3	/* delete manual dpt endpoint */
1958 #define TDLS_MANUAL_EP_PM		4	/*  put dpt endpoint in PM mode */
1959 #define TDLS_MANUAL_EP_WAKE		5	/* wake up dpt endpoint from PM */
1960 #define TDLS_MANUAL_EP_DISCOVERY	6	/* discover if endpoint is TDLS capable */
1961 #define TDLS_MANUAL_EP_CHSW		7	/* channel switch */
1962 #define TDLS_MANUAL_EP_WFD_TPQ	8	/* WiFi-Display Tunneled Probe reQuest */
1963 
1964 /* modes */
1965 #define TDLS_WFD_IE_TX			0
1966 #define TDLS_WFD_IE_RX			1
1967 #define TDLS_WFD_PROBE_IE_TX	2
1968 #define TDLS_WFD_PROBE_IE_RX	3
1969 #endif /* WLTDLS */
1970 
1971 /* define for flag */
1972 #define TSPEC_PENDING		0	/* TSPEC pending */
1973 #define TSPEC_ACCEPTED		1	/* TSPEC accepted */
1974 #define TSPEC_REJECTED		2	/* TSPEC rejected */
1975 #define TSPEC_UNKNOWN		3	/* TSPEC unknown */
1976 #define TSPEC_STATUS_MASK	7	/* TSPEC status mask */
1977 
1978 #ifdef BCMCCX
1979 /* "wlan_reason" iovar interface */
1980 #define WL_WLAN_ASSOC_REASON_NORMAL_NETWORK	0 /* normal WLAN network setup */
1981 #define WL_WLAN_ASSOC_REASON_ROAM_FROM_CELLULAR_NETWORK	1 /* roam from Cellular network */
1982 #define WL_WLAN_ASSOC_REASON_ROAM_FROM_LAN	2 /* roam from LAN */
1983 #define WL_WLAN_ASSOC_REASON_MAX		2 /* largest value allowed */
1984 #endif /* BCMCCX */
1985 
1986 /* Software feature flag defines used by wlfeatureflag */
1987 #ifdef WLAFTERBURNER
1988 #define WL_SWFL_ABBFL       0x0001 /* Allow Afterburner on systems w/o hardware BFL */
1989 #define WL_SWFL_ABENCORE    0x0002 /* Allow AB on non-4318E chips */
1990 #endif /* WLAFTERBURNER */
1991 #define WL_SWFL_NOHWRADIO	0x0004
1992 #define WL_SWFL_FLOWCONTROL     0x0008 /* Enable backpressure to OS stack */
1993 #define WL_SWFL_WLBSSSORT	0x0010 /* Per-port supports sorting of BSS */
1994 
1995 #define WL_LIFETIME_MAX 0xFFFF /* Max value in ms */
1996 
1997 #define CSA_BROADCAST_ACTION_FRAME	0	/* csa broadcast action frame */
1998 #define CSA_UNICAST_ACTION_FRAME	  1 /* csa unicast action frame */
1999 
2000 /* Roaming trigger definitions for WLC_SET_ROAM_TRIGGER.
2001  *
2002  * (-100 < value < 0)   value is used directly as a roaming trigger in dBm
2003  * (0 <= value) value specifies a logical roaming trigger level from
2004  *                      the list below
2005  *
2006  * WLC_GET_ROAM_TRIGGER always returns roaming trigger value in dBm, never
2007  * the logical roam trigger value.
2008  */
2009 #define WLC_ROAM_TRIGGER_DEFAULT	0 /* default roaming trigger */
2010 #define WLC_ROAM_TRIGGER_BANDWIDTH	1 /* optimize for bandwidth roaming trigger */
2011 #define WLC_ROAM_TRIGGER_DISTANCE	2 /* optimize for distance roaming trigger */
2012 #define WLC_ROAM_TRIGGER_AUTO		3 /* auto-detect environment */
2013 #define WLC_ROAM_TRIGGER_MAX_VALUE	3 /* max. valid value */
2014 
2015 #define WLC_ROAM_NEVER_ROAM_TRIGGER	(-100) /* Avoid Roaming by setting a large value */
2016 
2017 /* Preferred Network Offload (PNO, formerly PFN) defines */
2018 #define WPA_AUTH_PFN_ANY	0xffffffff	/* for PFN, match only ssid */
2019 
2020 #define SORT_CRITERIA_BIT		0
2021 #define AUTO_NET_SWITCH_BIT		1
2022 #define ENABLE_BKGRD_SCAN_BIT		2
2023 #define IMMEDIATE_SCAN_BIT		3
2024 #define	AUTO_CONNECT_BIT		4
2025 #define	ENABLE_BD_SCAN_BIT		5
2026 #define ENABLE_ADAPTSCAN_BIT		6
2027 #define IMMEDIATE_EVENT_BIT		8
2028 #define SUPPRESS_SSID_BIT		9
2029 #define ENABLE_NET_OFFLOAD_BIT		10
2030 /* report found/lost events for SSID and BSSID networks seperately */
2031 #define REPORT_SEPERATELY_BIT		11
2032 #define BESTN_BSSID_ONLY_BIT		12
2033 /* Debug Flags */
2034 #define FORCE_SSID_SWITCH		13
2035 
2036 #define SORT_CRITERIA_MASK		0x0001
2037 #define AUTO_NET_SWITCH_MASK		0x0002
2038 #define ENABLE_BKGRD_SCAN_MASK		0x0004
2039 #define IMMEDIATE_SCAN_MASK		0x0008
2040 #define	AUTO_CONNECT_MASK		0x0010
2041 
2042 #define ENABLE_BD_SCAN_MASK		0x0020
2043 #define ENABLE_ADAPTSCAN_MASK		0x00c0
2044 #define IMMEDIATE_EVENT_MASK		0x0100
2045 #define SUPPRESS_SSID_MASK		0x0200
2046 #define ENABLE_NET_OFFLOAD_MASK		0x0400
2047 /* report found/lost events for SSID and BSSID networks seperately */
2048 #define REPORT_SEPERATELY_MASK		0x0800
2049 #define BESTN_BSSID_ONLY_MASK		0x1000
2050 
2051 #define FORCE_SSID_SWITCH_MASK		0x2000
2052 
2053 #define PFN_VERSION			2
2054 #ifdef PFN_SCANRESULT_2
2055 #define PFN_SCANRESULT_VERSION		2
2056 #else
2057 #define PFN_SCANRESULT_VERSION		1
2058 #endif /* PFN_SCANRESULT_2 */
2059 #ifndef MAX_PFN_LIST_COUNT
2060 #define MAX_PFN_LIST_COUNT		16
2061 #endif /* MAX_PFN_LIST_COUNT */
2062 
2063 #define PFN_COMPLETE			1
2064 #define PFN_INCOMPLETE			0
2065 
2066 #define DEFAULT_BESTN			2
2067 #define DEFAULT_MSCAN			0
2068 #define DEFAULT_REPEAT			10
2069 #define DEFAULT_EXP				2
2070 
2071 #define PFN_PARTIAL_SCAN_BIT		0
2072 #define PFN_PARTIAL_SCAN_MASK		1
2073 
2074 #define WL_PFN_SUPPRESSFOUND_MASK	0x08
2075 #define WL_PFN_SUPPRESSLOST_MASK	0x10
2076 #define WL_PFN_SSID_A_BAND_TRIG		0x20
2077 #define WL_PFN_SSID_BG_BAND_TRIG	0x40
2078 #define WL_PFN_SSID_IMPRECISE_MATCH	0x80
2079 #define WL_PFN_SSID_SAME_NETWORK	0x10000
2080 #define WL_PFN_SUPPRESS_AGING_MASK	0x20000
2081 #define WL_PFN_FLUSH_ALL_SSIDS		0x40000
2082 #define WL_PFN_RSSI_MASK		0xff00
2083 #define WL_PFN_RSSI_SHIFT		8
2084 
2085 #define WL_PFN_REPORT_ALLNET    0
2086 #define WL_PFN_REPORT_SSIDNET   1
2087 #define WL_PFN_REPORT_BSSIDNET  2
2088 
2089 #define WL_PFN_CFG_FLAGS_PROHIBITED	0x00000001	/* Accept and use prohibited channels */
2090 #define WL_PFN_CFG_FLAGS_HISTORY_OFF	0x00000002	/* Scan history suppressed */
2091 
2092 #define WL_PFN_HIDDEN_BIT		2
2093 #define PNO_SCAN_MAX_FW			508*1000	/* max time scan time in msec */
2094 #define PNO_SCAN_MAX_FW_SEC		PNO_SCAN_MAX_FW/1000 /* max time scan time in SEC */
2095 #define PNO_SCAN_MIN_FW_SEC		10			/* min time scan time in SEC */
2096 #define WL_PFN_HIDDEN_MASK		0x4
2097 #define MAX_BSSID_PREF_LIST_NUM		32
2098 #ifndef CONFIG_SOC_S5E5515
2099 #define MAX_SSID_WHITELIST_NUM		4
2100 #define MAX_BSSID_BLACKLIST_NUM		32
2101 #else
2102 #define MAX_SSID_WHITELIST_NUM		0
2103 #define MAX_BSSID_BLACKLIST_NUM		0
2104 #endif /* CONFIG_SOC_S5E5515 */
2105 
2106 #ifndef BESTN_MAX
2107 #define BESTN_MAX			10
2108 #endif // endif
2109 
2110 #ifndef MSCAN_MAX
2111 #define MSCAN_MAX			32
2112 #endif // endif
2113 
2114 /* TCP Checksum Offload error injection for testing */
2115 #define TOE_ERRTEST_TX_CSUM	0x00000001
2116 #define TOE_ERRTEST_RX_CSUM	0x00000002
2117 #define TOE_ERRTEST_RX_CSUM2	0x00000004
2118 
2119 /* ARP Offload feature flags for arp_ol iovar */
2120 #define ARP_OL_AGENT			0x00000001
2121 #define ARP_OL_SNOOP			0x00000002
2122 #define ARP_OL_HOST_AUTO_REPLY		0x00000004
2123 #define ARP_OL_PEER_AUTO_REPLY		0x00000008
2124 #define ARP_OL_UPDATE_HOST_CACHE        0x00000010
2125 
2126 /* ARP Offload error injection */
2127 #define ARP_ERRTEST_REPLY_PEER	0x1
2128 #define ARP_ERRTEST_REPLY_HOST	0x2
2129 
2130 #define ARP_MULTIHOMING_MAX	8	/* Maximum local host IP addresses */
2131 #if defined(WL_PKT_FLTR_EXT) && !defined(WL_PKT_FLTR_EXT_DISABLED)
2132 #define ND_MULTIHOMING_MAX 32	/* Maximum local host IP addresses */
2133 #else
2134 #define ND_MULTIHOMING_MAX 10	/* Maximum local host IP addresses */
2135 #endif /* WL_PKT_FLTR_EXT && !WL_PKT_FLTR_EXT_DISABLED */
2136 #define ND_REQUEST_MAX		5	/* Max set of offload params */
2137 /* AOAC wake event flag */
2138 #define WAKE_EVENT_NLO_DISCOVERY_BIT		1
2139 #define WAKE_EVENT_AP_ASSOCIATION_LOST_BIT	2
2140 #define WAKE_EVENT_GTK_HANDSHAKE_ERROR_BIT 4
2141 #define WAKE_EVENT_4WAY_HANDSHAKE_REQUEST_BIT 8
2142 #define WAKE_EVENT_NET_PACKET_BIT 0x10
2143 
2144 #define MAX_NUM_WOL_PATTERN	22 /* LOGO requirements min 22 */
2145 
2146 /* Packet filter operation mode */
2147 /* True: 1; False: 0 */
2148 #define PKT_FILTER_MODE_FORWARD_ON_MATCH		1
2149 /* Enable and disable pkt_filter as a whole */
2150 #define PKT_FILTER_MODE_DISABLE					2
2151 /* Cache first matched rx pkt(be queried by host later) */
2152 #define PKT_FILTER_MODE_PKT_CACHE_ON_MATCH		4
2153 /* If pkt_filter is enabled and no filter is set, don't forward anything */
2154 #define PKT_FILTER_MODE_PKT_FORWARD_OFF_DEFAULT 8
2155 
2156 #ifdef DONGLEOVERLAYS
2157 #define OVERLAY_IDX_MASK		0x000000ff
2158 #define OVERLAY_IDX_SHIFT		0
2159 #define OVERLAY_FLAGS_MASK		0xffffff00
2160 #define OVERLAY_FLAGS_SHIFT		8
2161 /* overlay written to device memory immediately after loading the base image */
2162 #define OVERLAY_FLAG_POSTLOAD	0x100
2163 /* defer overlay download until the device responds w/WLC_E_OVL_DOWNLOAD event */
2164 #define OVERLAY_FLAG_DEFER_DL	0x200
2165 /* overlay downloaded prior to the host going to sleep */
2166 #define OVERLAY_FLAG_PRESLEEP	0x400
2167 #define OVERLAY_DOWNLOAD_CHUNKSIZE	1024
2168 #endif /* DONGLEOVERLAYS */
2169 
2170 /* reuse two number in the sc/rc space */
2171 #define	SMFS_CODE_MALFORMED 0xFFFE
2172 #define SMFS_CODE_IGNORED	0xFFFD
2173 
2174 /* RFAWARE def */
2175 #define BCM_ACTION_RFAWARE		0x77
2176 #define BCM_ACTION_RFAWARE_DCS		0x20
2177 
2178 /* DCS reason code define */
2179 #define BCM_DCS_IOVAR		0x1
2180 #define BCM_DCS_UNKNOWN		0xFF
2181 
2182 #ifdef PROP_TXSTATUS
2183 /* Bit definitions for tlv iovar */
2184 /*
2185  * enable RSSI signals:
2186  * WLFC_CTL_TYPE_RSSI
2187  */
2188 #define WLFC_FLAGS_RSSI_SIGNALS			0x0001
2189 
2190 /* enable (if/mac_open, if/mac_close,, mac_add, mac_del) signals:
2191  *
2192  * WLFC_CTL_TYPE_MAC_OPEN
2193  * WLFC_CTL_TYPE_MAC_CLOSE
2194  *
2195  * WLFC_CTL_TYPE_INTERFACE_OPEN
2196  * WLFC_CTL_TYPE_INTERFACE_CLOSE
2197  *
2198  * WLFC_CTL_TYPE_MACDESC_ADD
2199  * WLFC_CTL_TYPE_MACDESC_DEL
2200  *
2201  */
2202 #define WLFC_FLAGS_XONXOFF_SIGNALS		0x0002
2203 
2204 /* enable (status, fifo_credit, mac_credit) signals
2205  * WLFC_CTL_TYPE_MAC_REQUEST_CREDIT
2206  * WLFC_CTL_TYPE_TXSTATUS
2207  * WLFC_CTL_TYPE_FIFO_CREDITBACK
2208  */
2209 #define WLFC_FLAGS_CREDIT_STATUS_SIGNALS	0x0004
2210 
2211 #define WLFC_FLAGS_HOST_PROPTXSTATUS_ACTIVE	0x0008
2212 #define WLFC_FLAGS_PSQ_GENERATIONFSM_ENABLE	0x0010
2213 #define WLFC_FLAGS_PSQ_ZERO_BUFFER_ENABLE	0x0020
2214 #define WLFC_FLAGS_HOST_RXRERODER_ACTIVE	0x0040
2215 #define WLFC_FLAGS_PKT_STAMP_SIGNALS		0x0080
2216 
2217 #endif /* PROP_TXSTATUS */
2218 
2219 #define WL_TIMBC_STATUS_AP_UNKNOWN	255	/* AP status for internal use only */
2220 
2221 #define WL_DFRTS_LOGIC_OFF	0	/* Feature is disabled */
2222 #define WL_DFRTS_LOGIC_OR	1	/* OR all non-zero threshold conditions */
2223 #define WL_DFRTS_LOGIC_AND	2	/* AND all non-zero threshold conditions */
2224 
2225 /* Definitions for Reliable Multicast */
2226 #define WL_RELMCAST_MAX_CLIENT		32
2227 #define WL_RELMCAST_FLAG_INBLACKLIST	1
2228 #define WL_RELMCAST_FLAG_ACTIVEACKER	2
2229 #define WL_RELMCAST_FLAG_RELMCAST	4
2230 
2231 /* structures for proximity detection device role */
2232 #define WL_PROXD_MODE_DISABLE	0
2233 #define WL_PROXD_MODE_NEUTRAL	1
2234 #define WL_PROXD_MODE_INITIATOR	2
2235 #define WL_PROXD_MODE_TARGET	3
2236 #define WL_PROXD_RANDOM_WAKEUP	0x8000
2237 
2238 #ifdef NET_DETECT
2239 #define NET_DETECT_MAX_WAKE_DATA_SIZE	2048
2240 #define NET_DETECT_MAX_PROFILES		16
2241 #define NET_DETECT_MAX_CHANNELS		50
2242 #endif /* NET_DETECT */
2243 
2244 /* Bit masks for radio disabled status - returned by WL_GET_RADIO */
2245 #define WL_RADIO_SW_DISABLE		(1<<0)
2246 #define WL_RADIO_HW_DISABLE		(1<<1)
2247 #define WL_RADIO_MPC_DISABLE		(1<<2)
2248 #define WL_RADIO_COUNTRY_DISABLE	(1<<3)	/* some countries don't support any channel */
2249 #define WL_RADIO_PERCORE_DISABLE	(1<<4)	/* Radio diable per core for DVT */
2250 #define WL_RADIO_TSYNC_PWRSAVE_DISABLE  (1<<5)  /* Disable Radio in tsync mode for power saving */
2251 
2252 #define	WL_SPURAVOID_OFF	0
2253 #define	WL_SPURAVOID_ON1	1
2254 #define	WL_SPURAVOID_ON2	2
2255 
2256 #define WL_4335_SPURAVOID_ON1	1
2257 #define WL_4335_SPURAVOID_ON2	2
2258 #define WL_4335_SPURAVOID_ON3	3
2259 #define WL_4335_SPURAVOID_ON4	4
2260 #define WL_4335_SPURAVOID_ON5	5
2261 #define WL_4335_SPURAVOID_ON6	6
2262 #define WL_4335_SPURAVOID_ON7	7
2263 #define WL_4335_SPURAVOID_ON8	8
2264 #define WL_4335_SPURAVOID_ON9	9
2265 
2266 /* Override bit for WLC_SET_TXPWR.  if set, ignore other level limits */
2267 #define WL_TXPWR_OVERRIDE	(1U<<31)
2268 #define WL_TXPWR_2G		(1U<<30)
2269 #define WL_TXPWR_5G		(1U<<29)
2270 #define WL_TXPWR_NEG   (1U<<28)
2271 
2272 #define WL_TXPWR_MASK		(~(0x7<<29))
2273 #define WL_TXPWR_CORE_MAX	(3)
2274 #define WL_TXPWR_CORE0_MASK	(0x000000FF)
2275 #define WL_TXPWR_CORE0_SHIFT	(0)
2276 #define WL_TXPWR_CORE1_MASK	(0x0000FF00)
2277 #define WL_TXPWR_CORE1_SHIFT	(8)
2278 #define WL_TXPWR_CORE2_MASK	(0x00FF0000)
2279 #define WL_TXPWR_CORE2_SHIFT	(16)
2280 
2281 /* phy types (returned by WLC_GET_PHYTPE) */
2282 #define	WLC_PHY_TYPE_A		0
2283 #define	WLC_PHY_TYPE_B		1
2284 #define	WLC_PHY_TYPE_G		2
2285 #define	WLC_PHY_TYPE_N		4
2286 #define	WLC_PHY_TYPE_LP		5
2287 #define	WLC_PHY_TYPE_SSN	6
2288 #define	WLC_PHY_TYPE_HT		7
2289 #define	WLC_PHY_TYPE_LCN	8
2290 #define	WLC_PHY_TYPE_LCN40	10
2291 #define WLC_PHY_TYPE_AC		11
2292 #define	WLC_PHY_TYPE_LCN20	12
2293 #define	WLC_PHY_TYPE_NULL	0xf
2294 
2295 /* Values for PM */
2296 #define PM_OFF	0
2297 #define PM_MAX	1
2298 #define PM_FAST 2
2299 #define PM_FORCE_OFF 3		/* use this bit to force PM off even bt is active */
2300 #define PM_TWT  4
2301 
2302 #define WL_WME_CNT_VERSION	1	/* current version of wl_wme_cnt_t */
2303 
2304 /* fbt_cap: FBT assoc / reassoc modes. */
2305 #define WLC_FBT_CAP_DRV_4WAY_AND_REASSOC  1 /* Driver 4-way handshake & reassoc (WLFBT). */
2306 
2307 /* monitor_promisc_level bits */
2308 #define WL_MONPROMISC_PROMISC 0x0001
2309 #define WL_MONPROMISC_CTRL 0x0002
2310 #define WL_MONPROMISC_FCS 0x0004
2311 
2312 /* TCP Checksum Offload defines */
2313 #define TOE_TX_CSUM_OL		0x00000001
2314 #define TOE_RX_CSUM_OL		0x00000002
2315 
2316 /* Wi-Fi Display Services (WFDS) */
2317 #define WL_P2P_SOCIAL_CHANNELS_MAX  WL_NUMCHANNELS
2318 #define MAX_WFDS_SEEK_SVC 4	/* Max # of wfds services to seek */
2319 #define MAX_WFDS_ADVERT_SVC 4	/* Max # of wfds services to advertise */
2320 #define MAX_WFDS_SVC_NAME_LEN 200	/* maximum service_name length */
2321 #define MAX_WFDS_ADV_SVC_INFO_LEN 65000	/* maximum adv service_info length */
2322 #define P2P_WFDS_HASH_LEN 6		/* Length of a WFDS service hash */
2323 #define MAX_WFDS_SEEK_SVC_INFO_LEN 255	/* maximum seek service_info req length */
2324 #define MAX_WFDS_SEEK_SVC_NAME_LEN 200	/* maximum service_name length */
2325 
2326 /* ap_isolate bitmaps */
2327 #define AP_ISOLATE_DISABLED		0x0
2328 #define AP_ISOLATE_SENDUP_ALL		0x01
2329 #define AP_ISOLATE_SENDUP_MCAST		0x02
2330 
2331 /* Type values for the wl_pwrstats_t data field */
2332 #define WL_PWRSTATS_TYPE_PHY		0 /**< struct wl_pwr_phy_stats */
2333 #define WL_PWRSTATS_TYPE_SCAN		1 /**< struct wl_pwr_scan_stats */
2334 #define WL_PWRSTATS_TYPE_USB_HSIC	2 /**< struct wl_pwr_usb_hsic_stats */
2335 #define WL_PWRSTATS_TYPE_PM_AWAKE1	3 /**< struct wl_pwr_pm_awake_stats_v1 */
2336 #define WL_PWRSTATS_TYPE_CONNECTION	4 /* struct wl_pwr_connect_stats; assoc and key-exch time */
2337 #define WL_PWRSTATS_TYPE_PCIE		6 /**< struct wl_pwr_pcie_stats */
2338 #define WL_PWRSTATS_TYPE_PM_AWAKE2	7 /**< struct wl_pwr_pm_awake_stats_v2 */
2339 #define WL_PWRSTATS_TYPE_SDIO		8 /* struct wl_pwr_sdio_stats */
2340 #define WL_PWRSTATS_TYPE_MIMO_PS_METRICS 9 /* struct wl_mimo_meas_metrics_t */
2341 #define WL_PWRSTATS_TYPE_SLICE_INDEX	10 /* slice index for which this report is meant for */
2342 #define WL_PWRSTATS_TYPE_TSYNC		11 /**< struct wl_pwr_tsync_stats */
2343 #define	WL_PWRSTATS_TYPE_OPS_STATS	12 /* struct wl_pwr_ops_stats_t */
2344 #define WL_PWRSTATS_TYPE_BCNTRIM_STATS	13 /* struct wl_pwr_bcntrim_stats_t */
2345 #define WL_PWRSTATS_TYPE_SLICE_INDEX_BAND_INFO	14 /* wl_pwr_slice_index_band_t */
2346 #define WL_PWRSTATS_TYPE_PSBW_STATS	15 /* struct wl_pwr_psbw_stats_t */
2347 
2348 /* IOV AWD DATA */
2349 #define AWD_DATA_JOIN_INFO	0
2350 #define AWD_DATA_VERSION_V1	1
2351 
2352 /* IOV ETD DATA */
2353 #define ETD_DATA_JOIN_INFO	0
2354 #define ETD_DATA_VERSION_V1	1
2355 
2356 /* The macro for data field in empty vendor specific action frame */
2357 #define VS_EMPTY_ACTION 0xac
2358 
2359 #endif /* wlioctl_defs_h */
2360