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