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