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