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