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