update dhd to 100.10.545.11 [1/1]
[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
3910ce8e
LJ
929#define WLC_SCB_AUTHENTICATE 325
930#define WLC_LAST 326 /* The last ioctl. Also push this
965f77c4
RC
931 * number when adding new ioctls
932 */
933/*
934 * Alert:
935 * Duplicate a few definitions that irelay requires from epiioctl.h here
936 * so caller doesn't have to include this file and epiioctl.h .
937 * If this grows any more, it would be time to move these irelay-specific
938 * definitions out of the epiioctl.h and into a separate driver common file.
939 */
d2839953
RC
940#define WLC_SPEC_FLAG 0x80000000 /* For some special IOCTL */
941#ifndef EPICTRL_COOKIE
942#define EPICTRL_COOKIE 0xABADCEDE
943#endif // endif
944
945/* vx wlc ioctl's offset */
946#define CMN_IOCTL_OFF 0x180
947
948/*
949 * custom OID support
950 *
951 * 0xFF - implementation specific OID
952 * 0xE4 - first byte of Broadcom PCI vendor ID
953 * 0x14 - second byte of Broadcom PCI vendor ID
954 * 0xXX - the custom OID number
955 */
956
957/* begin 0x1f values beyond the start of the ET driver range. */
958#define WL_OID_BASE 0xFFE41420
959
960/* NDIS overrides */
961#define OID_WL_GETINSTANCE (WL_OID_BASE + WLC_GET_INSTANCE)
962#define OID_WL_GET_FORCELINK (WL_OID_BASE + WLC_GET_FORCELINK)
963#define OID_WL_SET_FORCELINK (WL_OID_BASE + WLC_SET_FORCELINK)
964#define OID_WL_ENCRYPT_STRENGTH (WL_OID_BASE + WLC_ENCRYPT_STRENGTH)
965#define OID_WL_DECRYPT_STATUS (WL_OID_BASE + WLC_DECRYPT_STATUS)
966#define OID_LEGACY_LINK_BEHAVIOR (WL_OID_BASE + WLC_LEGACY_LINK_BEHAVIOR)
967#define OID_WL_NDCONFIG_ITEM (WL_OID_BASE + WLC_NDCONFIG_ITEM)
968
969/* EXT_STA Dongle suuport */
970#define OID_STA_CHANSPEC (WL_OID_BASE + WLC_GET_CHANSPEC)
971#define OID_STA_NBANDS (WL_OID_BASE + WLC_GET_NBANDS)
972#define OID_STA_GET_PHY (WL_OID_BASE + WLC_GET_OID_PHY)
973#define OID_STA_SET_PHY (WL_OID_BASE + WLC_SET_OID_PHY)
974#define OID_STA_ASSOC_TIME (WL_OID_BASE + WLC_SET_ASSOC_TIME)
975#define OID_STA_DESIRED_SSID (WL_OID_BASE + WLC_GET_DESIRED_SSID)
976#define OID_STA_SET_PHY_STATE (WL_OID_BASE + WLC_SET_PHY_STATE)
977#define OID_STA_SCAN_PENDING (WL_OID_BASE + WLC_GET_SCAN_PENDING)
978#define OID_STA_SCANREQ_PENDING (WL_OID_BASE + WLC_GET_SCANREQ_PENDING)
979#define OID_STA_GET_ROAM_REASON (WL_OID_BASE + WLC_GET_PREV_ROAM_REASON)
980#define OID_STA_SET_ROAM_REASON (WL_OID_BASE + WLC_SET_PREV_ROAM_REASON)
981#define OID_STA_GET_PHY_STATE (WL_OID_BASE + WLC_GET_PHY_STATE)
982#define OID_STA_INT_DISASSOC (WL_OID_BASE + WLC_GET_INT_DISASSOC)
983#define OID_STA_SET_NUM_PEERS (WL_OID_BASE + WLC_SET_NUM_PEERS)
984#define OID_STA_GET_NUM_BSS (WL_OID_BASE + WLC_GET_NUM_BSS)
985
986/* NAT filter driver support */
987#define OID_NAT_SET_CONFIG (WL_OID_BASE + WLC_SET_NAT_CONFIG)
988#define OID_NAT_GET_STATE (WL_OID_BASE + WLC_GET_NAT_STATE)
989
990#define WL_DECRYPT_STATUS_SUCCESS 1
991#define WL_DECRYPT_STATUS_FAILURE 2
992#define WL_DECRYPT_STATUS_UNKNOWN 3
993
994/* allows user-mode app to poll the status of USB image upgrade */
995#define WLC_UPGRADE_SUCCESS 0
996#define WLC_UPGRADE_PENDING 1
997
998/* WLC_GET_AUTH, WLC_SET_AUTH values */
999#define WL_AUTH_OPEN_SYSTEM 0 /* d11 open authentication */
1000#define WL_AUTH_SHARED_KEY 1 /* d11 shared authentication */
1001#define WL_AUTH_OPEN_SHARED 2 /* try open, then shared if open failed w/rc 13 */
3910ce8e 1002#define WL_AUTH_SAE_KEY 3 /* d11 sae authentication */
d2839953
RC
1003#define WL_AUTH_FILS_SHARED 4 /* d11 fils shared key authentication */
1004#define WL_AUTH_FILS_SHARED_PFS 5 /* d11 fils shared key w/ pfs authentication */
1005#define WL_AUTH_FILS_PUBLIC 6 /* d11 fils public key authentication */
1006
1007/* a large TX Power as an init value to factor out of MIN() calculations,
1008 * keep low enough to fit in an int8, units are .25 dBm
1009 */
1010#define WLC_TXPWR_MAX (127) /* ~32 dBm = 1,500 mW */
1011
1012/* "diag" iovar argument and error code */
1013#define WL_DIAG_INTERRUPT 1 /* d11 loopback interrupt test */
1014#define WL_DIAG_LOOPBACK 2 /* d11 loopback data test */
1015#define WL_DIAG_MEMORY 3 /* d11 memory test */
1016#define WL_DIAG_LED 4 /* LED test */
1017#define WL_DIAG_REG 5 /* d11/phy register test */
1018#define WL_DIAG_SROM 6 /* srom read/crc test */
1019#define WL_DIAG_DMA 7 /* DMA test */
1020#define WL_DIAG_LOOPBACK_EXT 8 /* enhenced d11 loopback data test */
1021
1022#define WL_DIAGERR_SUCCESS 0
1023#define WL_DIAGERR_FAIL_TO_RUN 1 /* unable to run requested diag */
1024#define WL_DIAGERR_NOT_SUPPORTED 2 /* diag requested is not supported */
1025#define WL_DIAGERR_INTERRUPT_FAIL 3 /* loopback interrupt test failed */
1026#define WL_DIAGERR_LOOPBACK_FAIL 4 /* loopback data test failed */
1027#define WL_DIAGERR_SROM_FAIL 5 /* srom read failed */
1028#define WL_DIAGERR_SROM_BADCRC 6 /* srom crc failed */
1029#define WL_DIAGERR_REG_FAIL 7 /* d11/phy register test failed */
1030#define WL_DIAGERR_MEMORY_FAIL 8 /* d11 memory test failed */
1031#define WL_DIAGERR_NOMEM 9 /* diag test failed due to no memory */
1032#define WL_DIAGERR_DMA_FAIL 10 /* DMA test failed */
1033
1034#define WL_DIAGERR_MEMORY_TIMEOUT 11 /* d11 memory test didn't finish in time */
1035#define WL_DIAGERR_MEMORY_BADPATTERN 12 /* d11 memory test result in bad pattern */
1036
1037/* band types */
1038#define WLC_BAND_AUTO 0 /* auto-select */
1039#define WLC_BAND_5G 1 /* 5 Ghz */
1040#define WLC_BAND_2G 2 /* 2.4 Ghz */
1041#define WLC_BAND_ALL 3 /* all bands */
1042#define WLC_BAND_6G 4 /* 6 Ghz */
1043#define WLC_BAND_INVALID -1 /* Invalid band */
1044
1045/* band range returned by band_range iovar */
1046#define WL_CHAN_FREQ_RANGE_2G 0
1047#define WL_CHAN_FREQ_RANGE_5GL 1
1048#define WL_CHAN_FREQ_RANGE_5GM 2
1049#define WL_CHAN_FREQ_RANGE_5GH 3
1050
1051#define WL_CHAN_FREQ_RANGE_5GLL_5BAND 4
1052#define WL_CHAN_FREQ_RANGE_5GLH_5BAND 5
1053#define WL_CHAN_FREQ_RANGE_5GML_5BAND 6
1054#define WL_CHAN_FREQ_RANGE_5GMH_5BAND 7
1055#define WL_CHAN_FREQ_RANGE_5GH_5BAND 8
1056
1057#define WL_CHAN_FREQ_RANGE_5G_BAND0 1
1058#define WL_CHAN_FREQ_RANGE_5G_BAND1 2
1059#define WL_CHAN_FREQ_RANGE_5G_BAND2 3
1060#define WL_CHAN_FREQ_RANGE_5G_BAND3 4
1061#define WL_CHAN_FREQ_RANGE_5G_4BAND 5
1062
1063/* SROM12 */
1064#define WL_CHAN_FREQ_RANGE_5G_BAND4 5
1065#define WL_CHAN_FREQ_RANGE_2G_40 6
1066#define WL_CHAN_FREQ_RANGE_5G_BAND0_40 7
1067#define WL_CHAN_FREQ_RANGE_5G_BAND1_40 8
1068#define WL_CHAN_FREQ_RANGE_5G_BAND2_40 9
1069#define WL_CHAN_FREQ_RANGE_5G_BAND3_40 10
1070#define WL_CHAN_FREQ_RANGE_5G_BAND4_40 11
1071#define WL_CHAN_FREQ_RANGE_5G_BAND0_80 12
1072#define WL_CHAN_FREQ_RANGE_5G_BAND1_80 13
1073#define WL_CHAN_FREQ_RANGE_5G_BAND2_80 14
1074#define WL_CHAN_FREQ_RANGE_5G_BAND3_80 15
1075#define WL_CHAN_FREQ_RANGE_5G_BAND4_80 16
1076
1077#define WL_CHAN_FREQ_RANGE_5G_5BAND 18
1078#define WL_CHAN_FREQ_RANGE_5G_5BAND_40 19
1079#define WL_CHAN_FREQ_RANGE_5G_5BAND_80 20
1080
1081#define WLC_MACMODE_DISABLED 0 /* MAC list disabled */
1082#define WLC_MACMODE_DENY 1 /* Deny specified (i.e. allow unspecified) */
1083#define WLC_MACMODE_ALLOW 2 /* Allow specified (i.e. deny unspecified) */
1084
1085/*
1086 * 54g modes (basic bits may still be overridden)
1087 *
1088 * GMODE_LEGACY_B Rateset: 1b, 2b, 5.5, 11
1089 * Preamble: Long
1090 * Shortslot: Off
1091 * GMODE_AUTO Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54
1092 * Extended Rateset: 6, 9, 12, 48
1093 * Preamble: Long
1094 * Shortslot: Auto
1095 * GMODE_ONLY Rateset: 1b, 2b, 5.5b, 11b, 18, 24b, 36, 54
1096 * Extended Rateset: 6b, 9, 12b, 48
1097 * Preamble: Short required
1098 * Shortslot: Auto
1099 * GMODE_B_DEFERRED Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54
1100 * Extended Rateset: 6, 9, 12, 48
1101 * Preamble: Long
1102 * Shortslot: On
1103 * GMODE_PERFORMANCE Rateset: 1b, 2b, 5.5b, 6b, 9, 11b, 12b, 18, 24b, 36, 48, 54
1104 * Preamble: Short required
1105 * Shortslot: On and required
1106 * GMODE_LRS Rateset: 1b, 2b, 5.5b, 11b
1107 * Extended Rateset: 6, 9, 12, 18, 24, 36, 48, 54
1108 * Preamble: Long
1109 * Shortslot: Auto
1110 */
1111#define GMODE_LEGACY_B 0
1112#define GMODE_AUTO 1
1113#define GMODE_ONLY 2
1114#define GMODE_B_DEFERRED 3
1115#define GMODE_PERFORMANCE 4
1116#define GMODE_LRS 5
1117#define GMODE_MAX 6
1118
1119/* values for PLCPHdr_override */
1120#define WLC_PLCP_AUTO -1
1121#define WLC_PLCP_SHORT 0
1122#define WLC_PLCP_LONG 1
1123
1124/* values for g_protection_override and n_protection_override */
1125#define WLC_PROTECTION_AUTO -1
1126#define WLC_PROTECTION_OFF 0
1127#define WLC_PROTECTION_ON 1
1128#define WLC_PROTECTION_MMHDR_ONLY 2
1129#define WLC_PROTECTION_CTS_ONLY 3
1130
1131/* values for g_protection_control and n_protection_control */
1132#define WLC_PROTECTION_CTL_OFF 0
1133#define WLC_PROTECTION_CTL_LOCAL 1
1134#define WLC_PROTECTION_CTL_OVERLAP 2
1135
1136/* values for n_protection */
1137#define WLC_N_PROTECTION_OFF 0
1138#define WLC_N_PROTECTION_OPTIONAL 1
1139#define WLC_N_PROTECTION_20IN40 2
1140#define WLC_N_PROTECTION_MIXEDMODE 3
1141
1142/* values for n_preamble_type */
1143#define WLC_N_PREAMBLE_MIXEDMODE 0
1144#define WLC_N_PREAMBLE_GF 1
1145#define WLC_N_PREAMBLE_GF_BRCM 2
1146
1147/* values for band specific 40MHz capabilities (deprecated) */
1148#define WLC_N_BW_20ALL 0
1149#define WLC_N_BW_40ALL 1
1150#define WLC_N_BW_20IN2G_40IN5G 2
1151
1152#define WLC_BW_20MHZ_BIT (1<<0)
1153#define WLC_BW_40MHZ_BIT (1<<1)
1154#define WLC_BW_80MHZ_BIT (1<<2)
1155#define WLC_BW_160MHZ_BIT (1<<3)
1156#define WLC_BW_10MHZ_BIT (1<<4)
1157#define WLC_BW_5MHZ_BIT (1<<5)
1158#define WLC_BW_2P5MHZ_BIT (1<<6)
1159/* Bandwidth capabilities */
1160#define WLC_BW_CAP_20MHZ (WLC_BW_20MHZ_BIT)
1161#define WLC_BW_CAP_40MHZ (WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT)
1162#define WLC_BW_CAP_80MHZ (WLC_BW_80MHZ_BIT|WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT)
1163#define WLC_BW_CAP_160MHZ (WLC_BW_160MHZ_BIT|WLC_BW_80MHZ_BIT| \
1164 WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT)
1165#define WLC_BW_CAP_2P5MHZ (WLC_BW_2P5MHZ_BIT)
1166#define WLC_BW_CAP_5MHZ (WLC_BW_5MHZ_BIT)
1167#define WLC_BW_CAP_10MHZ (WLC_BW_10MHZ_BIT)
1168#define WLC_BW_CAP_UNRESTRICTED 0xFF
1169
1170#define WL_BW_CAP_20MHZ(bw_cap) (((bw_cap) & WLC_BW_20MHZ_BIT) ? TRUE : FALSE)
1171#define WL_BW_CAP_40MHZ(bw_cap) (((bw_cap) & WLC_BW_40MHZ_BIT) ? TRUE : FALSE)
1172#define WL_BW_CAP_80MHZ(bw_cap) (((bw_cap) & WLC_BW_80MHZ_BIT) ? TRUE : FALSE)
1173#define WL_BW_CAP_160MHZ(bw_cap)(((bw_cap) & WLC_BW_160MHZ_BIT) ? TRUE : FALSE)
1174#define WL_BW_CAP_2P5MHZ(bw_cap)(((bw_cap) & WLC_BW_2P5MHZ_BIT) ? TRUE : FALSE)
1175#define WL_BW_CAP_5MHZ(bw_cap) (((bw_cap) & WLC_BW_5MHZ_BIT) ? TRUE : FALSE)
1176#define WL_BW_CAP_10MHZ(bw_cap) (((bw_cap) & WLC_BW_10MHZ_BIT) ? TRUE : FALSE)
1177/* values to force tx/rx chain */
1178#define WLC_N_TXRX_CHAIN0 0
1179#define WLC_N_TXRX_CHAIN1 1
1180
1181/* bitflags for SGI support (sgi_rx iovar) */
1182#define WLC_N_SGI_20 0x01
1183#define WLC_N_SGI_40 0x02
1184#define WLC_VHT_SGI_80 0x04
1185#define WLC_VHT_SGI_160 0x08
1186
1187/* when sgi_tx==WLC_SGI_ALL, bypass rate selection, enable sgi for all mcs */
1188#define WLC_SGI_ALL 0x02
1189
1190#define LISTEN_INTERVAL 10
1191/* interference mitigation options */
1192#define INTERFERE_OVRRIDE_OFF -1 /* interference override off */
1193#define INTERFERE_NONE 0 /* off */
1194#define NON_WLAN 1 /* foreign/non 802.11 interference, no auto detect */
1195#define WLAN_MANUAL 2 /* ACI: no auto detection */
1196#define WLAN_AUTO 3 /* ACI: auto detect */
1197#define WLAN_AUTO_W_NOISE 4 /* ACI: auto - detect and non 802.11 interference */
1198#define AUTO_ACTIVE (1 << 7) /* Auto is currently active */
1199
1200/* interfernece mode bit-masks (ACPHY) */
1201#define ACPHY_ACI_GLITCHBASED_DESENSE 1 /* bit 0 */
1202#define ACPHY_ACI_HWACI_PKTGAINLMT 2 /* bit 1 */
1203#define ACPHY_ACI_W2NB_PKTGAINLMT 4 /* bit 2 */
1204#define ACPHY_ACI_PREEMPTION 8 /* bit 3 */
1205#define ACPHY_HWACI_MITIGATION 16 /* bit 4 */
1206#define ACPHY_LPD_PREEMPTION 32 /* bit 5 */
1207#define ACPHY_HWOBSS_MITIGATION 64 /* bit 6 */
1208#define ACPHY_ACI_MAX_MODE 127
1209
1210/* AP environment */
1211#define AP_ENV_DETECT_NOT_USED 0 /* We aren't using AP environment detection */
1212#define AP_ENV_DENSE 1 /* "Corporate" or other AP dense environment */
1213#define AP_ENV_SPARSE 2 /* "Home" or other sparse environment */
1214#define AP_ENV_INDETERMINATE 3 /* AP environment hasn't been identified */
1215
1216#define TRIGGER_NOW 0
1217#define TRIGGER_CRS 0x01
1218#define TRIGGER_CRSDEASSERT 0x02
1219#define TRIGGER_GOODFCS 0x04
1220#define TRIGGER_BADFCS 0x08
1221#define TRIGGER_BADPLCP 0x10
1222#define TRIGGER_CRSGLITCH 0x20
965f77c4 1223#define TRIGGER_ASYNC 0x40
d2839953
RC
1224
1225#define WL_SAMPLEDATA_HEADER_TYPE 1
1226#define WL_SAMPLEDATA_HEADER_SIZE 80 /* sample collect header size (bytes) */
1227#define WL_SAMPLEDATA_TYPE 2
1228#define WL_SAMPLEDATA_SEQ 0xff /* sequence # */
1229#define WL_SAMPLEDATA_MORE_DATA 0x100 /* more data mask */
1230
1231/* WL_OTA START */
1232#define WL_OTA_ARG_PARSE_BLK_SIZE 1200
1233#define WL_OTA_TEST_MAX_NUM_RATE 30
1234#define WL_OTA_TEST_MAX_NUM_SEQ 100
1235#define WL_OTA_TEST_MAX_NUM_RSSI 85
1236#define WL_THRESHOLD_LO_BAND 70 /* range from 5250MHz - 5350MHz */
1237
1238/* radar iovar SET defines */
1239#define WL_RADAR_DETECTOR_OFF 0 /* radar detector off */
1240#define WL_RADAR_DETECTOR_ON 1 /* radar detector on */
1241#define WL_RADAR_SIMULATED 2 /* force radar detector to declare
1242 * detection once
1243 */
1244#define WL_RADAR_SIMULATED_SC 3 /* force radar detector to declare
1245 * detection once on scan core
1246 * if available and active
1247 */
1248#define WL_RSSI_ANT_VERSION 1 /* current version of wl_rssi_ant_t */
1249#define WL_ANT_RX_MAX 2 /* max 2 receive antennas */
1250#define WL_ANT_HT_RX_MAX 4 /* max 4 receive antennas/cores */
1251#define WL_ANT_IDX_1 0 /* antenna index 1 */
1252#define WL_ANT_IDX_2 1 /* antenna index 2 */
1253
1254#ifndef WL_RSSI_ANT_MAX
1255#define WL_RSSI_ANT_MAX 4 /* max possible rx antennas */
1256#elif WL_RSSI_ANT_MAX != 4
1257#error "WL_RSSI_ANT_MAX does not match"
1258#endif // endif
1259
1260/* dfs_status iovar-related defines */
1261
1262/* cac - channel availability check,
1263 * ism - in-service monitoring
1264 * csa - channel switching announcement
1265 */
1266
1267/* cac state values */
1268#define WL_DFS_CACSTATE_IDLE 0 /* state for operating in non-radar channel */
1269#define WL_DFS_CACSTATE_PREISM_CAC 1 /* CAC in progress */
1270#define WL_DFS_CACSTATE_ISM 2 /* ISM in progress */
1271#define WL_DFS_CACSTATE_CSA 3 /* csa */
1272#define WL_DFS_CACSTATE_POSTISM_CAC 4 /* ISM CAC */
1273#define WL_DFS_CACSTATE_PREISM_OOC 5 /* PREISM OOC */
1274#define WL_DFS_CACSTATE_POSTISM_OOC 6 /* POSTISM OOC */
1275#define WL_DFS_CACSTATES 7 /* this many states exist */
1276
1277/* Defines used with channel_bandwidth for curpower */
1278#define WL_BW_20MHZ 0
1279#define WL_BW_40MHZ 1
1280#define WL_BW_80MHZ 2
1281#define WL_BW_160MHZ 3
1282#define WL_BW_8080MHZ 4
1283#define WL_BW_2P5MHZ 5
1284#define WL_BW_5MHZ 6
1285#define WL_BW_10MHZ 7
1286
1287/* tx_power_t.flags bits */
1288#define WL_TX_POWER_F_ENABLED 1
1289#define WL_TX_POWER_F_HW 2
1290#define WL_TX_POWER_F_MIMO 4
1291#define WL_TX_POWER_F_SISO 8
1292#define WL_TX_POWER_F_HT 0x10
1293#define WL_TX_POWER_F_VHT 0x20
1294#define WL_TX_POWER_F_OPENLOOP 0x40
1295#define WL_TX_POWER_F_PROP11NRATES 0x80
1296#define WL_TX_POWER_F_UNIT_QDBM 0x100
1297#define WL_TX_POWER_F_TXCAP 0x200
965f77c4
RC
1298#define WL_TX_POWER_F_HE 0x400
1299#define WL_TX_POWER_F_RU_RATE 0x800
1300
d2839953
RC
1301/* Message levels */
1302#define WL_ERROR_VAL 0x00000001
1303#define WL_TRACE_VAL 0x00000002
1304#define WL_PRHDRS_VAL 0x00000004
1305#define WL_PRPKT_VAL 0x00000008
1306#define WL_INFORM_VAL 0x00000010
1307#define WL_TMP_VAL 0x00000020
1308#define WL_OID_VAL 0x00000040
1309#define WL_RATE_VAL 0x00000080
1310#define WL_ASSOC_VAL 0x00000100
1311#define WL_PRUSR_VAL 0x00000200
1312#define WL_PS_VAL 0x00000400
1313#define WL_TXPWR_VAL 0x00000000 /* retired in TOT on 6/10/2009 */
965f77c4 1314#define WL_MODE_SWITCH_VAL 0x00000800 /* Using retired TXPWR val */
d2839953
RC
1315#define WL_PORT_VAL 0x00001000
1316#define WL_DUAL_VAL 0x00002000
1317#define WL_WSEC_VAL 0x00004000
1318#define WL_WSEC_DUMP_VAL 0x00008000
1319#define WL_LOG_VAL 0x00010000
1320#define WL_NRSSI_VAL 0x00000000 /* retired in TOT on 6/10/2009 */
1321#define WL_BCNTRIM_VAL 0x00020000 /* Using retired NRSSI VAL */
1322#define WL_LOFT_VAL 0x00000000 /* retired in TOT on 6/10/2009 */
965f77c4 1323#define WL_PFN_VAL 0x00040000 /* Using retired LOFT_VAL */
d2839953 1324#define WL_REGULATORY_VAL 0x00080000
965f77c4 1325#define WL_CSA_VAL 0x00080000 /* Reusing REGULATORY_VAL due to lackof bits */
d2839953
RC
1326#define WL_TAF_VAL 0x00100000
1327#define WL_RADAR_VAL 0x00000000 /* retired in TOT on 6/10/2009 */
1328#define WL_WDI_VAL 0x00200000 /* Using retired WL_RADAR_VAL VAL */
1329#define WL_MPC_VAL 0x00400000
1330#define WL_APSTA_VAL 0x00800000
1331#define WL_DFS_VAL 0x01000000
1332#define WL_BA_VAL 0x00000000 /* retired in TOT on 6/14/2010 */
1333#define WL_MUMIMO_VAL 0x02000000 /* Using retired WL_BA_VAL */
1334#define WL_ACI_VAL 0x04000000
1335#define WL_PRMAC_VAL 0x04000000
1336#define WL_MBSS_VAL 0x04000000
1337#define WL_CAC_VAL 0x08000000
1338#define WL_AMSDU_VAL 0x10000000
1339#define WL_AMPDU_VAL 0x20000000
1340#define WL_FFPLD_VAL 0x40000000
1341#define WL_ROAM_EXP_VAL 0x80000000
1342
1343/* wl_msg_level is full. For new bits take the next one and AND with
1344 * wl_msg_level2 in wl_dbg.h
1345 */
1346#define WL_DPT_VAL 0x00000001
1347/* re-using WL_DPT_VAL */
1348/* re-using WL_MESH_VAL */
1349#define WL_NATOE_VAL 0x00000001
1350#define WL_MESH_VAL 0x00000001
1351#define WL_SCAN_VAL 0x00000002
1352#define WL_WOWL_VAL 0x00000004
1353#define WL_COEX_VAL 0x00000008
1354#define WL_RTDC_VAL 0x00000010
1355#define WL_PROTO_VAL 0x00000020
1356#define WL_SWDIV_VAL 0x00000040
1357#define WL_CHANINT_VAL 0x00000080
1358#define WL_WMF_VAL 0x00000100
1359#define WL_P2P_VAL 0x00000200
1360#define WL_ITFR_VAL 0x00000400
1361#define WL_MCHAN_VAL 0x00000800
1362#define WL_TDLS_VAL 0x00001000
1363#define WL_MCNX_VAL 0x00002000
1364#define WL_PROT_VAL 0x00004000
d2839953
RC
1365#define WL_TSO_VAL 0x00010000
1366#define WL_TRF_MGMT_VAL 0x00020000
1367#define WL_LPC_VAL 0x00040000
1368#define WL_L2FILTER_VAL 0x00080000
1369#define WL_TXBF_VAL 0x00100000
1370#define WL_P2PO_VAL 0x00200000
1371#define WL_TBTT_VAL 0x00400000
1372#define WL_FBT_VAL 0x00800000
965f77c4 1373#define WL_RRM_VAL 0x00800000 /* reuse */
d2839953
RC
1374#define WL_MQ_VAL 0x01000000
1375/* This level is currently used in Phoenix2 only */
1376#define WL_SRSCAN_VAL 0x02000000
1377#define WL_WNM_VAL 0x04000000
1378/* re-using WL_WNM_VAL for MBO */
1379#define WL_MBO_VAL 0x04000000
1380/* re-using WL_SRSCAN_VAL */
1381#define WL_RANDMAC_VAL 0x02000000
1382#define WL_UNUSED_VAL 0x10000000 /* Was a duplicate for WL_LPC_VAL. Removed */
1383#define WL_NET_DETECT_VAL 0x20000000
1384#define WL_OCE_VAL 0x20000000 /* reuse */
1385#define WL_PCIE_VAL 0x40000000
1386#define WL_PMDUR_VAL 0x80000000
1387/* use top-bit for WL_TIME_STAMP_VAL because this is a modifier
1388 * rather than a message-type of its own
1389 */
1390#define WL_TIMESTAMP_VAL 0x80000000
1391
1392/* wl_msg_level2 is full. For new bits take the next one and AND with
1393 * wl_msg_level3 in wl_dbg.h
1394 */
1395#define WL_ASSOC_AP_VAL 0x00000001
1396#define WL_FILS_VAL 0x00000002
965f77c4
RC
1397#define WL_LATENCY_VAL 0x00000004
1398#define WL_WBUS_VAL 0x00000008
d2839953
RC
1399
1400/* max # of leds supported by GPIO (gpio pin# == led index#) */
1401#define WL_LED_NUMGPIO 32 /* gpio 0-31 */
1402
1403/* led per-pin behaviors */
1404#define WL_LED_OFF 0 /* always off */
1405#define WL_LED_ON 1 /* always on */
1406#define WL_LED_ACTIVITY 2 /* activity */
1407#define WL_LED_RADIO 3 /* radio enabled */
1408#define WL_LED_ARADIO 4 /* 5 Ghz radio enabled */
1409#define WL_LED_BRADIO 5 /* 2.4Ghz radio enabled */
1410#define WL_LED_BGMODE 6 /* on if gmode, off if bmode */
965f77c4
RC
1411#define WL_LED_WI1 7 /* wlan indicator 1 mode (legacy cust) */
1412#define WL_LED_WI2 8 /* wlan indicator 2 mode (legacy cust) */
1413#define WL_LED_WI3 9 /* wlan indicator 3 mode (legacy cust) */
d2839953
RC
1414#define WL_LED_ASSOC 10 /* associated state indicator */
1415#define WL_LED_INACTIVE 11 /* null behavior (clears default behavior) */
965f77c4
RC
1416#define WL_LED_ASSOCACT 12 /* on associated; blink fast for activity */
1417#define WL_LED_WI4 13 /* wlan indicator 4 mode (legacy cust 5G) */
1418#define WL_LED_WI5 14 /* wlan indicator 5 mode (legacy cust 2.4) */
d2839953
RC
1419#define WL_LED_BLINKSLOW 15 /* blink slow */
1420#define WL_LED_BLINKMED 16 /* blink med */
1421#define WL_LED_BLINKFAST 17 /* blink fast */
1422#define WL_LED_BLINKCUSTOM 18 /* blink custom */
965f77c4 1423#define WL_LED_BLINKPERIODIC 19 /* blink period (custom 1000ms / off 400ms) */
d2839953
RC
1424#define WL_LED_ASSOC_WITH_SEC 20 /* when connected with security */
1425 /* keep on for 300 sec */
1426#define WL_LED_START_OFF 21 /* off upon boot, could be turned on later */
965f77c4
RC
1427#define WL_LED_WI6 22 /* wlan indicator 6 mode legacy rtr 43526 5 */
1428#define WL_LED_WI7 23 /* wlan indicator 7 mode legacy rtr 43526 2.4 */
1429#define WL_LED_WI8 24 /* wlan indicator 8 mode legacy rtr 43526 */
d2839953
RC
1430#define WL_LED_NUMBEHAVIOR 25
1431
1432/* led behavior numeric value format */
1433#define WL_LED_BEH_MASK 0x3f /* behavior mask */
1434#define WL_LED_PMU_OVERRIDE 0x40 /* need to set PMU Override bit for the GPIO */
1435#define WL_LED_AL_MASK 0x80 /* activelow (polarity) bit */
1436
1437/* number of bytes needed to define a proper bit mask for MAC event reporting */
1438#define BCMIO_ROUNDUP(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
1439#define BCMIO_NBBY 8
965f77c4 1440#define WL_EVENTING_MASK_LEN (16+4) /* Don't increase this without wl review */
d2839953
RC
1441
1442#define WL_EVENTING_MASK_EXT_LEN \
1443 MAX(WL_EVENTING_MASK_LEN, (ROUNDUP(WLC_E_LAST, NBBY)/NBBY))
1444
1445/* join preference types */
1446#define WL_JOIN_PREF_RSSI 1 /* by RSSI */
1447#define WL_JOIN_PREF_WPA 2 /* by akm and ciphers */
1448#define WL_JOIN_PREF_BAND 3 /* by 802.11 band */
1449#define WL_JOIN_PREF_RSSI_DELTA 4 /* by 802.11 band only if RSSI delta condition matches */
1450#define WL_JOIN_PREF_TRANS_PREF 5 /* defined by requesting AP */
1451
1452/* band preference */
1453#define WLJP_BAND_ASSOC_PREF 255 /* use what WLC_SET_ASSOC_PREFER ioctl specifies */
1454
1455/* any multicast cipher suite */
1456#define WL_WPA_ACP_MCS_ANY "\x00\x00\x00\x00"
1457
1458/* 802.11h measurement types */
1459#define WLC_MEASURE_TPC 1
1460#define WLC_MEASURE_CHANNEL_BASIC 2
1461#define WLC_MEASURE_CHANNEL_CCA 3
1462#define WLC_MEASURE_CHANNEL_RPI 4
1463
1464/* regulatory enforcement levels */
1465#define SPECT_MNGMT_OFF 0 /* both 11h and 11d disabled */
1466#define SPECT_MNGMT_LOOSE_11H 1 /* allow non-11h APs in scan lists */
1467#define SPECT_MNGMT_STRICT_11H 2 /* prune out non-11h APs from scan list */
1468#define SPECT_MNGMT_STRICT_11D 3 /* switch to 802.11D mode */
1469/* SPECT_MNGMT_LOOSE_11H_D - same as SPECT_MNGMT_LOOSE with the exception that Country IE
1470 * adoption is done regardless of capability spectrum_management
1471 */
1472#define SPECT_MNGMT_LOOSE_11H_D 4 /* operation defined above */
1473
1474/* bit position in per_chan_info; these depend on current country/regulatory domain */
1475#define WL_CHAN_VALID_HW (1u << 0) /* valid with current HW */
1476#define WL_CHAN_VALID_SW (1u << 1) /* valid with current country setting */
1477#define WL_CHAN_BAND_5G (1u << 2) /* 5GHz-band channel */
1478#define WL_CHAN_RADAR (1u << 3) /* radar sensitive channel */
1479#define WL_CHAN_INACTIVE (1u << 4) /* temporarily inactive due to radar */
1480#define WL_CHAN_PASSIVE (1u << 5) /* channel is in passive mode */
1481#define WL_CHAN_RESTRICTED (1u << 6) /* restricted use channel */
1482#define WL_CHAN_RADAR_EU_WEATHER (1u << 7) /* EU Radar weather channel.
1483 * Implies an EU Radar channel.
1484 */
1485#define WL_CHAN_CLM_RESTRICTED (1u << 8) /* channel restricted in CLM (i.e. by default) */
1486#define WL_CHAN_BAND_6G (1u << 9) /* 6GHz-band channel */
1487#define WL_CHAN_OOS_SHIFT 24u /* shift for OOS field */
1488#define WL_CHAN_OOS_MASK 0xFF000000u /* field specifying minutes remaining for this
1489 * channel's out-of-service period due to radar
1490 * detection
1491 */
1492
1493/* BTC mode used by "btc_mode" iovar */
1494#define WL_BTC_DISABLE 0 /* disable BT coexistence */
1495#define WL_BTC_FULLTDM 1 /* full TDM COEX */
1496#define WL_BTC_ENABLE 1 /* full TDM COEX to maintain backward compatiblity */
1497#define WL_BTC_PREMPT 2 /* full TDM COEX with preemption */
1498#define WL_BTC_LITE 3 /* light weight coex for large isolation platform */
1499#define WL_BTC_PARALLEL 4 /* BT and WLAN run in parallel with separate antenna */
1500#define WL_BTC_HYBRID 5 /* hybrid coex, only ack is allowed to transmit in BT slot */
1501#define WL_BTC_DEFAULT 8 /* set the default mode for the device */
1502#define WL_INF_BTC_DISABLE 0
1503#define WL_INF_BTC_ENABLE 1
1504#define WL_INF_BTC_AUTO 3
1505
1506/* BTC wire used by "btc_wire" iovar */
1507#define WL_BTC_DEFWIRE 0 /* use default wire setting */
1508#define WL_BTC_2WIRE 2 /* use 2-wire BTC */
1509#define WL_BTC_3WIRE 3 /* use 3-wire BTC */
1510#define WL_BTC_4WIRE 4 /* use 4-wire BTC */
1511
1512/* BTC flags: BTC configuration that can be set by host */
1513#define WL_BTC_FLAG_PREMPT (1 << 0)
1514#define WL_BTC_FLAG_BT_DEF (1 << 1)
1515#define WL_BTC_FLAG_ACTIVE_PROT (1 << 2)
1516#define WL_BTC_FLAG_SIM_RSP (1 << 3)
1517#define WL_BTC_FLAG_PS_PROTECT (1 << 4)
1518#define WL_BTC_FLAG_SIM_TX_LP (1 << 5)
1519#define WL_BTC_FLAG_ECI (1 << 6)
1520#define WL_BTC_FLAG_LIGHT (1 << 7)
1521#define WL_BTC_FLAG_PARALLEL (1 << 8)
1522
1523/* maximum channels returned by the get valid channels iovar */
1524#define WL_NUMCHANNELS 64
1525
965f77c4
RC
1526/* Channels break down for 2G BAND
1527* 2G 20MHz = 14
1528*
1529* 2G 40MHz
1530* 9 * 2 = 18
1531*
1532* 2G tot = 14 + 18 = 32
1533*
1534* Channels Break down for 5G BAND
1535* 5G 20MHz
1536* 36-48 4
1537* 52-64 4
1538* 100-144 12
1539* 149-161 4
1540* 165 1
1541* 5G 20 subtot = 25
1542*
1543* 5G 40 12 * 2 = 24
1544* 5G 80 6 * 4 = 24
1545* 5G 160 2 * 8 = 16
1546*
1547* 5G total = 25 + 24+ 24+ 16 = 89
1548*
1549* TOTAL 2G and 5G
1550* 2G + 5G = (32 + 89) = 121
1551*
1552* Channels Break down for 6G BAND
1553* 20MHz = 59
1554* 40MHz 29 * 2 = 58
1555* 80MHz 14 * 4 = 56
1556* 160MHz 7 * 8 = 56
1557* 6G total = 59 + 58 + 56 + 56 = 229
1558*
1559* Toal WL_NUMCHANSPECS 2G/5G/6G
1560* total = 32 + 89 + 229 = 350
1561*
1562* IF 5g 80+80 is defined
1563* 80MHz cf pairs are:
1564* 42 106
1565* 42 122
1566* 42 138
1567* 42 155
1568* 58 106
1569* 58 122
1570* 58 138
1571* 58 155
1572* 106 138
1573* 106 155
1574* 122 155
1575* 138 155
1576*
1577*
1578* 12 pairs * 8 primary channels = 96
1579* TOTAL 2G + 5G + 5G (80 + 80)
1580* 32 + 89 + 96 = 217
1581*
1582*TOTAL 2G + 5G + 5G (80 + 80) +6G (excluding 80 + 80)
1583* 32 + 89 + 96 + 229 = 446
1584*
1585*/
1586#ifdef WL_BAND6G
1587/* max number of chanspecs (used by the iovar to calc. buf space) */
1588#ifdef WL11AC_80P80
1589#define WL_NUMCHANSPECS 446
1590#else
1591#define WL_NUMCHANSPECS 350
1592#endif // endif
1593#else
d2839953
RC
1594/* max number of chanspecs (used by the iovar to calc. buf space) */
1595#ifdef WL11AC_80P80
1596#define WL_NUMCHANSPECS 206
1597#else
1598#define WL_NUMCHANSPECS 110
1599#endif // endif
965f77c4 1600#endif /* WL_BAND6G */
d2839953
RC
1601
1602/* WDS link local endpoint WPA role */
1603#define WL_WDS_WPA_ROLE_AUTH 0 /* authenticator */
1604#define WL_WDS_WPA_ROLE_SUP 1 /* supplicant */
1605#define WL_WDS_WPA_ROLE_AUTO 255 /* auto, based on mac addr value */
1606
1607/* Base offset values */
1608#define WL_PKT_FILTER_BASE_PKT 0
1609#define WL_PKT_FILTER_BASE_END 1
1610#define WL_PKT_FILTER_BASE_D11_H 2 /* May be removed */
1611#define WL_PKT_FILTER_BASE_D11_D 3 /* May be removed */
1612#define WL_PKT_FILTER_BASE_ETH_H 4
1613#define WL_PKT_FILTER_BASE_ETH_D 5
1614#define WL_PKT_FILTER_BASE_ARP_H 6
1615#define WL_PKT_FILTER_BASE_ARP_D 7 /* May be removed */
1616#define WL_PKT_FILTER_BASE_IP4_H 8
1617#define WL_PKT_FILTER_BASE_IP4_D 9
1618#define WL_PKT_FILTER_BASE_IP6_H 10
1619#define WL_PKT_FILTER_BASE_IP6_D 11
1620#define WL_PKT_FILTER_BASE_TCP_H 12
1621#define WL_PKT_FILTER_BASE_TCP_D 13 /* May be removed */
1622#define WL_PKT_FILTER_BASE_UDP_H 14
1623#define WL_PKT_FILTER_BASE_UDP_D 15
1624#define WL_PKT_FILTER_BASE_IP6_P 16
1625#define WL_PKT_FILTER_BASE_COUNT 17 /* May be removed */
1626
1627/* String mapping for bases that may be used by applications or debug */
1628#define WL_PKT_FILTER_BASE_NAMES \
1629 { "START", WL_PKT_FILTER_BASE_PKT }, \
1630 { "END", WL_PKT_FILTER_BASE_END }, \
1631 { "ETH_H", WL_PKT_FILTER_BASE_ETH_H }, \
1632 { "ETH_D", WL_PKT_FILTER_BASE_ETH_D }, \
1633 { "D11_H", WL_PKT_FILTER_BASE_D11_H }, \
1634 { "D11_D", WL_PKT_FILTER_BASE_D11_D }, \
1635 { "ARP_H", WL_PKT_FILTER_BASE_ARP_H }, \
1636 { "IP4_H", WL_PKT_FILTER_BASE_IP4_H }, \
1637 { "IP4_D", WL_PKT_FILTER_BASE_IP4_D }, \
1638 { "IP6_H", WL_PKT_FILTER_BASE_IP6_H }, \
1639 { "IP6_D", WL_PKT_FILTER_BASE_IP6_D }, \
1640 { "IP6_P", WL_PKT_FILTER_BASE_IP6_P }, \
1641 { "TCP_H", WL_PKT_FILTER_BASE_TCP_H }, \
1642 { "TCP_D", WL_PKT_FILTER_BASE_TCP_D }, \
1643 { "UDP_H", WL_PKT_FILTER_BASE_UDP_H }, \
1644 { "UDP_D", WL_PKT_FILTER_BASE_UDP_D }
1645
1646/* Flags for a pattern list element */
1647#define WL_PKT_FILTER_MFLAG_NEG 0x0001
1648
1649/*
1650 * Packet engine interface
1651 */
1652
1653#define WL_PKTENG_PER_TX_START 0x01
1654#define WL_PKTENG_PER_TX_STOP 0x02
1655#define WL_PKTENG_PER_RX_START 0x04
1656#define WL_PKTENG_PER_RX_WITH_ACK_START 0x05
1657#define WL_PKTENG_PER_TX_WITH_ACK_START 0x06
1658#define WL_PKTENG_PER_RX_STOP 0x08
1659#define WL_PKTENG_PER_RU_TX_START 0x09
1660#define WL_PKTENG_PER_TRIG_TX_START 0x0a
1661#define WL_PKTENG_PER_MASK 0xff
1662
1663#define WL_PKTENG_SYNCHRONOUS 0x100 /* synchronous flag */
1664#define WL_PKTENG_SYNCHRONOUS_UNBLK 0x200 /* synchronous unblock flag */
1665#define WL_PKTENG_COLLECT 0x400 /* Save last Rx'ed packet */
1666#ifdef PKTENG_LONGPKTSZ
1667/* max pktsz limit for pkteng */
1668#define WL_PKTENG_MAXPKTSZ PKTENG_LONGPKTSZ
1669#else
1670#define WL_PKTENG_MAXPKTSZ 16384
1671#endif // endif
1672
1673#define NUM_80211b_RATES 4
1674#define NUM_80211ag_RATES 8
1675#define NUM_80211n_RATES 32
1676#define NUM_80211_RATES (NUM_80211b_RATES+NUM_80211ag_RATES+NUM_80211n_RATES)
1677
1678/*
1679 * WOWL capability/override settings
1680 */
1681#define WL_WOWL_MAGIC (1 << 0) /* Wakeup on Magic packet */
1682#define WL_WOWL_NET (1 << 1) /* Wakeup on Netpattern */
1683#define WL_WOWL_DIS (1 << 2) /* Wakeup on loss-of-link due to Disassoc/Deauth */
1684#define WL_WOWL_RETR (1 << 3) /* Wakeup on retrograde TSF */
1685#define WL_WOWL_BCN (1 << 4) /* Wakeup on loss of beacon */
1686#define WL_WOWL_TST (1 << 5) /* Wakeup after test */
1687#define WL_WOWL_M1 (1 << 6) /* Wakeup after PTK refresh */
1688#define WL_WOWL_EAPID (1 << 7) /* Wakeup after receipt of EAP-Identity Req */
1689#define WL_WOWL_PME_GPIO (1 << 8) /* Wakeind via PME(0) or GPIO(1) */
1690#define WL_WOWL_ULP_BAILOUT (1 << 8) /* wakeind via unknown pkt by basic ULP-offloads -
1691 * WL_WOWL_ULP_BAILOUT - same as WL_WOWL_PME_GPIO used only for DONGLE BUILDS
1692 */
1693#define WL_WOWL_NEEDTKIP1 (1 << 9) /* need tkip phase 1 key to be updated by the driver */
1694#define WL_WOWL_GTK_FAILURE (1 << 10) /* enable wakeup if GTK fails */
1695#define WL_WOWL_EXTMAGPAT (1 << 11) /* support extended magic packets */
1696#define WL_WOWL_ARPOFFLOAD (1 << 12) /* support ARP/NS/keepalive offloading */
1697#define WL_WOWL_WPA2 (1 << 13) /* read protocol version for EAPOL frames */
1698#define WL_WOWL_KEYROT (1 << 14) /* If the bit is set, use key rotaton */
1699#define WL_WOWL_BCAST (1 << 15) /* If the bit is set, frm received was bcast frame */
1700#define WL_WOWL_SCANOL (1 << 16) /* If the bit is set, scan offload is enabled */
1701#define WL_WOWL_TCPKEEP_TIME (1 << 17) /* Wakeup on tcpkeep alive timeout */
1702#define WL_WOWL_MDNS_CONFLICT (1 << 18) /* Wakeup on mDNS Conflict Resolution */
1703#define WL_WOWL_MDNS_SERVICE (1 << 19) /* Wakeup on mDNS Service Connect */
1704#define WL_WOWL_TCPKEEP_DATA (1 << 20) /* tcp keepalive got data */
1705#define WL_WOWL_FW_HALT (1 << 21) /* Firmware died in wowl mode */
1706#define WL_WOWL_ENAB_HWRADIO (1 << 22) /* Enable detection of radio button changes */
1707#define WL_WOWL_MIC_FAIL (1 << 23) /* Offloads detected MIC failure(s) */
1708#define WL_WOWL_UNASSOC (1 << 24) /* Wakeup in Unassociated state (Net/Magic Pattern) */
1709#define WL_WOWL_SECURE (1 << 25) /* Wakeup if received matched secured pattern */
1710#define WL_WOWL_EXCESS_WAKE (1 << 26) /* Excess wake */
1711#define WL_WOWL_LINKDOWN (1 << 31) /* Link Down indication in WoWL mode */
1712
1713#define WL_WOWL_TCPKEEP (1 << 20) /* temp copy to satisfy automerger */
1714#define MAGIC_PKT_MINLEN 102 /* Magic pkt min length is 6 * 0xFF + 16 * ETHER_ADDR_LEN */
1715
1716#define WOWL_PATTEN_TYPE_ARP (1 << 0) /* ARP offload Pattern */
1717#define WOWL_PATTEN_TYPE_NA (1 << 1) /* NA offload Pattern */
1718
1719#define MAGIC_PKT_MINLEN 102 /* Magic pkt min length is 6 * 0xFF + 16 * ETHER_ADDR_LEN */
1720#define MAGIC_PKT_NUM_MAC_ADDRS 16
1721
1722/* Overlap BSS Scan parameters default, minimum, maximum */
1723#define WLC_OBSS_SCAN_PASSIVE_DWELL_DEFAULT 20 /* unit TU */
1724#define WLC_OBSS_SCAN_PASSIVE_DWELL_MIN 5 /* unit TU */
1725#define WLC_OBSS_SCAN_PASSIVE_DWELL_MAX 1000 /* unit TU */
1726#define WLC_OBSS_SCAN_ACTIVE_DWELL_DEFAULT 10 /* unit TU */
1727#define WLC_OBSS_SCAN_ACTIVE_DWELL_MIN 10 /* unit TU */
1728#define WLC_OBSS_SCAN_ACTIVE_DWELL_MAX 1000 /* unit TU */
1729#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_DEFAULT 300 /* unit Sec */
1730#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MIN 10 /* unit Sec */
1731#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MAX 900 /* unit Sec */
1732#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_DEFAULT 5
1733#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MIN 5
1734#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MAX 100
1735#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_DEFAULT 200 /* unit TU */
1736#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MIN 200 /* unit TU */
1737#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MAX 10000 /* unit TU */
1738#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_DEFAULT 20 /* unit TU */
1739#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MIN 20 /* unit TU */
1740#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MAX 10000 /* unit TU */
1741#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_DEFAULT 25 /* unit percent */
1742#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MIN 0 /* unit percent */
1743#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MAX 100 /* unit percent */
1744
1745#define WL_MIN_NUM_OBSS_SCAN_ARG 7 /* minimum number of arguments required for OBSS Scan */
1746
1747#define WL_COEX_INFO_MASK 0x07
1748#define WL_COEX_INFO_REQ 0x01
1749#define WL_COEX_40MHZ_INTOLERANT 0x02
1750#define WL_COEX_WIDTH20 0x04
1751
1752#define WLC_RSSI_INVALID 0 /* invalid RSSI value */
1753
1754#define MAX_RSSI_LEVELS 8
1755
1756/* **** EXTLOG **** */
1757#define EXTLOG_CUR_VER 0x0100
1758
1759#define MAX_ARGSTR_LEN 18 /* At least big enough for storing ETHER_ADDR_STR_LEN */
1760
1761/* log modules (bitmap) */
1762#define LOG_MODULE_COMMON 0x0001
1763#define LOG_MODULE_ASSOC 0x0002
1764#define LOG_MODULE_EVENT 0x0004
1765#define LOG_MODULE_MAX 3 /* Update when adding module */
1766
1767/* log levels */
1768#define WL_LOG_LEVEL_DISABLE 0
1769#define WL_LOG_LEVEL_ERR 1
1770#define WL_LOG_LEVEL_WARN 2
1771#define WL_LOG_LEVEL_INFO 3
1772#define WL_LOG_LEVEL_MAX WL_LOG_LEVEL_INFO /* Update when adding level */
1773
1774/* flag */
1775#define LOG_FLAG_EVENT 1
1776
1777/* log arg_type */
1778#define LOG_ARGTYPE_NULL 0
1779#define LOG_ARGTYPE_STR 1 /* %s */
1780#define LOG_ARGTYPE_INT 2 /* %d */
1781#define LOG_ARGTYPE_INT_STR 3 /* %d...%s */
1782#define LOG_ARGTYPE_STR_INT 4 /* %s...%d */
1783
1784/* 802.11 Mgmt Packet flags */
1785#define VNDR_IE_BEACON_FLAG 0x1
1786#define VNDR_IE_PRBRSP_FLAG 0x2
1787#define VNDR_IE_ASSOCRSP_FLAG 0x4
1788#define VNDR_IE_AUTHRSP_FLAG 0x8
1789#define VNDR_IE_PRBREQ_FLAG 0x10
1790#define VNDR_IE_ASSOCREQ_FLAG 0x20
1791#define VNDR_IE_IWAPID_FLAG 0x40 /* vendor IE in IW advertisement protocol ID field */
1792#define VNDR_IE_AUTHREQ_FLAG 0x80
1793#define VNDR_IE_CUSTOM_FLAG 0x100 /* allow custom IE id */
1794#define VNDR_IE_DISASSOC_FLAG 0x200
1795
1796#if defined(WLP2P)
1797/* P2P Action Frames flags (spec ordered) */
1798#define VNDR_IE_GONREQ_FLAG 0x001000
1799#define VNDR_IE_GONRSP_FLAG 0x002000
1800#define VNDR_IE_GONCFM_FLAG 0x004000
1801#define VNDR_IE_INVREQ_FLAG 0x008000
1802#define VNDR_IE_INVRSP_FLAG 0x010000
1803#define VNDR_IE_DISREQ_FLAG 0x020000
1804#define VNDR_IE_DISRSP_FLAG 0x040000
1805#define VNDR_IE_PRDREQ_FLAG 0x080000
1806#define VNDR_IE_PRDRSP_FLAG 0x100000
1807
1808#define VNDR_IE_P2PAF_SHIFT 12
1809#endif /* WLP2P */
1810
1811/* channel interference measurement (chanim) related defines */
1812
1813/* chanim mode */
1814#define CHANIM_DISABLE 0 /* disabled */
1815#define CHANIM_DETECT 1 /* detection only */
1816#define CHANIM_EXT 2 /* external state machine */
1817#define CHANIM_ACT 3 /* full internal state machine, detect + act */
1818#define CHANIM_MODE_MAX 4
1819
1820/* define for apcs reason code */
1821#define APCS_INIT 0
1822#define APCS_IOCTL 1
1823#define APCS_CHANIM 2
1824#define APCS_CSTIMER 3
1825#define APCS_TXDLY 5
1826#define APCS_NONACSD 6
1827#define APCS_DFS_REENTRY 7
1828#define APCS_TXFAIL 8
1829#define APCS_MAX 9
1830
1831/* number of ACS record entries */
1832#define CHANIM_ACS_RECORD 10
1833
1834/* CHANIM */
1835#define CCASTATS_TXDUR 0
1836#define CCASTATS_INBSS 1
1837#define CCASTATS_OBSS 2
1838#define CCASTATS_NOCTG 3
1839#define CCASTATS_NOPKT 4
1840#define CCASTATS_DOZE 5
1841#define CCASTATS_TXOP 6
1842#define CCASTATS_GDTXDUR 7
1843#define CCASTATS_BDTXDUR 8
1844
1845#ifndef WLCHANIM_V2
1846#define CCASTATS_MAX 9
1847#else /* WLCHANIM_V2 */
1848#define CCASTATS_MYRX 9
1849#define CCASTATS_MAX 10
1850#endif /* WLCHANIM_V2 */
1851
1852#define WL_CHANIM_COUNT_ALL 0xff
1853#define WL_CHANIM_COUNT_ONE 0x1
1854
1855/* ap tpc modes */
1856#define AP_TPC_OFF 0
1857#define AP_TPC_BSS_PWR 1 /* BSS power control */
1858#define AP_TPC_AP_PWR 2 /* AP power control */
1859#define AP_TPC_AP_BSS_PWR 3 /* Both AP and BSS power control */
1860#define AP_TPC_MAX_LINK_MARGIN 127
1861
1862/* ap tpc modes */
1863#define AP_TPC_OFF 0
1864#define AP_TPC_BSS_PWR 1 /* BSS power control */
1865#define AP_TPC_AP_PWR 2 /* AP power control */
1866#define AP_TPC_AP_BSS_PWR 3 /* Both AP and BSS power control */
1867#define AP_TPC_MAX_LINK_MARGIN 127
1868
1869/* state */
1870#define WL_P2P_DISC_ST_SCAN 0
1871#define WL_P2P_DISC_ST_LISTEN 1
1872#define WL_P2P_DISC_ST_SEARCH 2
1873
1874/* i/f type */
1875#define WL_P2P_IF_CLIENT 0
1876#define WL_P2P_IF_GO 1
1877#define WL_P2P_IF_DYNBCN_GO 2
1878#define WL_P2P_IF_DEV 3
1879
1880/* p2p GO configuration */
1881#define WL_P2P_ENABLE_CONF 1 /* configure */
1882#define WL_P2P_DISABLE_CONF 0 /* un-configure */
1883
1884/* count */
1885#define WL_P2P_SCHED_RSVD 0
1886#define WL_P2P_SCHED_REPEAT 255 /* anything > 255 will be treated as 255 */
1887
1888#define WL_P2P_SCHED_FIXED_LEN 3
1889
1890/* schedule type */
1891#define WL_P2P_SCHED_TYPE_ABS 0 /* Scheduled Absence */
1892#define WL_P2P_SCHED_TYPE_REQ_ABS 1 /* Requested Absence */
1893
965f77c4 1894/* at some point we may need bitvec here (combination of actions) */
d2839953
RC
1895/* schedule action during absence periods (for WL_P2P_SCHED_ABS type) */
1896#define WL_P2P_SCHED_ACTION_NONE 0 /* no action */
1897#define WL_P2P_SCHED_ACTION_DOZE 1 /* doze */
1898/* schedule option - WL_P2P_SCHED_TYPE_REQ_ABS */
1899#define WL_P2P_SCHED_ACTION_GOOFF 2 /* turn off GO beacon/prbrsp functions */
1900/* schedule option - WL_P2P_SCHED_TYPE_XXX */
1901#define WL_P2P_SCHED_ACTION_RESET 255 /* reset */
1902
965f77c4 1903/* at some point we may need bitvec here (combination of options) */
d2839953
RC
1904/* schedule option - WL_P2P_SCHED_TYPE_ABS */
1905#define WL_P2P_SCHED_OPTION_NORMAL 0 /* normal start/interval/duration/count */
1906#define WL_P2P_SCHED_OPTION_BCNPCT 1 /* percentage of beacon interval */
1907/* schedule option - WL_P2P_SCHED_TYPE_REQ_ABS */
1908#define WL_P2P_SCHED_OPTION_TSFOFS 2 /* normal start/internal/duration/count with
1909 * start being an offset of the 'current' TSF
1910 */
1911
1912/* feature flags */
1913#define WL_P2P_FEAT_GO_CSA (1 << 0) /* GO moves with the STA using CSA method */
1914#define WL_P2P_FEAT_GO_NOLEGACY (1 << 1) /* GO does not probe respond to non-p2p probe
1915 * requests
1916 */
1917#define WL_P2P_FEAT_RESTRICT_DEV_RESP (1 << 2) /* Restrict p2p dev interface from responding */
1918
1919/* n-mode support capability */
1920/* 2x2 includes both 1x1 & 2x2 devices
1921 * reserved #define 2 for future when we want to separate 1x1 & 2x2 and
1922 * control it independently
1923 */
1924#define WL_11N_2x2 1
1925#define WL_11N_3x3 3
1926#define WL_11N_4x4 4
1927
1928/* define 11n feature disable flags */
1929#define WLFEATURE_DISABLE_11N 0x00000001
1930#define WLFEATURE_DISABLE_11N_STBC_TX 0x00000002
1931#define WLFEATURE_DISABLE_11N_STBC_RX 0x00000004
1932#define WLFEATURE_DISABLE_11N_SGI_TX 0x00000008
1933#define WLFEATURE_DISABLE_11N_SGI_RX 0x00000010
1934#define WLFEATURE_DISABLE_11N_AMPDU_TX 0x00000020
1935#define WLFEATURE_DISABLE_11N_AMPDU_RX 0x00000040
1936#define WLFEATURE_DISABLE_11N_GF 0x00000080
1937
d2839953
RC
1938/* op code in nat_cfg */
1939#define NAT_OP_ENABLE 1 /* enable NAT on given interface */
1940#define NAT_OP_DISABLE 2 /* disable NAT on given interface */
1941#define NAT_OP_DISABLE_ALL 3 /* disable NAT on all interfaces */
1942
1943/* NAT state */
1944#define NAT_STATE_ENABLED 1 /* NAT is enabled */
1945#define NAT_STATE_DISABLED 2 /* NAT is disabled */
1946
1947#define CHANNEL_5G_LOW_START 36 /* 5G low (36..48) CDD enable/disable bit mask */
1948#define CHANNEL_5G_MID_START 52 /* 5G mid (52..64) CDD enable/disable bit mask */
1949#define CHANNEL_5G_HIGH_START 100 /* 5G high (100..140) CDD enable/disable bit mask */
1950#define CHANNEL_5G_UPPER_START 149 /* 5G upper (149..161) CDD enable/disable bit mask */
1951
1952/* D0 Coalescing */
1953#define IPV4_ARP_FILTER 0x0001
1954#define IPV4_NETBT_FILTER 0x0002
1955#define IPV4_LLMNR_FILTER 0x0004
1956#define IPV4_SSDP_FILTER 0x0008
1957#define IPV4_WSD_FILTER 0x0010
1958#define IPV6_NETBT_FILTER 0x0200
1959#define IPV6_LLMNR_FILTER 0x0400
1960#define IPV6_SSDP_FILTER 0x0800
1961#define IPV6_WSD_FILTER 0x1000
1962
1963/* Network Offload Engine */
1964#define NWOE_OL_ENABLE 0x00000001
1965
1966/*
1967 * Traffic management structures/defines.
1968 */
1969
1970/* Traffic management bandwidth parameters */
1971#define TRF_MGMT_MAX_PRIORITIES 3
1972
1973#define TRF_MGMT_FLAG_ADD_DSCP 0x0001 /* Add DSCP to IP TOS field */
1974#define TRF_MGMT_FLAG_DISABLE_SHAPING 0x0002 /* Don't shape traffic */
1975#define TRF_MGMT_FLAG_MANAGE_LOCAL_TRAFFIC 0x0008 /* Manage traffic over our local subnet */
1976#define TRF_MGMT_FLAG_FILTER_ON_MACADDR 0x0010 /* filter on MAC address */
1977#define TRF_MGMT_FLAG_NO_RX 0x0020 /* do not apply fiters to rx packets */
1978
1979#define TRF_FILTER_MAC_ADDR 0x0001 /* L2 filter use dst mac address for filtering */
1980#define TRF_FILTER_IP_ADDR 0x0002 /* L3 filter use ip ddress for filtering */
1981#define TRF_FILTER_L4 0x0004 /* L4 filter use tcp/udp for filtering */
1982#define TRF_FILTER_DWM 0x0008 /* L3 filter use DSCP for filtering */
1983#define TRF_FILTER_FAVORED 0x0010 /* Tag the packet FAVORED */
1984
1985/* WNM/NPS subfeatures mask */
1986#define WL_WNM_BSSTRANS 0x00000001
1987#define WL_WNM_PROXYARP 0x00000002
1988#define WL_WNM_MAXIDLE 0x00000004
1989#define WL_WNM_TIMBC 0x00000008
1990#define WL_WNM_TFS 0x00000010
1991#define WL_WNM_SLEEP 0x00000020
1992#define WL_WNM_DMS 0x00000040
1993#define WL_WNM_FMS 0x00000080
1994#define WL_WNM_NOTIF 0x00000100
1995#define WL_WNM_WBTEXT 0x00000200
1996#define WL_WNM_ESTM 0x00000400
1997#define WL_WNM_MAX 0x00000800
1998#ifdef WLWNM_BRCM
1999#define BRCM_WNM_FEATURE_SET\
2000 (WL_WNM_PROXYARP | \
2001 WL_WNM_SLEEP | \
2002 WL_WNM_FMS | \
2003 WL_WNM_TFS | \
2004 WL_WNM_TIMBC | \
2005 WL_WNM_BSSTRANS | \
2006 WL_WNM_DMS | \
2007 WL_WNM_NOTIF | \
2008 0)
2009#endif /* WLWNM_BRCM */
2010#ifndef ETHER_MAX_DATA
2011#define ETHER_MAX_DATA 1500
2012#endif /* ETHER_MAX_DATA */
2013
2014/* Different discovery modes for dpt */
2015#define DPT_DISCOVERY_MANUAL 0x01 /* manual discovery mode */
2016#define DPT_DISCOVERY_AUTO 0x02 /* auto discovery mode */
2017#define DPT_DISCOVERY_SCAN 0x04 /* scan-based discovery mode */
2018
2019/* different path selection values */
2020#define DPT_PATHSEL_AUTO 0 /* auto mode for path selection */
2021#define DPT_PATHSEL_DIRECT 1 /* always use direct DPT path */
2022#define DPT_PATHSEL_APPATH 2 /* always use AP path */
2023
2024/* different ops for deny list */
2025#define DPT_DENY_LIST_ADD 1 /* add to dpt deny list */
2026#define DPT_DENY_LIST_REMOVE 2 /* remove from dpt deny list */
2027
2028/* different ops for manual end point */
2029#define DPT_MANUAL_EP_CREATE 1 /* create manual dpt endpoint */
2030#define DPT_MANUAL_EP_MODIFY 2 /* modify manual dpt endpoint */
2031#define DPT_MANUAL_EP_DELETE 3 /* delete manual dpt endpoint */
2032
2033/* flags to indicate DPT status */
2034#define DPT_STATUS_ACTIVE 0x01 /* link active (though may be suspended) */
2035#define DPT_STATUS_AES 0x02 /* link secured through AES encryption */
2036#define DPT_STATUS_FAILED 0x04 /* DPT link failed */
2037
2038#ifdef WLTDLS
2039/* different ops for manual end point */
2040#define TDLS_MANUAL_EP_CREATE 1 /* create manual dpt endpoint */
2041#define TDLS_MANUAL_EP_MODIFY 2 /* modify manual dpt endpoint */
2042#define TDLS_MANUAL_EP_DELETE 3 /* delete manual dpt endpoint */
2043#define TDLS_MANUAL_EP_PM 4 /* put dpt endpoint in PM mode */
2044#define TDLS_MANUAL_EP_WAKE 5 /* wake up dpt endpoint from PM */
2045#define TDLS_MANUAL_EP_DISCOVERY 6 /* discover if endpoint is TDLS capable */
2046#define TDLS_MANUAL_EP_CHSW 7 /* channel switch */
2047#define TDLS_MANUAL_EP_WFD_TPQ 8 /* WiFi-Display Tunneled Probe reQuest */
2048
2049/* modes */
2050#define TDLS_WFD_IE_TX 0
2051#define TDLS_WFD_IE_RX 1
2052#define TDLS_WFD_PROBE_IE_TX 2
2053#define TDLS_WFD_PROBE_IE_RX 3
2054#endif /* WLTDLS */
2055
2056/* define for flag */
2057#define TSPEC_PENDING 0 /* TSPEC pending */
2058#define TSPEC_ACCEPTED 1 /* TSPEC accepted */
2059#define TSPEC_REJECTED 2 /* TSPEC rejected */
2060#define TSPEC_UNKNOWN 3 /* TSPEC unknown */
2061#define TSPEC_STATUS_MASK 7 /* TSPEC status mask */
2062
2063#ifdef BCMCCX
2064/* "wlan_reason" iovar interface */
2065#define WL_WLAN_ASSOC_REASON_NORMAL_NETWORK 0 /* normal WLAN network setup */
2066#define WL_WLAN_ASSOC_REASON_ROAM_FROM_CELLULAR_NETWORK 1 /* roam from Cellular network */
2067#define WL_WLAN_ASSOC_REASON_ROAM_FROM_LAN 2 /* roam from LAN */
2068#define WL_WLAN_ASSOC_REASON_MAX 2 /* largest value allowed */
2069#endif /* BCMCCX */
2070
2071/* Software feature flag defines used by wlfeatureflag */
2072#ifdef WLAFTERBURNER
2073#define WL_SWFL_ABBFL 0x0001 /* Allow Afterburner on systems w/o hardware BFL */
2074#define WL_SWFL_ABENCORE 0x0002 /* Allow AB on non-4318E chips */
2075#endif /* WLAFTERBURNER */
965f77c4 2076#define WL_SWFL_NOHWRADIO 0x0004 /* Disable HW Radio monitor (e.g., Cust Spec) */
d2839953
RC
2077#define WL_SWFL_FLOWCONTROL 0x0008 /* Enable backpressure to OS stack */
2078#define WL_SWFL_WLBSSSORT 0x0010 /* Per-port supports sorting of BSS */
2079
2080#define WL_LIFETIME_MAX 0xFFFF /* Max value in ms */
2081
2082#define CSA_BROADCAST_ACTION_FRAME 0 /* csa broadcast action frame */
2083#define CSA_UNICAST_ACTION_FRAME 1 /* csa unicast action frame */
2084
2085/* Roaming trigger definitions for WLC_SET_ROAM_TRIGGER.
2086 *
2087 * (-100 < value < 0) value is used directly as a roaming trigger in dBm
2088 * (0 <= value) value specifies a logical roaming trigger level from
2089 * the list below
2090 *
2091 * WLC_GET_ROAM_TRIGGER always returns roaming trigger value in dBm, never
2092 * the logical roam trigger value.
2093 */
2094#define WLC_ROAM_TRIGGER_DEFAULT 0 /* default roaming trigger */
2095#define WLC_ROAM_TRIGGER_BANDWIDTH 1 /* optimize for bandwidth roaming trigger */
2096#define WLC_ROAM_TRIGGER_DISTANCE 2 /* optimize for distance roaming trigger */
2097#define WLC_ROAM_TRIGGER_AUTO 3 /* auto-detect environment */
2098#define WLC_ROAM_TRIGGER_MAX_VALUE 3 /* max. valid value */
2099
2100#define WLC_ROAM_NEVER_ROAM_TRIGGER (-100) /* Avoid Roaming by setting a large value */
2101
2102/* Preferred Network Offload (PNO, formerly PFN) defines */
2103#define WPA_AUTH_PFN_ANY 0xffffffff /* for PFN, match only ssid */
2104
2105#define SORT_CRITERIA_BIT 0
2106#define AUTO_NET_SWITCH_BIT 1
2107#define ENABLE_BKGRD_SCAN_BIT 2
2108#define IMMEDIATE_SCAN_BIT 3
2109#define AUTO_CONNECT_BIT 4
2110#define ENABLE_BD_SCAN_BIT 5
2111#define ENABLE_ADAPTSCAN_BIT 6
2112#define IMMEDIATE_EVENT_BIT 8
2113#define SUPPRESS_SSID_BIT 9
2114#define ENABLE_NET_OFFLOAD_BIT 10
2115/* report found/lost events for SSID and BSSID networks seperately */
2116#define REPORT_SEPERATELY_BIT 11
2117#define BESTN_BSSID_ONLY_BIT 12
2118
2119#define SORT_CRITERIA_MASK 0x0001
2120#define AUTO_NET_SWITCH_MASK 0x0002
2121#define ENABLE_BKGRD_SCAN_MASK 0x0004
2122#define IMMEDIATE_SCAN_MASK 0x0008
2123#define AUTO_CONNECT_MASK 0x0010
2124
2125#define ENABLE_BD_SCAN_MASK 0x0020
2126#define ENABLE_ADAPTSCAN_MASK 0x00c0
2127#define IMMEDIATE_EVENT_MASK 0x0100
2128#define SUPPRESS_SSID_MASK 0x0200
2129#define ENABLE_NET_OFFLOAD_MASK 0x0400
2130/* report found/lost events for SSID and BSSID networks seperately */
2131#define REPORT_SEPERATELY_MASK 0x0800
2132#define BESTN_BSSID_ONLY_MASK 0x1000
2133
2134#define PFN_VERSION 2
2135#ifdef PFN_SCANRESULT_2
2136#define PFN_SCANRESULT_VERSION 2
2137#else
2138#define PFN_SCANRESULT_VERSION 1
2139#endif /* PFN_SCANRESULT_2 */
2140#ifndef MAX_PFN_LIST_COUNT
2141#define MAX_PFN_LIST_COUNT 16
2142#endif /* MAX_PFN_LIST_COUNT */
2143
2144#define PFN_COMPLETE 1
2145#define PFN_INCOMPLETE 0
2146
2147#define DEFAULT_BESTN 2
2148#define DEFAULT_MSCAN 0
2149#define DEFAULT_REPEAT 10
2150#define DEFAULT_EXP 2
2151
2152#define PFN_PARTIAL_SCAN_BIT 0
2153#define PFN_PARTIAL_SCAN_MASK 1
2154
2155#define WL_PFN_SUPPRESSFOUND_MASK 0x08
2156#define WL_PFN_SUPPRESSLOST_MASK 0x10
2157#define WL_PFN_SSID_A_BAND_TRIG 0x20
2158#define WL_PFN_SSID_BG_BAND_TRIG 0x40
2159#define WL_PFN_SSID_IMPRECISE_MATCH 0x80
2160#define WL_PFN_SSID_SAME_NETWORK 0x10000
2161#define WL_PFN_SUPPRESS_AGING_MASK 0x20000
2162#define WL_PFN_FLUSH_ALL_SSIDS 0x40000
2163#define WL_PFN_RSSI_MASK 0xff00
2164#define WL_PFN_RSSI_SHIFT 8
2165
2166#define WL_PFN_REPORT_ALLNET 0
2167#define WL_PFN_REPORT_SSIDNET 1
2168#define WL_PFN_REPORT_BSSIDNET 2
2169
2170#define WL_PFN_CFG_FLAGS_PROHIBITED 0x00000001 /* Accept and use prohibited channels */
2171#define WL_PFN_CFG_FLAGS_HISTORY_OFF 0x00000002 /* Scan history suppressed */
2172
2173#define WL_PFN_HIDDEN_BIT 2
2174#define PNO_SCAN_MAX_FW 508*1000 /* max time scan time in msec */
2175#define PNO_SCAN_MAX_FW_SEC PNO_SCAN_MAX_FW/1000 /* max time scan time in SEC */
2176#define PNO_SCAN_MIN_FW_SEC 10 /* min time scan time in SEC */
2177#define WL_PFN_HIDDEN_MASK 0x4
2178#define MAX_SSID_WHITELIST_NUM 4
2179#define MAX_BSSID_PREF_LIST_NUM 32
2180#define MAX_BSSID_BLACKLIST_NUM 32
2181
2182#ifndef BESTN_MAX
2183#define BESTN_MAX 10
2184#endif // endif
2185
2186#ifndef MSCAN_MAX
2187#define MSCAN_MAX 32
2188#endif // endif
2189
2190/* TCP Checksum Offload error injection for testing */
2191#define TOE_ERRTEST_TX_CSUM 0x00000001
2192#define TOE_ERRTEST_RX_CSUM 0x00000002
2193#define TOE_ERRTEST_RX_CSUM2 0x00000004
2194
2195/* ARP Offload feature flags for arp_ol iovar */
965f77c4
RC
2196#define ARP_OL_AGENT 0x00000001
2197#define ARP_OL_SNOOP 0x00000002
2198#define ARP_OL_HOST_AUTO_REPLY 0x00000004
2199#define ARP_OL_PEER_AUTO_REPLY 0x00000008
2200#define ARP_OL_UPDATE_HOST_CACHE 0x00000010
d2839953
RC
2201
2202/* ARP Offload error injection */
2203#define ARP_ERRTEST_REPLY_PEER 0x1
2204#define ARP_ERRTEST_REPLY_HOST 0x2
2205
2206#define ARP_MULTIHOMING_MAX 8 /* Maximum local host IP addresses */
2207#if defined(WL_PKT_FLTR_EXT) && !defined(WL_PKT_FLTR_EXT_DISABLED)
2208#define ND_MULTIHOMING_MAX 32 /* Maximum local host IP addresses */
2209#else
2210#define ND_MULTIHOMING_MAX 10 /* Maximum local host IP addresses */
2211#endif /* WL_PKT_FLTR_EXT && !WL_PKT_FLTR_EXT_DISABLED */
2212#define ND_REQUEST_MAX 5 /* Max set of offload params */
2213/* AOAC wake event flag */
2214#define WAKE_EVENT_NLO_DISCOVERY_BIT 1
2215#define WAKE_EVENT_AP_ASSOCIATION_LOST_BIT 2
2216#define WAKE_EVENT_GTK_HANDSHAKE_ERROR_BIT 4
2217#define WAKE_EVENT_4WAY_HANDSHAKE_REQUEST_BIT 8
2218#define WAKE_EVENT_NET_PACKET_BIT 0x10
2219
2220#define MAX_NUM_WOL_PATTERN 22 /* LOGO requirements min 22 */
2221
2222/* Packet filter operation mode */
2223/* True: 1; False: 0 */
2224#define PKT_FILTER_MODE_FORWARD_ON_MATCH 1
2225/* Enable and disable pkt_filter as a whole */
2226#define PKT_FILTER_MODE_DISABLE 2
2227/* Cache first matched rx pkt(be queried by host later) */
2228#define PKT_FILTER_MODE_PKT_CACHE_ON_MATCH 4
2229/* If pkt_filter is enabled and no filter is set, don't forward anything */
2230#define PKT_FILTER_MODE_PKT_FORWARD_OFF_DEFAULT 8
2231
2232#ifdef DONGLEOVERLAYS
2233#define OVERLAY_IDX_MASK 0x000000ff
2234#define OVERLAY_IDX_SHIFT 0
2235#define OVERLAY_FLAGS_MASK 0xffffff00
2236#define OVERLAY_FLAGS_SHIFT 8
2237/* overlay written to device memory immediately after loading the base image */
2238#define OVERLAY_FLAG_POSTLOAD 0x100
2239/* defer overlay download until the device responds w/WLC_E_OVL_DOWNLOAD event */
2240#define OVERLAY_FLAG_DEFER_DL 0x200
2241/* overlay downloaded prior to the host going to sleep */
2242#define OVERLAY_FLAG_PRESLEEP 0x400
2243#define OVERLAY_DOWNLOAD_CHUNKSIZE 1024
2244#endif /* DONGLEOVERLAYS */
2245
2246/* reuse two number in the sc/rc space */
2247#define SMFS_CODE_MALFORMED 0xFFFE
2248#define SMFS_CODE_IGNORED 0xFFFD
2249
2250/* RFAWARE def */
2251#define BCM_ACTION_RFAWARE 0x77
2252#define BCM_ACTION_RFAWARE_DCS 0x01
2253
2254/* DCS reason code define */
2255#define BCM_DCS_IOVAR 0x1
2256#define BCM_DCS_UNKNOWN 0xFF
2257
2258#ifdef PROP_TXSTATUS
2259/* Bit definitions for tlv iovar */
2260/*
2261 * enable RSSI signals:
2262 * WLFC_CTL_TYPE_RSSI
2263 */
2264#define WLFC_FLAGS_RSSI_SIGNALS 0x0001
2265
2266/* enable (if/mac_open, if/mac_close,, mac_add, mac_del) signals:
2267 *
2268 * WLFC_CTL_TYPE_MAC_OPEN
2269 * WLFC_CTL_TYPE_MAC_CLOSE
2270 *
2271 * WLFC_CTL_TYPE_INTERFACE_OPEN
2272 * WLFC_CTL_TYPE_INTERFACE_CLOSE
2273 *
2274 * WLFC_CTL_TYPE_MACDESC_ADD
2275 * WLFC_CTL_TYPE_MACDESC_DEL
2276 *
2277 */
2278#define WLFC_FLAGS_XONXOFF_SIGNALS 0x0002
2279
2280/* enable (status, fifo_credit, mac_credit) signals
2281 * WLFC_CTL_TYPE_MAC_REQUEST_CREDIT
2282 * WLFC_CTL_TYPE_TXSTATUS
2283 * WLFC_CTL_TYPE_FIFO_CREDITBACK
2284 */
2285#define WLFC_FLAGS_CREDIT_STATUS_SIGNALS 0x0004
2286
2287#define WLFC_FLAGS_HOST_PROPTXSTATUS_ACTIVE 0x0008
2288#define WLFC_FLAGS_PSQ_GENERATIONFSM_ENABLE 0x0010
2289#define WLFC_FLAGS_PSQ_ZERO_BUFFER_ENABLE 0x0020
2290#define WLFC_FLAGS_HOST_RXRERODER_ACTIVE 0x0040
2291#define WLFC_FLAGS_PKT_STAMP_SIGNALS 0x0080
2292
2293#endif /* PROP_TXSTATUS */
2294
2295#define WL_TIMBC_STATUS_AP_UNKNOWN 255 /* AP status for internal use only */
2296
2297#define WL_DFRTS_LOGIC_OFF 0 /* Feature is disabled */
2298#define WL_DFRTS_LOGIC_OR 1 /* OR all non-zero threshold conditions */
2299#define WL_DFRTS_LOGIC_AND 2 /* AND all non-zero threshold conditions */
2300
2301/* Definitions for Reliable Multicast */
2302#define WL_RELMCAST_MAX_CLIENT 32
2303#define WL_RELMCAST_FLAG_INBLACKLIST 1
2304#define WL_RELMCAST_FLAG_ACTIVEACKER 2
2305#define WL_RELMCAST_FLAG_RELMCAST 4
2306
2307/* structures for proximity detection device role */
2308#define WL_PROXD_MODE_DISABLE 0
2309#define WL_PROXD_MODE_NEUTRAL 1
2310#define WL_PROXD_MODE_INITIATOR 2
2311#define WL_PROXD_MODE_TARGET 3
2312#define WL_PROXD_RANDOM_WAKEUP 0x8000
2313
2314#ifdef NET_DETECT
2315#define NET_DETECT_MAX_WAKE_DATA_SIZE 2048
2316#define NET_DETECT_MAX_PROFILES 16
2317#define NET_DETECT_MAX_CHANNELS 50
2318#endif /* NET_DETECT */
2319
2320/* Bit masks for radio disabled status - returned by WL_GET_RADIO */
2321#define WL_RADIO_SW_DISABLE (1<<0)
2322#define WL_RADIO_HW_DISABLE (1<<1)
2323#define WL_RADIO_MPC_DISABLE (1<<2)
2324#define WL_RADIO_COUNTRY_DISABLE (1<<3) /* some countries don't support any channel */
2325#define WL_RADIO_PERCORE_DISABLE (1<<4) /* Radio diable per core for DVT */
2326#define WL_RADIO_TSYNC_PWRSAVE_DISABLE (1<<5) /* Disable Radio in tsync mode for power saving */
2327
2328#define WL_SPURAVOID_OFF 0
2329#define WL_SPURAVOID_ON1 1
2330#define WL_SPURAVOID_ON2 2
2331
2332#define WL_4335_SPURAVOID_ON1 1
2333#define WL_4335_SPURAVOID_ON2 2
2334#define WL_4335_SPURAVOID_ON3 3
2335#define WL_4335_SPURAVOID_ON4 4
2336#define WL_4335_SPURAVOID_ON5 5
2337#define WL_4335_SPURAVOID_ON6 6
2338#define WL_4335_SPURAVOID_ON7 7
2339#define WL_4335_SPURAVOID_ON8 8
2340#define WL_4335_SPURAVOID_ON9 9
2341
2342/* Override bit for WLC_SET_TXPWR. if set, ignore other level limits */
2343#define WL_TXPWR_OVERRIDE (1U<<31)
2344#define WL_TXPWR_2G (1U<<30)
2345#define WL_TXPWR_5G (1U<<29)
2346#define WL_TXPWR_NEG (1U<<28)
2347
2348#define WL_TXPWR_MASK (~(0x7<<29))
2349#define WL_TXPWR_CORE_MAX (3)
2350#define WL_TXPWR_CORE0_MASK (0x000000FF)
2351#define WL_TXPWR_CORE0_SHIFT (0)
2352#define WL_TXPWR_CORE1_MASK (0x0000FF00)
2353#define WL_TXPWR_CORE1_SHIFT (8)
2354#define WL_TXPWR_CORE2_MASK (0x00FF0000)
2355#define WL_TXPWR_CORE2_SHIFT (16)
2356
2357/* phy types (returned by WLC_GET_PHYTPE) */
2358#define WLC_PHY_TYPE_A 0
2359#define WLC_PHY_TYPE_B 1
2360#define WLC_PHY_TYPE_G 2
2361#define WLC_PHY_TYPE_N 4
2362#define WLC_PHY_TYPE_LP 5
2363#define WLC_PHY_TYPE_SSN 6
2364#define WLC_PHY_TYPE_HT 7
2365#define WLC_PHY_TYPE_LCN 8
2366#define WLC_PHY_TYPE_LCN40 10
2367#define WLC_PHY_TYPE_AC 11
2368#define WLC_PHY_TYPE_LCN20 12
2369#define WLC_PHY_TYPE_NULL 0xf
2370
2371/* Values for PM */
2372#define PM_OFF 0
2373#define PM_MAX 1
2374#define PM_FAST 2
2375#define PM_FORCE_OFF 3 /* use this bit to force PM off even bt is active */
2376
2377#define WL_WME_CNT_VERSION 1 /* current version of wl_wme_cnt_t */
2378
2379/* fbt_cap: FBT assoc / reassoc modes. */
2380#define WLC_FBT_CAP_DRV_4WAY_AND_REASSOC 1 /* Driver 4-way handshake & reassoc (WLFBT). */
2381
2382/* monitor_promisc_level bits */
2383#define WL_MONPROMISC_PROMISC 0x0001
2384#define WL_MONPROMISC_CTRL 0x0002
2385#define WL_MONPROMISC_FCS 0x0004
2386
2387/* TCP Checksum Offload defines */
2388#define TOE_TX_CSUM_OL 0x00000001
2389#define TOE_RX_CSUM_OL 0x00000002
2390
2391/* Wi-Fi Display Services (WFDS) */
2392#define WL_P2P_SOCIAL_CHANNELS_MAX WL_NUMCHANNELS
2393#define MAX_WFDS_SEEK_SVC 4 /* Max # of wfds services to seek */
2394#define MAX_WFDS_ADVERT_SVC 4 /* Max # of wfds services to advertise */
2395#define MAX_WFDS_SVC_NAME_LEN 200 /* maximum service_name length */
2396#define MAX_WFDS_ADV_SVC_INFO_LEN 65000 /* maximum adv service_info length */
2397#define P2P_WFDS_HASH_LEN 6 /* Length of a WFDS service hash */
2398#define MAX_WFDS_SEEK_SVC_INFO_LEN 255 /* maximum seek service_info req length */
2399#define MAX_WFDS_SEEK_SVC_NAME_LEN 200 /* maximum service_name length */
2400
2401/* ap_isolate bitmaps */
2402#define AP_ISOLATE_DISABLED 0x0
2403#define AP_ISOLATE_SENDUP_ALL 0x01
2404#define AP_ISOLATE_SENDUP_MCAST 0x02
2405
2406/* Type values for the wl_pwrstats_t data field */
2407#define WL_PWRSTATS_TYPE_PHY 0 /**< struct wl_pwr_phy_stats */
2408#define WL_PWRSTATS_TYPE_SCAN 1 /**< struct wl_pwr_scan_stats */
2409#define WL_PWRSTATS_TYPE_USB_HSIC 2 /**< struct wl_pwr_usb_hsic_stats */
2410#define WL_PWRSTATS_TYPE_PM_AWAKE1 3 /**< struct wl_pwr_pm_awake_stats_v1 */
2411#define WL_PWRSTATS_TYPE_CONNECTION 4 /* struct wl_pwr_connect_stats; assoc and key-exch time */
2412#define WL_PWRSTATS_TYPE_PCIE 6 /**< struct wl_pwr_pcie_stats */
2413#define WL_PWRSTATS_TYPE_PM_AWAKE2 7 /**< struct wl_pwr_pm_awake_stats_v2 */
2414#define WL_PWRSTATS_TYPE_SDIO 8 /* struct wl_pwr_sdio_stats */
2415#define WL_PWRSTATS_TYPE_MIMO_PS_METRICS 9 /* struct wl_mimo_meas_metrics_t */
2416#define WL_PWRSTATS_TYPE_SLICE_INDEX 10 /* slice index for which this report is meant for */
2417#define WL_PWRSTATS_TYPE_TSYNC 11 /**< struct wl_pwr_tsync_stats */
2418#define WL_PWRSTATS_TYPE_OPS_STATS 12 /* struct wl_pwr_ops_stats_t */
2419#define WL_PWRSTATS_TYPE_BCNTRIM_STATS 13 /* struct wl_pwr_bcntrim_stats_t */
2420#define WL_PWRSTATS_TYPE_SLICE_INDEX_BAND_INFO 14 /* wl_pwr_slice_index_band_t */
2421#define WL_PWRSTATS_TYPE_PSBW_STATS 15 /* struct wl_pwr_psbw_stats_t */
2422
2423/* IOV AWD DATA */
2424#define AWD_DATA_JOIN_INFO 0
2425#define AWD_DATA_VERSION_V1 1
2426
2427/* IOV ETD DATA */
2428#define ETD_DATA_JOIN_INFO 0
2429#define ETD_DATA_VERSION_V1 1
2430
965f77c4
RC
2431/* CTMODE DBG */
2432/* input param: [31:16] => MPDU_THRESHOLD
2433 * [15:03] => RESERVED
2434 * [02] => enable UFP
2435 * [01] => enable UFC
2436 * [00] => enalbe CTMODE
2437 */
2438#define CTMODE_DBG_CTMODE_EN (0x1u)
2439#define CTMODE_DBG_UFC_EN (0x2u)
2440#define CTMODE_DBG_UFP_EN (0x4u)
2441#define CTMODE_DBG_MPDU_THRESHOLD_SHIFT (7u)
2442#define CTMODE_DBG_MPDU_THRESHOLD_MASK ((0x1FFu) << CTMODE_DBG_MPDU_THRESHOLD_SHIFT)
2443#define CTMODE_DBG_BYTES_THRESHOLD_SHIFT (16u)
2444#define CTMODE_DBG_BYTES_THRESHOLD_MASK ((0xFFFu) << CTMODE_DBG_BYTES_THRESHOLD_SHIFT)
2445
2446/* ====== SC use case configs ========= */
2447/* SC user/use case request */
2448#define WL_SC_REQ_SCAN 0u /* user scan */
2449#define WL_SC_REQ_CNX 1u /* associated idle */
2450#define WL_SC_REQ_NAN 2u /* NAN synchronization and discovery offload */
2451
2452/* === Per use case configuration === */
2453/* scan cfgs */
2454#define SC_SCAN_CFG_PASSIVE_MASK 0x01u /* Enable passive scan on sc */
2455#define SC_SCAN_CFG_PASSIVE_SHIFT 0u
2456#define SC_SCAN_CFG_LP_SCAN_MASK 0x02u /* Enable low prio scan on sc */
2457#define SC_SCAN_CFG_LP_SCAN_SHIFT 1u
2458#define SC_SCAN_CFG_REG_SCAN_MASK 0x04u /* Enable split scan using sc */
2459#define SC_SCAN_CFG_REG_SCAN_SHIFT 2u
2460#define SC_SCAN_CFG_FULL_SCAN_MASK 0x08u /* Enable full scan on sc */
2461#define SC_SCAN_CFG_FULL_SCAN_SHIFT 3u
2462/* Add get and set macros for each of the configs? */
2463
2464/* === Place holder for cnx and nan cfgs === */
d2839953 2465#endif /* wlioctl_defs_h */