xref: /wlan-driver/qcacld-3.0/core/sme/inc/csr_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name /**
21*5113495bSYour Name  *   \file csr_api.h
22*5113495bSYour Name  *
23*5113495bSYour Name  *   Exports and types for the Common Scan and Roaming Module interfaces.
24*5113495bSYour Name  */
25*5113495bSYour Name 
26*5113495bSYour Name #ifndef CSRAPI_H__
27*5113495bSYour Name #define CSRAPI_H__
28*5113495bSYour Name 
29*5113495bSYour Name #include "sir_api.h"
30*5113495bSYour Name #include "sir_mac_prot_def.h"
31*5113495bSYour Name #include "csr_link_list.h"
32*5113495bSYour Name #include "wlan_scan_public_structs.h"
33*5113495bSYour Name #include "wlan_mlme_public_struct.h"
34*5113495bSYour Name #include "wlan_mlme_main.h"
35*5113495bSYour Name 
36*5113495bSYour Name #define CSR_INVALID_SCANRESULT_HANDLE       (NULL)
37*5113495bSYour Name 
38*5113495bSYour Name /* Length to print MAC 12 char + 5 ":" + 2 space + mld string */
39*5113495bSYour Name #define MAC_ADDR_DUMP_LEN 26
40*5113495bSYour Name 
41*5113495bSYour Name enum csr_akm_type {
42*5113495bSYour Name 	/* never used */
43*5113495bSYour Name 	eCSR_AUTH_TYPE_NONE,
44*5113495bSYour Name 	/* MAC layer authentication types */
45*5113495bSYour Name 	eCSR_AUTH_TYPE_OPEN_SYSTEM,
46*5113495bSYour Name 	eCSR_AUTH_TYPE_SHARED_KEY,
47*5113495bSYour Name 	eCSR_AUTH_TYPE_SAE,
48*5113495bSYour Name 	eCSR_AUTH_TYPE_AUTOSWITCH,
49*5113495bSYour Name 
50*5113495bSYour Name 	/* Upper layer authentication types */
51*5113495bSYour Name 	eCSR_AUTH_TYPE_WPA,
52*5113495bSYour Name 	eCSR_AUTH_TYPE_WPA_PSK,
53*5113495bSYour Name 	eCSR_AUTH_TYPE_WPA_NONE,
54*5113495bSYour Name 
55*5113495bSYour Name 	eCSR_AUTH_TYPE_RSN,
56*5113495bSYour Name 	eCSR_AUTH_TYPE_RSN_PSK,
57*5113495bSYour Name 	eCSR_AUTH_TYPE_FT_RSN,
58*5113495bSYour Name 	eCSR_AUTH_TYPE_FT_RSN_PSK,
59*5113495bSYour Name #ifdef FEATURE_WLAN_WAPI
60*5113495bSYour Name 	eCSR_AUTH_TYPE_WAPI_WAI_CERTIFICATE,
61*5113495bSYour Name 	eCSR_AUTH_TYPE_WAPI_WAI_PSK,
62*5113495bSYour Name #endif /* FEATURE_WLAN_WAPI */
63*5113495bSYour Name 	eCSR_AUTH_TYPE_CCKM_WPA,
64*5113495bSYour Name 	eCSR_AUTH_TYPE_CCKM_RSN,
65*5113495bSYour Name 	eCSR_AUTH_TYPE_RSN_PSK_SHA256,
66*5113495bSYour Name 	eCSR_AUTH_TYPE_RSN_8021X_SHA256,
67*5113495bSYour Name 	eCSR_AUTH_TYPE_FILS_SHA256,
68*5113495bSYour Name 	eCSR_AUTH_TYPE_FILS_SHA384,
69*5113495bSYour Name 	eCSR_AUTH_TYPE_FT_FILS_SHA256,
70*5113495bSYour Name 	eCSR_AUTH_TYPE_FT_FILS_SHA384,
71*5113495bSYour Name 	eCSR_AUTH_TYPE_DPP_RSN,
72*5113495bSYour Name 	eCSR_AUTH_TYPE_OWE,
73*5113495bSYour Name 	eCSR_AUTH_TYPE_SUITEB_EAP_SHA256,
74*5113495bSYour Name 	eCSR_AUTH_TYPE_SUITEB_EAP_SHA384,
75*5113495bSYour Name 	eCSR_AUTH_TYPE_OSEN,
76*5113495bSYour Name 	eCSR_AUTH_TYPE_FT_SAE,
77*5113495bSYour Name 	eCSR_AUTH_TYPE_FT_SUITEB_EAP_SHA384,
78*5113495bSYour Name 	eCSR_AUTH_TYPE_SAE_EXT_KEY,
79*5113495bSYour Name 	eCSR_AUTH_TYPE_FT_SAE_EXT_KEY,
80*5113495bSYour Name 	eCSR_NUM_OF_SUPPORT_AUTH_TYPE,
81*5113495bSYour Name 	eCSR_AUTH_TYPE_FAILED = 0xff,
82*5113495bSYour Name 	eCSR_AUTH_TYPE_UNKNOWN = eCSR_AUTH_TYPE_FAILED,
83*5113495bSYour Name 
84*5113495bSYour Name };
85*5113495bSYour Name 
86*5113495bSYour Name typedef enum {
87*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_NONE,
88*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_WEP40_STATICKEY,
89*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_WEP104_STATICKEY,
90*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_WEP40,
91*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_WEP104,
92*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_TKIP,
93*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_AES,/* CCMP */
94*5113495bSYour Name #ifdef FEATURE_WLAN_WAPI
95*5113495bSYour Name 	/* WAPI */
96*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_WPI,
97*5113495bSYour Name #endif  /* FEATURE_WLAN_WAPI */
98*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_KRK,
99*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_BTK,
100*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_AES_CMAC,
101*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_AES_GMAC_128,
102*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_AES_GMAC_256,
103*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_AES_GCMP,
104*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_AES_GCMP_256,
105*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_ANY,
106*5113495bSYour Name 	eCSR_NUM_OF_ENCRYPT_TYPE = eCSR_ENCRYPT_TYPE_ANY,
107*5113495bSYour Name 
108*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_FAILED = 0xff,
109*5113495bSYour Name 	eCSR_ENCRYPT_TYPE_UNKNOWN = eCSR_ENCRYPT_TYPE_FAILED,
110*5113495bSYour Name 
111*5113495bSYour Name } eCsrEncryptionType;
112*5113495bSYour Name 
113*5113495bSYour Name typedef enum {
114*5113495bSYour Name 	/* 11a/b/g only, no HT, no proprietary */
115*5113495bSYour Name 	eCSR_DOT11_MODE_abg = 0x0001,
116*5113495bSYour Name 	eCSR_DOT11_MODE_11a = 0x0002,
117*5113495bSYour Name 	eCSR_DOT11_MODE_11b = 0x0004,
118*5113495bSYour Name 	eCSR_DOT11_MODE_11g = 0x0008,
119*5113495bSYour Name 	eCSR_DOT11_MODE_11n = 0x0010,
120*5113495bSYour Name 	eCSR_DOT11_MODE_11g_ONLY = 0x0020,
121*5113495bSYour Name 	eCSR_DOT11_MODE_11n_ONLY = 0x0040,
122*5113495bSYour Name 	eCSR_DOT11_MODE_11b_ONLY = 0x0080,
123*5113495bSYour Name 	eCSR_DOT11_MODE_11ac = 0x0100,
124*5113495bSYour Name 	eCSR_DOT11_MODE_11ac_ONLY = 0x0200,
125*5113495bSYour Name 	/*
126*5113495bSYour Name 	 * This is for WIFI test. It is same as eWNIAPI_MAC_PROTOCOL_ALL
127*5113495bSYour Name 	 * It is for CSR internal use
128*5113495bSYour Name 	 */
129*5113495bSYour Name 	eCSR_DOT11_MODE_AUTO = 0x0400,
130*5113495bSYour Name 	eCSR_DOT11_MODE_11ax = 0x0800,
131*5113495bSYour Name 	eCSR_DOT11_MODE_11ax_ONLY = 0x1000,
132*5113495bSYour Name 	eCSR_DOT11_MODE_11be = 0x2000,
133*5113495bSYour Name 	eCSR_DOT11_MODE_11be_ONLY = 0x4000,
134*5113495bSYour Name 
135*5113495bSYour Name 	/* specify the number of maximum bits for phyMode */
136*5113495bSYour Name 	eCSR_NUM_PHY_MODE = 18,
137*5113495bSYour Name } eCsrPhyMode;
138*5113495bSYour Name 
139*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
140*5113495bSYour Name #define CSR_IS_DOT11_PHY_MODE_11BE(dot11mode) \
141*5113495bSYour Name 	((dot11mode) == eCSR_DOT11_MODE_11be)
142*5113495bSYour Name #define CSR_IS_DOT11_PHY_MODE_11BE_ONLY(dot11mode) \
143*5113495bSYour Name 	((dot11mode) == eCSR_DOT11_MODE_11be_ONLY)
144*5113495bSYour Name #else
145*5113495bSYour Name #define CSR_IS_DOT11_PHY_MODE_11BE(dot11mode) 0
146*5113495bSYour Name #define CSR_IS_DOT11_PHY_MODE_11BE_ONLY(dot11mode) 0
147*5113495bSYour Name #endif
148*5113495bSYour Name 
149*5113495bSYour Name /**
150*5113495bSYour Name  * enum eCsrRoamBssType - BSS type in CSR operations
151*5113495bSYour Name  * @eCSR_BSS_TYPE_INFRASTRUCTURE: Infrastructure station
152*5113495bSYour Name  * @eCSR_BSS_TYPE_INFRA_AP: SoftAP
153*5113495bSYour Name  * @eCSR_BSS_TYPE_NDI: NAN datapath interface
154*5113495bSYour Name  * @eCSR_BSS_TYPE_ANY: any BSS type
155*5113495bSYour Name  */
156*5113495bSYour Name typedef enum {
157*5113495bSYour Name 	eCSR_BSS_TYPE_INFRASTRUCTURE,
158*5113495bSYour Name 	eCSR_BSS_TYPE_INFRA_AP,
159*5113495bSYour Name 	eCSR_BSS_TYPE_NDI,
160*5113495bSYour Name 	eCSR_BSS_TYPE_ANY,
161*5113495bSYour Name } eCsrRoamBssType;
162*5113495bSYour Name 
163*5113495bSYour Name typedef enum {
164*5113495bSYour Name 	eCSR_SCAN_SUCCESS,
165*5113495bSYour Name 	eCSR_SCAN_FAILURE,
166*5113495bSYour Name 	eCSR_SCAN_ABORT,
167*5113495bSYour Name 	eCSR_SCAN_FOUND_PEER,
168*5113495bSYour Name } eCsrScanStatus;
169*5113495bSYour Name 
170*5113495bSYour Name typedef enum {
171*5113495bSYour Name 	eCSR_BW_20MHz_VAL = 20,
172*5113495bSYour Name 	eCSR_BW_40MHz_VAL = 40,
173*5113495bSYour Name 	eCSR_BW_80MHz_VAL = 80,
174*5113495bSYour Name 	eCSR_BW_160MHz_VAL = 160
175*5113495bSYour Name } eCSR_BW_Val;
176*5113495bSYour Name 
177*5113495bSYour Name typedef enum {
178*5113495bSYour Name 	eCSR_INI_SINGLE_CHANNEL_CENTERED = 0,
179*5113495bSYour Name 	eCSR_INI_DOUBLE_CHANNEL_LOW_PRIMARY = 1,
180*5113495bSYour Name 	eCSR_INI_DOUBLE_CHANNEL_HIGH_PRIMARY = 3,
181*5113495bSYour Name 	eCSR_INI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED = 4,
182*5113495bSYour Name 	eCSR_INI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED = 5,
183*5113495bSYour Name 	eCSR_INI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED = 6,
184*5113495bSYour Name 	eCSR_INI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW = 7,
185*5113495bSYour Name 	eCSR_INI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW = 8,
186*5113495bSYour Name 	eCSR_INI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH = 9,
187*5113495bSYour Name 	eCSR_INI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH = 10,
188*5113495bSYour Name 	eCSR_INI_CHANNEL_BONDING_STATE_MAX = 11
189*5113495bSYour Name } eIniChanBondState;
190*5113495bSYour Name 
191*5113495bSYour Name typedef struct tagCsrChannelInfo {
192*5113495bSYour Name 	uint8_t numOfChannels;
193*5113495bSYour Name 	uint32_t *freq_list;
194*5113495bSYour Name } tCsrChannelInfo, *tpCsrChannelInfo;
195*5113495bSYour Name 
196*5113495bSYour Name typedef enum {
197*5113495bSYour Name 	eHIDDEN_SSID_NOT_IN_USE,
198*5113495bSYour Name 	eHIDDEN_SSID_ZERO_LEN,
199*5113495bSYour Name 	eHIDDEN_SSID_ZERO_CONTENTS
200*5113495bSYour Name } tHiddenssId;
201*5113495bSYour Name 
202*5113495bSYour Name typedef struct tagCsrSSIDInfo {
203*5113495bSYour Name 	tSirMacSSid SSID;
204*5113495bSYour Name 	tHiddenssId ssidHidden;
205*5113495bSYour Name } tCsrSSIDInfo;
206*5113495bSYour Name 
207*5113495bSYour Name typedef struct tagCsrSSIDs {
208*5113495bSYour Name 	uint32_t numOfSSIDs;
209*5113495bSYour Name 	tCsrSSIDInfo *SSIDList; /* To be allocated for array of SSIDs */
210*5113495bSYour Name } tCsrSSIDs;
211*5113495bSYour Name 
212*5113495bSYour Name typedef struct tagCsrBSSIDs {
213*5113495bSYour Name 	uint32_t numOfBSSIDs;
214*5113495bSYour Name 	struct qdf_mac_addr *bssid;
215*5113495bSYour Name } tCsrBSSIDs;
216*5113495bSYour Name 
217*5113495bSYour Name typedef struct tagCsrScanResultInfo {
218*5113495bSYour Name 	/*
219*5113495bSYour Name 	 * Carry the IEs for the current BSSDescription.
220*5113495bSYour Name 	 * A pointer to tDot11fBeaconIEs. Maybe NULL for start BSS.
221*5113495bSYour Name 	 */
222*5113495bSYour Name 	void *pvIes;
223*5113495bSYour Name 	tAniSSID ssId;
224*5113495bSYour Name 	unsigned long timer;           /* timer is variable for hidden SSID timer */
225*5113495bSYour Name 	/*
226*5113495bSYour Name 	 * This member must be the last in the structure because the
227*5113495bSYour Name 	 * end of struct bss_description is an
228*5113495bSYour Name 	 * array with nonknown size at this time */
229*5113495bSYour Name 	struct bss_description BssDescriptor;
230*5113495bSYour Name } tCsrScanResultInfo;
231*5113495bSYour Name 
232*5113495bSYour Name typedef struct tagCsrAuthList {
233*5113495bSYour Name 	uint32_t numEntries;
234*5113495bSYour Name 	enum csr_akm_type authType[eCSR_NUM_OF_SUPPORT_AUTH_TYPE];
235*5113495bSYour Name } tCsrAuthList, *tpCsrAuthList;
236*5113495bSYour Name 
237*5113495bSYour Name typedef struct sCsrChannel_ {
238*5113495bSYour Name 	uint8_t numChannels;
239*5113495bSYour Name 	uint32_t channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN];
240*5113495bSYour Name } sCsrChannel;
241*5113495bSYour Name 
242*5113495bSYour Name typedef struct sCsrChnPower_ {
243*5113495bSYour Name 	uint32_t first_chan_freq;
244*5113495bSYour Name 	uint8_t numChannels;
245*5113495bSYour Name 	uint8_t maxtxPower;
246*5113495bSYour Name } sCsrChnPower;
247*5113495bSYour Name 
248*5113495bSYour Name typedef struct tagCsr11dinfo {
249*5113495bSYour Name 	sCsrChannel Channels;
250*5113495bSYour Name 	/* max power channel list */
251*5113495bSYour Name 	sCsrChnPower ChnPower[CFG_VALID_CHANNEL_LIST_LEN];
252*5113495bSYour Name } tCsr11dinfo;
253*5113495bSYour Name 
254*5113495bSYour Name typedef enum {
255*5113495bSYour Name 	/* CSR is done lostlink roaming and still cannot reconnect */
256*5113495bSYour Name 	eCSR_ROAM_LOSTLINK = 12,
257*5113495bSYour Name 	/*
258*5113495bSYour Name 	 * TKIP MIC error detected, callback gets a pointer
259*5113495bSYour Name 	 * to struct mic_failure_ind
260*5113495bSYour Name 	 */
261*5113495bSYour Name 	eCSR_ROAM_MIC_ERROR_IND = 14,
262*5113495bSYour Name 	eCSR_ROAM_SET_KEY_COMPLETE = 17,
263*5113495bSYour Name 	/* BSS in SoftAP mode status indication */
264*5113495bSYour Name 	eCSR_ROAM_INFRA_IND = 18,
265*5113495bSYour Name 	eCSR_ROAM_WPS_PBC_PROBE_REQ_IND = 19,
266*5113495bSYour Name 	/* Disaconnect all the clients */
267*5113495bSYour Name 	eCSR_ROAM_DISCONNECT_ALL_P2P_CLIENTS = 31,
268*5113495bSYour Name 	/* Stopbss triggered from SME due to different */
269*5113495bSYour Name 	eCSR_ROAM_SEND_P2P_STOP_BSS = 32,
270*5113495bSYour Name 	/* beacon interval */
271*5113495bSYour Name 	eCSR_ROAM_UNPROT_MGMT_FRAME_IND = 33,
272*5113495bSYour Name 
273*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
274*5113495bSYour Name 	eCSR_ROAM_TSM_IE_IND = 34,
275*5113495bSYour Name 	eCSR_ROAM_ESE_ADJ_AP_REPORT_IND = 36,
276*5113495bSYour Name 	eCSR_ROAM_ESE_BCN_REPORT_IND = 37,
277*5113495bSYour Name #endif /* FEATURE_WLAN_ESE */
278*5113495bSYour Name 
279*5113495bSYour Name 	/* Radar indication from lower layers */
280*5113495bSYour Name 	eCSR_ROAM_DFS_RADAR_IND = 38,
281*5113495bSYour Name 	eCSR_ROAM_SET_CHANNEL_RSP = 39,
282*5113495bSYour Name 
283*5113495bSYour Name 	/* Channel sw update notification */
284*5113495bSYour Name 	eCSR_ROAM_DFS_CHAN_SW_NOTIFY = 40,
285*5113495bSYour Name 	eCSR_ROAM_EXT_CHG_CHNL_IND = 41,
286*5113495bSYour Name 	eCSR_ROAM_STA_CHANNEL_SWITCH = 42,
287*5113495bSYour Name 	eCSR_ROAM_NDP_STATUS_UPDATE = 43,
288*5113495bSYour Name 	eCSR_ROAM_CHANNEL_COMPLETE_IND = 47,
289*5113495bSYour Name 	eCSR_ROAM_CAC_COMPLETE_IND = 48,
290*5113495bSYour Name 	eCSR_ROAM_SAE_COMPUTE = 49,
291*5113495bSYour Name 	eCSR_ROAM_CHANNEL_INFO_EVENT_IND = 50,
292*5113495bSYour Name } eRoamCmdStatus;
293*5113495bSYour Name 
294*5113495bSYour Name /* comment inside indicates what roaming callback gets */
295*5113495bSYour Name typedef enum {
296*5113495bSYour Name 	eCSR_ROAM_RESULT_NONE,
297*5113495bSYour Name 	eCSR_ROAM_RESULT_SUCCESS = eCSR_ROAM_RESULT_NONE,
298*5113495bSYour Name 	/*
299*5113495bSYour Name 	 * If roamStatus is eCSR_ROAM_ASSOCIATION_COMPLETION,
300*5113495bSYour Name 	 * struct csr_roam_info's bss_desc may pass back
301*5113495bSYour Name 	 */
302*5113495bSYour Name 	eCSR_ROAM_RESULT_FAILURE,
303*5113495bSYour Name 	/* Pass back pointer to struct csr_roam_info */
304*5113495bSYour Name 	eCSR_ROAM_RESULT_ASSOCIATED,
305*5113495bSYour Name 	eCSR_ROAM_RESULT_NOT_ASSOCIATED,
306*5113495bSYour Name 	eCSR_ROAM_RESULT_MIC_FAILURE,
307*5113495bSYour Name 	eCSR_ROAM_RESULT_FORCED,
308*5113495bSYour Name 	eCSR_ROAM_RESULT_DISASSOC_IND,
309*5113495bSYour Name 	eCSR_ROAM_RESULT_DEAUTH_IND,
310*5113495bSYour Name 	eCSR_ROAM_RESULT_CAP_CHANGED,
311*5113495bSYour Name 	eCSR_ROAM_RESULT_LOSTLINK,
312*5113495bSYour Name 	eCSR_ROAM_RESULT_MIC_ERROR_UNICAST,
313*5113495bSYour Name 	eCSR_ROAM_RESULT_MIC_ERROR_GROUP,
314*5113495bSYour Name 	eCSR_ROAM_RESULT_AUTHENTICATED,
315*5113495bSYour Name 	eCSR_ROAM_RESULT_NEW_RSN_BSS,
316*5113495bSYour Name #ifdef FEATURE_WLAN_WAPI
317*5113495bSYour Name 	eCSR_ROAM_RESULT_NEW_WAPI_BSS,
318*5113495bSYour Name #endif /* FEATURE_WLAN_WAPI */
319*5113495bSYour Name 	/* INFRA started successfully */
320*5113495bSYour Name 	eCSR_ROAM_RESULT_INFRA_STARTED,
321*5113495bSYour Name 	/* INFRA start failed */
322*5113495bSYour Name 	eCSR_ROAM_RESULT_INFRA_START_FAILED,
323*5113495bSYour Name 	/* INFRA stopped */
324*5113495bSYour Name 	eCSR_ROAM_RESULT_INFRA_STOPPED,
325*5113495bSYour Name 	/* A station joining INFRA AP */
326*5113495bSYour Name 	eCSR_ROAM_RESULT_INFRA_ASSOCIATION_IND,
327*5113495bSYour Name 	/* A station joined INFRA AP */
328*5113495bSYour Name 	eCSR_ROAM_RESULT_INFRA_ASSOCIATION_CNF,
329*5113495bSYour Name 	/* INFRA disassociated */
330*5113495bSYour Name 	eCSR_ROAM_RESULT_INFRA_DISASSOCIATED,
331*5113495bSYour Name 	eCSR_ROAM_RESULT_WPS_PBC_PROBE_REQ_IND,
332*5113495bSYour Name 	eCSR_ROAM_RESULT_SEND_ACTION_FAIL,
333*5113495bSYour Name 	/* peer rejected assoc because max assoc limit reached */
334*5113495bSYour Name 	eCSR_ROAM_RESULT_MAX_ASSOC_EXCEEDED,
335*5113495bSYour Name 	/* Assoc rejected due to concurrent session running on a diff channel */
336*5113495bSYour Name 	eCSR_ROAM_RESULT_ASSOC_FAIL_CON_CHANNEL,
337*5113495bSYour Name 	/* TDLS events */
338*5113495bSYour Name 	eCSR_ROAM_RESULT_ADD_TDLS_PEER,
339*5113495bSYour Name 	eCSR_ROAM_RESULT_UPDATE_TDLS_PEER,
340*5113495bSYour Name 	eCSR_ROAM_RESULT_DELETE_TDLS_PEER,
341*5113495bSYour Name 	eCSR_ROAM_RESULT_TEARDOWN_TDLS_PEER_IND,
342*5113495bSYour Name 	eCSR_ROAM_RESULT_DELETE_ALL_TDLS_PEER_IND,
343*5113495bSYour Name 	eCSR_ROAM_RESULT_LINK_ESTABLISH_REQ_RSP,
344*5113495bSYour Name 	eCSR_ROAM_RESULT_TDLS_SHOULD_DISCOVER,
345*5113495bSYour Name 	eCSR_ROAM_RESULT_TDLS_SHOULD_TEARDOWN,
346*5113495bSYour Name 	eCSR_ROAM_RESULT_TDLS_SHOULD_PEER_DISCONNECTED,
347*5113495bSYour Name 	eCSR_ROAM_RESULT_TDLS_CONNECTION_TRACKER_NOTIFICATION,
348*5113495bSYour Name 	eCSR_ROAM_RESULT_DFS_RADAR_FOUND_IND,
349*5113495bSYour Name 	eCSR_ROAM_RESULT_CHANNEL_CHANGE_SUCCESS,
350*5113495bSYour Name 	eCSR_ROAM_RESULT_CHANNEL_CHANGE_FAILURE,
351*5113495bSYour Name 	eCSR_ROAM_RESULT_CSA_RESTART_RSP,
352*5113495bSYour Name 	eCSR_ROAM_RESULT_DFS_CHANSW_UPDATE_SUCCESS,
353*5113495bSYour Name 	eCSR_ROAM_EXT_CHG_CHNL_UPDATE_IND,
354*5113495bSYour Name 
355*5113495bSYour Name 	eCSR_ROAM_RESULT_NDI_CREATE_RSP,
356*5113495bSYour Name 	eCSR_ROAM_RESULT_NDI_DELETE_RSP,
357*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_INITIATOR_RSP,
358*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_NEW_PEER_IND,
359*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_CONFIRM_IND,
360*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_INDICATION,
361*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_SCHED_UPDATE_RSP,
362*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_RESPONDER_RSP,
363*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_END_RSP,
364*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_PEER_DEPARTED_IND,
365*5113495bSYour Name 	eCSR_ROAM_RESULT_NDP_END_IND,
366*5113495bSYour Name 	eCSR_ROAM_RESULT_CAC_END_IND,
367*5113495bSYour Name 	/* If Scan for SSID failed to found proper BSS */
368*5113495bSYour Name 	eCSR_ROAM_RESULT_SCAN_FOR_SSID_FAILURE,
369*5113495bSYour Name 	eCSR_ROAM_RESULT_INVOKE_FAILED,
370*5113495bSYour Name } eCsrRoamResult;
371*5113495bSYour Name 
372*5113495bSYour Name typedef enum {
373*5113495bSYour Name 	/* Not associated in Infra or participating in an Ad-hoc */
374*5113495bSYour Name 	eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED,
375*5113495bSYour Name 	/* Participating in WDS network in AP/STA mode but not connected yet */
376*5113495bSYour Name 	eCSR_ASSOC_STATE_TYPE_WDS_DISCONNECTED,
377*5113495bSYour Name 	/* Participating in a WDS network and connected peer to peer */
378*5113495bSYour Name 	eCSR_ASSOC_STATE_TYPE_WDS_CONNECTED,
379*5113495bSYour Name 	/* Participating in a Infra network in AP not yet in connected state */
380*5113495bSYour Name 	eCSR_ASSOC_STATE_TYPE_INFRA_DISCONNECTED,
381*5113495bSYour Name 	/* Participating in a Infra network and connected to a peer */
382*5113495bSYour Name 	eCSR_ASSOC_STATE_TYPE_INFRA_CONNECTED,
383*5113495bSYour Name 	/* NAN Data interface not started */
384*5113495bSYour Name 	eCSR_CONNECT_STATE_TYPE_NDI_NOT_STARTED,
385*5113495bSYour Name 	/* NAN Data interface started */
386*5113495bSYour Name 	eCSR_CONNECT_STATE_TYPE_NDI_STARTED,
387*5113495bSYour Name } eCsrConnectState;
388*5113495bSYour Name 
389*5113495bSYour Name typedef enum {
390*5113495bSYour Name 	eCSR_OPERATING_CHANNEL_ALL = 0,
391*5113495bSYour Name 	eCSR_OPERATING_CHANNEL_AUTO = eCSR_OPERATING_CHANNEL_ALL,
392*5113495bSYour Name 	eCSR_OPERATING_CHANNEL_ANY = eCSR_OPERATING_CHANNEL_ALL,
393*5113495bSYour Name } eOperationChannel;
394*5113495bSYour Name 
395*5113495bSYour Name typedef enum {
396*5113495bSYour Name 	/*
397*5113495bSYour Name 	 * Roaming because HDD requested for reassoc by changing one of the
398*5113495bSYour Name 	 * fields in tCsrRoamModifyProfileFields. OR Roaming because SME
399*5113495bSYour Name 	 * requested for reassoc by changing one of the fields in
400*5113495bSYour Name 	 * tCsrRoamModifyProfileFields.
401*5113495bSYour Name 	 */
402*5113495bSYour Name 	eCsrRoamReasonStaCapabilityChanged,
403*5113495bSYour Name 	/*
404*5113495bSYour Name 	 * Roaming because SME requested for reassoc to a different AP,
405*5113495bSYour Name 	 * as part of inter AP handoff.
406*5113495bSYour Name 	 */
407*5113495bSYour Name 	eCsrRoamReasonBetterAP,
408*5113495bSYour Name 	/*
409*5113495bSYour Name 	 * Roaming because SME requested it as the link is lost - placeholder,
410*5113495bSYour Name 	 * will clean it up once handoff code gets in
411*5113495bSYour Name 	 */
412*5113495bSYour Name 	eCsrRoamReasonSmeIssuedForLostLink,
413*5113495bSYour Name 
414*5113495bSYour Name } eCsrRoamReasonCodes;
415*5113495bSYour Name 
416*5113495bSYour Name /*
417*5113495bSYour Name  * Following fields might need modification dynamically once STA is up
418*5113495bSYour Name  * & running & this'd trigger reassoc.
419*5113495bSYour Name  */
420*5113495bSYour Name typedef struct tagCsrRoamModifyProfileFields {
421*5113495bSYour Name 	/*
422*5113495bSYour Name 	 * during connect this specifies ACs U-APSD is to be setup
423*5113495bSYour Name 	 * for (Bit0:VO; Bit1:VI; Bit2:BK; Bit3:BE all other bits are ignored).
424*5113495bSYour Name 	 * During assoc response this COULD carry confirmation of what
425*5113495bSYour Name 	 * ACs U-APSD got setup for. Later if an APP looking for APSD,
426*5113495bSYour Name 	 * SME-QoS might need to modify this field
427*5113495bSYour Name 	 */
428*5113495bSYour Name 	uint8_t uapsd_mask;
429*5113495bSYour Name } tCsrRoamModifyProfileFields;
430*5113495bSYour Name 
431*5113495bSYour Name struct csr_roam_profile {
432*5113495bSYour Name 	tCsrSSIDs SSIDs;
433*5113495bSYour Name 	tCsrBSSIDs BSSIDs;
434*5113495bSYour Name 	/* this is bit mask of all the needed phy mode defined in eCsrPhyMode */
435*5113495bSYour Name 	uint32_t phyMode;
436*5113495bSYour Name 	eCsrRoamBssType BSSType;
437*5113495bSYour Name 	tCsrChannelInfo ChannelInfo;
438*5113495bSYour Name 	uint32_t op_freq;
439*5113495bSYour Name 	struct ch_params ch_params;
440*5113495bSYour Name 	/* If this is 0, SME will fill in for caller. */
441*5113495bSYour Name 	uint16_t beaconInterval;
442*5113495bSYour Name 	/*
443*5113495bSYour Name 	 * during connect this specifies ACs U-APSD is to be setup
444*5113495bSYour Name 	 * for (Bit0:VO; Bit1:VI; Bit2:BK; Bit3:BE all other bits are ignored).
445*5113495bSYour Name 	 * During assoc resp this'd carry cnf of what ACs U-APSD got setup for
446*5113495bSYour Name 	 */
447*5113495bSYour Name 	uint8_t uapsd_mask;
448*5113495bSYour Name 	uint32_t nRSNReqIELength; /* The byte count in the pRSNReqIE */
449*5113495bSYour Name 	uint8_t *pRSNReqIE;       /* If not null,it's IE byte stream for RSN */
450*5113495bSYour Name 	uint8_t privacy;
451*5113495bSYour Name 	tAniAuthType csr80211AuthType;
452*5113495bSYour Name 	uint32_t dtimPeriod;
453*5113495bSYour Name 	bool chan_switch_hostapd_rate_enabled;
454*5113495bSYour Name 	uint16_t cfg_protection;
455*5113495bSYour Name 	uint8_t wps_state;
456*5113495bSYour Name 	enum QDF_OPMODE csrPersona;
457*5113495bSYour Name 	/* addIe params */
458*5113495bSYour Name 	struct add_ie_params add_ie_params;
459*5113495bSYour Name 	uint16_t beacon_tx_rate;
460*5113495bSYour Name 	tSirMacRateSet  supported_rates;
461*5113495bSYour Name 	tSirMacRateSet  extended_rates;
462*5113495bSYour Name 	bool require_h2e;
463*5113495bSYour Name 	uint32_t cac_duration_ms;
464*5113495bSYour Name 	uint32_t dfs_regdomain;
465*5113495bSYour Name };
466*5113495bSYour Name 
467*5113495bSYour Name struct csr_config_params {
468*5113495bSYour Name 	/* keep this uint32_t. This gets converted to ePhyChannelBondState */
469*5113495bSYour Name 	uint32_t channelBondingMode24GHz;
470*5113495bSYour Name 	uint32_t channelBondingMode5GHz;
471*5113495bSYour Name 	eCsrPhyMode phyMode;
472*5113495bSYour Name 	uint32_t HeartbeatThresh50;
473*5113495bSYour Name 	enum wmm_user_mode WMMSupportMode;
474*5113495bSYour Name 	bool Is11eSupportEnabled;
475*5113495bSYour Name 	bool ProprietaryRatesEnabled;
476*5113495bSYour Name 	/* to set MCC Enable/Disable mode */
477*5113495bSYour Name 	uint8_t fEnableMCCMode;
478*5113495bSYour Name 	bool mcc_rts_cts_prot_enable;
479*5113495bSYour Name 	bool mcc_bcast_prob_resp_enable;
480*5113495bSYour Name 	/*
481*5113495bSYour Name 	 * To allow MCC GO different B.I than STA's.
482*5113495bSYour Name 	 * NOTE: make sure if RIVA firmware can handle this combination before
483*5113495bSYour Name 	 * enabling this at the moment, this flag is provided only to pass
484*5113495bSYour Name 	 * Wi-Fi Cert. 5.1.12
485*5113495bSYour Name 	 */
486*5113495bSYour Name 	uint8_t fAllowMCCGODiffBI;
487*5113495bSYour Name 	tCsr11dinfo Csr11dinfo;
488*5113495bSYour Name 	/*
489*5113495bSYour Name 	 * Customer wants to optimize the scan time. Avoiding scans(passive)
490*5113495bSYour Name 	 * on DFS channels while swipping through both bands can save some time
491*5113495bSYour Name 	 * (apprx 1.3 sec)
492*5113495bSYour Name 	 */
493*5113495bSYour Name 	uint8_t fEnableDFSChnlScan;
494*5113495bSYour Name 	bool send_smps_action;
495*5113495bSYour Name 
496*5113495bSYour Name #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
497*5113495bSYour Name 	uint8_t cc_switch_mode;
498*5113495bSYour Name #endif
499*5113495bSYour Name 	bool obssEnabled;
500*5113495bSYour Name 	uint8_t conc_custom_rule1;
501*5113495bSYour Name 	uint8_t conc_custom_rule2;
502*5113495bSYour Name 	uint8_t is_sta_connection_in_5gz_enabled;
503*5113495bSYour Name 
504*5113495bSYour Name 	uint8_t max_intf_count;
505*5113495bSYour Name 	uint32_t f_sta_miracast_mcc_rest_time_val;
506*5113495bSYour Name #ifdef FEATURE_AP_MCC_CH_AVOIDANCE
507*5113495bSYour Name 	bool sap_channel_avoidance;
508*5113495bSYour Name #endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
509*5113495bSYour Name 	enum force_1x1_type is_force_1x1;
510*5113495bSYour Name 	bool wep_tkip_in_he;
511*5113495bSYour Name };
512*5113495bSYour Name 
513*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
514*5113495bSYour Name #define DEFAULT_REASSOC_FAILURE_TIMEOUT 1000
515*5113495bSYour Name #endif
516*5113495bSYour Name 
517*5113495bSYour Name struct csr_roam_info {
518*5113495bSYour Name 	uint32_t nFrameLength;
519*5113495bSYour Name 	uint8_t frameType;
520*5113495bSYour Name 	/*
521*5113495bSYour Name 	 * Point to a buffer contain the beacon, assoc req, assoc rsp frame,
522*5113495bSYour Name 	 * in that order user needs to use nBeaconLength, nAssocReqLength,
523*5113495bSYour Name 	 * nAssocRspLength to desice where each frame starts and ends.
524*5113495bSYour Name 	 */
525*5113495bSYour Name 	uint8_t *pbFrames;
526*5113495bSYour Name 	bool fReassocReq;       /* set to true if for re-association */
527*5113495bSYour Name 	struct qdf_mac_addr bssid;
528*5113495bSYour Name 	struct qdf_mac_addr peerMac;
529*5113495bSYour Name 	tSirResultCodes status_code;
530*5113495bSYour Name 	/* this'd be our own defined or sent from otherBSS(per 802.11spec) */
531*5113495bSYour Name 	uint32_t reasonCode;
532*5113495bSYour Name 
533*5113495bSYour Name 	uint8_t disassoc_reason;
534*5113495bSYour Name 
535*5113495bSYour Name 	uint8_t staId;         /* Peer stationId when connected */
536*5113495bSYour Name 	/* false means auth needed from supplicant. true means authenticated */
537*5113495bSYour Name 	bool fAuthRequired;
538*5113495bSYour Name 	uint8_t rsnIELen;
539*5113495bSYour Name 	uint8_t *prsnIE;
540*5113495bSYour Name 	uint8_t wapiIELen;
541*5113495bSYour Name 	uint8_t *pwapiIE;
542*5113495bSYour Name 	uint8_t addIELen;
543*5113495bSYour Name 	uint8_t *paddIE;
544*5113495bSYour Name 	union {
545*5113495bSYour Name 		tSirMicFailureInfo *pMICFailureInfo;
546*5113495bSYour Name 		tSirWPSPBCProbeReq *pWPSPBCProbeReq;
547*5113495bSYour Name 	} u;
548*5113495bSYour Name 	bool wmmEnabledSta;  /* set to true if WMM enabled STA */
549*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
550*5113495bSYour Name 	struct tsm_ie tsm_ie;
551*5113495bSYour Name 	uint16_t tsmRoamDelay;
552*5113495bSYour Name 	struct ese_bcn_report_rsp *pEseBcnReportRsp;
553*5113495bSYour Name #endif
554*5113495bSYour Name 	/* Required for indicating the frames to upper layer */
555*5113495bSYour Name 	uint32_t assocReqLength;
556*5113495bSYour Name 	uint8_t *assocReqPtr;
557*5113495bSYour Name 	tSirChanChangeResponse *channelChangeRespEvent;
558*5113495bSYour Name 	/* Timing and fine Timing measurement capability clubbed together */
559*5113495bSYour Name 	uint8_t timingMeasCap;
560*5113495bSYour Name 	struct oem_channel_info chan_info;
561*5113495bSYour Name 	uint32_t target_chan_freq;
562*5113495bSYour Name 
563*5113495bSYour Name #ifdef WLAN_FEATURE_NAN
564*5113495bSYour Name 	union {
565*5113495bSYour Name 		struct ndi_create_rsp ndi_create_params;
566*5113495bSYour Name 		struct ndi_delete_rsp ndi_delete_params;
567*5113495bSYour Name 	} ndp;
568*5113495bSYour Name #endif
569*5113495bSYour Name 	tDot11fIEHTCaps ht_caps;
570*5113495bSYour Name 	tDot11fIEVHTCaps vht_caps;
571*5113495bSYour Name 	bool he_caps_present;
572*5113495bSYour Name 	bool eht_caps_present;
573*5113495bSYour Name 	bool ampdu;
574*5113495bSYour Name 	bool sgi_enable;
575*5113495bSYour Name 	bool tx_stbc;
576*5113495bSYour Name 	bool rx_stbc;
577*5113495bSYour Name 	tSirMacHTChannelWidth ch_width;
578*5113495bSYour Name 	enum sir_sme_phy_mode mode;
579*5113495bSYour Name 	uint8_t max_supp_idx;
580*5113495bSYour Name 	uint8_t max_ext_idx;
581*5113495bSYour Name 	uint8_t max_real_mcs_idx;
582*5113495bSYour Name 	uint8_t max_mcs_idx;
583*5113495bSYour Name 	uint8_t rx_mcs_map;
584*5113495bSYour Name 	uint8_t tx_mcs_map;
585*5113495bSYour Name 	/* Extended capabilities of STA */
586*5113495bSYour Name 	uint8_t ecsa_capable;
587*5113495bSYour Name 	uint32_t ext_cap;
588*5113495bSYour Name 	uint8_t supported_band;
589*5113495bSYour Name 	int rssi;
590*5113495bSYour Name 	int tx_rate;
591*5113495bSYour Name 	int rx_rate;
592*5113495bSYour Name 	tSirMacCapabilityInfo capability_info;
593*5113495bSYour Name 	uint32_t rx_mc_bc_cnt;
594*5113495bSYour Name 	uint32_t rx_retry_cnt;
595*5113495bSYour Name #ifdef WLAN_FEATURE_SAE
596*5113495bSYour Name 	struct sir_sae_info *sae_info;
597*5113495bSYour Name #endif
598*5113495bSYour Name 	struct assoc_ind *owe_pending_assoc_ind;
599*5113495bSYour Name 	struct assoc_ind *ft_pending_assoc_ind;
600*5113495bSYour Name 
601*5113495bSYour Name 	struct qdf_mac_addr peer_mld;
602*5113495bSYour Name #ifdef WLAN_FEATURE_SAP_ACS_OPTIMIZE
603*5113495bSYour Name 	uint32_t chan_info_freq;
604*5113495bSYour Name #endif
605*5113495bSYour Name };
606*5113495bSYour Name 
607*5113495bSYour Name typedef struct sSirSmeAssocIndToUpperLayerCnf {
608*5113495bSYour Name 	uint16_t messageType;   /* eWNI_SME_ASSOC_CNF */
609*5113495bSYour Name 	uint16_t length;
610*5113495bSYour Name 	uint8_t sessionId;
611*5113495bSYour Name 	tSirResultCodes status_code;
612*5113495bSYour Name 	tSirMacAddr bssId;      /* Self BSSID */
613*5113495bSYour Name 	tSirMacAddr peerMacAddr;
614*5113495bSYour Name 	uint16_t aid;
615*5113495bSYour Name 	uint8_t wmmEnabledSta;  /* set to true if WMM enabled STA */
616*5113495bSYour Name 	tSirRSNie rsnIE;        /* RSN IE received from peer */
617*5113495bSYour Name 	tSirWAPIie wapiIE;      /* WAPI IE received from peer */
618*5113495bSYour Name 	tSirAddie addIE;        /* this can be WSC and/or P2P IE */
619*5113495bSYour Name 	uint8_t reassocReq;     /* set to true if reassoc */
620*5113495bSYour Name 	/* Timing and fine Timing measurement capability clubbed together */
621*5113495bSYour Name 	uint8_t timingMeasCap;
622*5113495bSYour Name 	struct oem_channel_info chan_info;
623*5113495bSYour Name 	uint8_t target_channel;
624*5113495bSYour Name 	bool ampdu;
625*5113495bSYour Name 	bool sgi_enable;
626*5113495bSYour Name 	bool tx_stbc;
627*5113495bSYour Name 	tSirMacHTChannelWidth ch_width;
628*5113495bSYour Name 	enum sir_sme_phy_mode mode;
629*5113495bSYour Name 	bool rx_stbc;
630*5113495bSYour Name 	uint8_t max_supp_idx;
631*5113495bSYour Name 	uint8_t max_ext_idx;
632*5113495bSYour Name 	uint8_t max_mcs_idx;
633*5113495bSYour Name 	uint8_t max_real_mcs_idx;
634*5113495bSYour Name 	uint8_t rx_mcs_map;
635*5113495bSYour Name 	uint8_t tx_mcs_map;
636*5113495bSYour Name 	/* Extended capabilities of STA */
637*5113495bSYour Name 	uint8_t              ecsa_capable;
638*5113495bSYour Name 	uint32_t ext_cap;
639*5113495bSYour Name 	uint8_t supported_band;
640*5113495bSYour Name 
641*5113495bSYour Name 	uint32_t ies_len;
642*5113495bSYour Name 	uint8_t *ies;
643*5113495bSYour Name 	tDot11fIEHTCaps ht_caps;
644*5113495bSYour Name 	tDot11fIEVHTCaps vht_caps;
645*5113495bSYour Name 	tSirMacCapabilityInfo capability_info;
646*5113495bSYour Name 	bool he_caps_present;
647*5113495bSYour Name 	bool eht_caps_present;
648*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
649*5113495bSYour Name 	tSirMacAddr peer_mld_addr;
650*5113495bSYour Name #endif
651*5113495bSYour Name } tSirSmeAssocIndToUpperLayerCnf, *tpSirSmeAssocIndToUpperLayerCnf;
652*5113495bSYour Name 
653*5113495bSYour Name typedef struct tagCsrSummaryStatsInfo {
654*5113495bSYour Name 	uint32_t snr;
655*5113495bSYour Name 	int8_t rssi;
656*5113495bSYour Name 	uint32_t retry_cnt[4];
657*5113495bSYour Name 	uint32_t multiple_retry_cnt[4];
658*5113495bSYour Name 	uint32_t tx_frm_cnt[4];
659*5113495bSYour Name 	/* uint32_t num_rx_frm_crc_err; same as rx_error_cnt */
660*5113495bSYour Name 	/* uint32_t num_rx_frm_crc_ok; same as rx_frm_cnt */
661*5113495bSYour Name 	uint32_t rx_frm_cnt;
662*5113495bSYour Name 	uint32_t frm_dup_cnt;
663*5113495bSYour Name 	uint32_t fail_cnt[4];
664*5113495bSYour Name 	uint32_t rts_fail_cnt;
665*5113495bSYour Name 	uint32_t ack_fail_cnt;
666*5113495bSYour Name 	uint32_t rts_succ_cnt;
667*5113495bSYour Name 	uint32_t rx_discard_cnt;
668*5113495bSYour Name 	uint32_t rx_error_cnt;
669*5113495bSYour Name 	uint32_t tx_byte_cnt;
670*5113495bSYour Name 
671*5113495bSYour Name } tCsrSummaryStatsInfo;
672*5113495bSYour Name 
673*5113495bSYour Name typedef struct tagCsrGlobalClassAStatsInfo {
674*5113495bSYour Name 	uint8_t tx_nss;
675*5113495bSYour Name 	uint8_t rx_nss;
676*5113495bSYour Name 	uint8_t rx_preamble;
677*5113495bSYour Name 	uint8_t rx_bw;
678*5113495bSYour Name 	uint32_t max_pwr;
679*5113495bSYour Name 	uint32_t tx_rate;
680*5113495bSYour Name 	uint32_t rx_rate;
681*5113495bSYour Name 	/* mcs index for HT20 and HT40 rates */
682*5113495bSYour Name 	uint32_t tx_mcs_index;
683*5113495bSYour Name 	uint32_t rx_mcs_index;
684*5113495bSYour Name 	enum tx_rate_info tx_mcs_rate_flags;
685*5113495bSYour Name 	enum tx_rate_info rx_mcs_rate_flags;
686*5113495bSYour Name 	uint8_t  tx_dcm;
687*5113495bSYour Name 	uint8_t  rx_dcm;
688*5113495bSYour Name 	enum txrate_gi  tx_gi;
689*5113495bSYour Name 	enum txrate_gi  rx_gi;
690*5113495bSYour Name 	/* to diff between HT20 & HT40 rates;short & long guard interval */
691*5113495bSYour Name 	enum tx_rate_info tx_rx_rate_flags;
692*5113495bSYour Name 
693*5113495bSYour Name } tCsrGlobalClassAStatsInfo;
694*5113495bSYour Name 
695*5113495bSYour Name typedef struct tagCsrGlobalClassDStatsInfo {
696*5113495bSYour Name 	uint32_t tx_uc_frm_cnt;
697*5113495bSYour Name 	uint32_t tx_mc_frm_cnt;
698*5113495bSYour Name 	uint32_t tx_bc_frm_cnt;
699*5113495bSYour Name 	uint32_t rx_uc_frm_cnt;
700*5113495bSYour Name 	uint32_t rx_mc_frm_cnt;
701*5113495bSYour Name 	uint32_t rx_bc_frm_cnt;
702*5113495bSYour Name 	uint32_t tx_uc_byte_cnt[4];
703*5113495bSYour Name 	uint32_t tx_mc_byte_cnt;
704*5113495bSYour Name 	uint32_t tx_bc_byte_cnt;
705*5113495bSYour Name 	uint32_t rx_uc_byte_cnt[4];
706*5113495bSYour Name 	uint32_t rx_mc_byte_cnt;
707*5113495bSYour Name 	uint32_t rx_bc_byte_cnt;
708*5113495bSYour Name 	uint32_t rx_byte_cnt;
709*5113495bSYour Name 	uint32_t num_rx_bytes_crc_ok;
710*5113495bSYour Name 	uint32_t rx_rate;
711*5113495bSYour Name 
712*5113495bSYour Name } tCsrGlobalClassDStatsInfo;
713*5113495bSYour Name 
714*5113495bSYour Name /**
715*5113495bSYour Name  * struct csr_per_chain_rssi_stats_info - stores chain rssi
716*5113495bSYour Name  * @rssi: array containing rssi for all chains
717*5113495bSYour Name  * @peer_mac_addr: peer mac address
718*5113495bSYour Name  */
719*5113495bSYour Name struct csr_per_chain_rssi_stats_info {
720*5113495bSYour Name 	int8_t rssi[NUM_CHAINS_MAX];
721*5113495bSYour Name 	tSirMacAddr peer_mac_addr;
722*5113495bSYour Name };
723*5113495bSYour Name 
724*5113495bSYour Name typedef void *tScanResultHandle;
725*5113495bSYour Name 
726*5113495bSYour Name typedef enum {
727*5113495bSYour Name 	REASSOC = 0,
728*5113495bSYour Name 	FASTREASSOC = 1,
729*5113495bSYour Name 	CONNECT_CMD_USERSPACE = 2,
730*5113495bSYour Name } handoff_src;
731*5113495bSYour Name 
732*5113495bSYour Name typedef struct tagCsrHandoffRequest {
733*5113495bSYour Name 	struct qdf_mac_addr bssid;
734*5113495bSYour Name 	uint32_t ch_freq;
735*5113495bSYour Name 	uint8_t src;   /* To check if its a REASSOC or a FASTREASSOC IOCTL */
736*5113495bSYour Name } tCsrHandoffRequest;
737*5113495bSYour Name 
738*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
739*5113495bSYour Name typedef struct tagCsrEseBeaconReqParams {
740*5113495bSYour Name 	uint16_t measurementToken;
741*5113495bSYour Name 	uint32_t ch_freq;
742*5113495bSYour Name 	uint8_t scanMode;
743*5113495bSYour Name 	uint16_t measurementDuration;
744*5113495bSYour Name } tCsrEseBeaconReqParams, *tpCsrEseBeaconReqParams;
745*5113495bSYour Name 
746*5113495bSYour Name typedef struct tagCsrEseBeaconReq {
747*5113495bSYour Name 	uint8_t numBcnReqIe;
748*5113495bSYour Name 	tCsrEseBeaconReqParams bcnReq[SIR_ESE_MAX_MEAS_IE_REQS];
749*5113495bSYour Name } tCsrEseBeaconReq, *tpCsrEseBeaconReq;
750*5113495bSYour Name #endif /* FEATURE_WLAN_ESE */
751*5113495bSYour Name 
752*5113495bSYour Name struct csr_del_sta_params {
753*5113495bSYour Name 	struct qdf_mac_addr peerMacAddr;
754*5113495bSYour Name 	struct qdf_mac_addr peer_mld_addr;
755*5113495bSYour Name 	uint16_t reason_code;
756*5113495bSYour Name 	uint8_t subtype;
757*5113495bSYour Name };
758*5113495bSYour Name 
759*5113495bSYour Name /* Struct bss_dot11_config - Dot11 parameters for
760*5113495bSYour Name  * SAP operation
761*5113495bSYour Name  * @vdev_id: vdev id
762*5113495bSYour Name  * @privacy: privacy config
763*5113495bSYour Name  * @phy_mode: phy mode
764*5113495bSYour Name  * @bss_op_ch_freq: operational frequency
765*5113495bSYour Name  * @dot11_mode: dot11 mode
766*5113495bSYour Name  * @nw_type: network type
767*5113495bSYour Name  * @p_band: operating band
768*5113495bSYour Name  * @opr_rates: operational rates
769*5113495bSYour Name  * @ext_rates: extended rates
770*5113495bSYour Name  */
771*5113495bSYour Name struct bss_dot11_config {
772*5113495bSYour Name 	uint8_t vdev_id;
773*5113495bSYour Name 	uint8_t privacy;
774*5113495bSYour Name 	eCsrPhyMode phy_mode;
775*5113495bSYour Name 	uint32_t bss_op_ch_freq;
776*5113495bSYour Name 	uint8_t dot11_mode;
777*5113495bSYour Name 	tSirNwType nw_type;
778*5113495bSYour Name 	enum reg_wifi_band p_band;
779*5113495bSYour Name 	tSirMacRateSet opr_rates;
780*5113495bSYour Name 	tSirMacRateSet ext_rates;
781*5113495bSYour Name };
782*5113495bSYour Name 
783*5113495bSYour Name typedef QDF_STATUS (*csr_roam_complete_cb)(struct wlan_objmgr_psoc *psoc,
784*5113495bSYour Name 					   uint8_t session_id,
785*5113495bSYour Name 					   struct csr_roam_info *param,
786*5113495bSYour Name 					   eRoamCmdStatus roam_status,
787*5113495bSYour Name 					   eCsrRoamResult roam_result);
788*5113495bSYour Name typedef QDF_STATUS (*csr_session_close_cb)(uint8_t session_id);
789*5113495bSYour Name 
790*5113495bSYour Name #define CSR_IS_ANY_BSS_TYPE(pProfile) (eCSR_BSS_TYPE_ANY == \
791*5113495bSYour Name 				       (pProfile)->BSSType)
792*5113495bSYour Name #define CSR_IS_INFRA_AP(pProfile) (eCSR_BSS_TYPE_INFRA_AP ==  \
793*5113495bSYour Name 				   (pProfile)->BSSType)
794*5113495bSYour Name #ifdef WLAN_FEATURE_NAN
795*5113495bSYour Name #define CSR_IS_NDI(profile)  (eCSR_BSS_TYPE_NDI == (profile)->BSSType)
796*5113495bSYour Name #else
797*5113495bSYour Name #define CSR_IS_NDI(profile)  (false)
798*5113495bSYour Name #endif
799*5113495bSYour Name 
800*5113495bSYour Name #ifdef WLAN_FEATURE_NAN
801*5113495bSYour Name #define CSR_IS_CONN_NDI(profile)  (eCSR_BSS_TYPE_NDI == (profile)->BSSType)
802*5113495bSYour Name #else
803*5113495bSYour Name #define CSR_IS_CONN_NDI(profile)  (false)
804*5113495bSYour Name #endif
805*5113495bSYour Name 
806*5113495bSYour Name QDF_STATUS csr_set_channels(struct mac_context *mac,
807*5113495bSYour Name 			    struct csr_config_params *pParam);
808*5113495bSYour Name 
809*5113495bSYour Name /* enum to string conversion for debug output */
810*5113495bSYour Name const char *get_e_roam_cmd_status_str(eRoamCmdStatus val);
811*5113495bSYour Name const char *get_e_csr_roam_result_str(eCsrRoamResult val);
812*5113495bSYour Name const char *csr_phy_mode_str(eCsrPhyMode phy_mode);
813*5113495bSYour Name 
814*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
815*5113495bSYour Name typedef void (*tCsrTsmStatsCallback)(tAniTrafStrmMetrics tsmMetrics,
816*5113495bSYour Name 				     void *pContext);
817*5113495bSYour Name #endif /* FEATURE_WLAN_ESE */
818*5113495bSYour Name typedef void (*tCsrSnrCallback)(int8_t snr, void *pContext);
819*5113495bSYour Name 
820*5113495bSYour Name typedef void (*csr_readyToSuspendCallback)(void *pContext, bool suspended);
821*5113495bSYour Name #ifdef WLAN_FEATURE_EXTWOW_SUPPORT
822*5113495bSYour Name typedef void (*csr_readyToExtWoWCallback)(void *pContext, bool status);
823*5113495bSYour Name #endif
824*5113495bSYour Name typedef void (*csr_link_status_callback)(uint8_t status, void *context);
825*5113495bSYour Name 
826*5113495bSYour Name typedef void (*sme_get_raom_scan_ch_callback)(
827*5113495bSYour Name 				hdd_handle_t hdd_handle,
828*5113495bSYour Name 				struct roam_scan_ch_resp *roam_ch,
829*5113495bSYour Name 				void *context);
830*5113495bSYour Name 
831*5113495bSYour Name #if defined(WLAN_LOGGING_SOCK_SVC_ENABLE) && \
832*5113495bSYour Name 	defined(CONNECTIVITY_PKTLOG)
833*5113495bSYour Name /**
834*5113495bSYour Name  * csr_packetdump_timer_stop() - stops packet dump timer
835*5113495bSYour Name  *
836*5113495bSYour Name  * This function is used to stop packet dump timer
837*5113495bSYour Name  *
838*5113495bSYour Name  * Return: None
839*5113495bSYour Name  *
840*5113495bSYour Name  */
841*5113495bSYour Name void csr_packetdump_timer_stop(void);
842*5113495bSYour Name 
843*5113495bSYour Name /**
844*5113495bSYour Name  * csr_packetdump_timer_start() - start packet dump timer
845*5113495bSYour Name  *
846*5113495bSYour Name  * This function is used to start packet dump timer
847*5113495bSYour Name  *
848*5113495bSYour Name  * Return: None
849*5113495bSYour Name  *
850*5113495bSYour Name  */
851*5113495bSYour Name void csr_packetdump_timer_start(void);
852*5113495bSYour Name #else
csr_packetdump_timer_stop(void)853*5113495bSYour Name static inline void csr_packetdump_timer_stop(void) {}
csr_packetdump_timer_start(void)854*5113495bSYour Name static inline void csr_packetdump_timer_start(void) {}
855*5113495bSYour Name #endif
856*5113495bSYour Name 
857*5113495bSYour Name /**
858*5113495bSYour Name  * csr_update_owe_info() - Update OWE info
859*5113495bSYour Name  * @mac: mac context
860*5113495bSYour Name  * @assoc_ind: assoc ind
861*5113495bSYour Name  *
862*5113495bSYour Name  * Return: QDF_STATUS
863*5113495bSYour Name  */
864*5113495bSYour Name QDF_STATUS csr_update_owe_info(struct mac_context *mac,
865*5113495bSYour Name 			       struct assoc_ind *assoc_ind);
866*5113495bSYour Name 
867*5113495bSYour Name /**
868*5113495bSYour Name  * csr_update_ft_info() - Update FT info
869*5113495bSYour Name  * @mac: mac context
870*5113495bSYour Name  * @assoc_ind: assoc ind
871*5113495bSYour Name  *
872*5113495bSYour Name  * Return: QDF_STATUS
873*5113495bSYour Name  */
874*5113495bSYour Name 
875*5113495bSYour Name QDF_STATUS csr_update_ft_info(struct mac_context *mac,
876*5113495bSYour Name 			      struct assoc_ind *assoc_ind);
877*5113495bSYour Name 
878*5113495bSYour Name typedef void (*csr_ani_callback)(int8_t *ani, void *context);
879*5113495bSYour Name 
880*5113495bSYour Name /*
881*5113495bSYour Name  * csr_convert_to_reg_phy_mode() - CSR API to convert CSR phymode into
882*5113495bSYour Name  * regulatory phymode
883*5113495bSYour Name  * @csr_phy_mode: csr phymode with type eCsrPhyMode
884*5113495bSYour Name  * @freq: current operating frequency
885*5113495bSYour Name  *
886*5113495bSYour Name  * This API is used to convert a phymode from CSR to a phymode from regulatory
887*5113495bSYour Name  *
888*5113495bSYour Name  * Return: regulatory phymode that is comparable to input
889*5113495bSYour Name  */
890*5113495bSYour Name enum reg_phymode csr_convert_to_reg_phy_mode(eCsrPhyMode csr_phy_mode,
891*5113495bSYour Name 				       qdf_freq_t freq);
892*5113495bSYour Name 
893*5113495bSYour Name /*
894*5113495bSYour Name  * csr_convert_from_reg_phy_mode() - CSR API to convert regulatory phymode into
895*5113495bSYour Name  * CSR phymode
896*5113495bSYour Name  * @reg_phymode: regulatory phymode
897*5113495bSYour Name  *
898*5113495bSYour Name  * This API is used to convert a regulatory phymode to a CSR phymode
899*5113495bSYour Name  *
900*5113495bSYour Name  * Return: eCSR phymode that is comparable to input
901*5113495bSYour Name  */
902*5113495bSYour Name eCsrPhyMode csr_convert_from_reg_phy_mode(enum reg_phymode phymode);
903*5113495bSYour Name 
904*5113495bSYour Name /*
905*5113495bSYour Name  * csr_update_beacon() - CSR API to update beacon template
906*5113495bSYour Name  * @mac: mac context
907*5113495bSYour Name  *
908*5113495bSYour Name  * This API is used to update beacon template to FW
909*5113495bSYour Name  *
910*5113495bSYour Name  * Return: None
911*5113495bSYour Name  */
912*5113495bSYour Name void csr_update_beacon(struct mac_context *mac);
913*5113495bSYour Name 
914*5113495bSYour Name /**
915*5113495bSYour Name  * csr_fill_enc_type() - converts crypto cipher set to csr specific cipher type
916*5113495bSYour Name  * @cipher_type: output csr cipher type
917*5113495bSYour Name  * @ cipherset:input cipher set
918*5113495bSYour Name  *
919*5113495bSYour Name  * Return: None
920*5113495bSYour Name  */
921*5113495bSYour Name void csr_fill_enc_type(eCsrEncryptionType *cipher_type, uint32_t cipherset);
922*5113495bSYour Name 
923*5113495bSYour Name /**
924*5113495bSYour Name  * csr_fill_auth_type() - auth mode set to csr specific auth type
925*5113495bSYour Name  * @auth_type: output csr auth type
926*5113495bSYour Name  * @ authmodeset: authmode set
927*5113495bSYour Name  * @akm: akm
928*5113495bSYour Name  * @ucastcipherset: ucastcipherset
929*5113495bSYour Name  *
930*5113495bSYour Name  * Return: None
931*5113495bSYour Name  */
932*5113495bSYour Name void csr_fill_auth_type(enum csr_akm_type *auth_type,
933*5113495bSYour Name 			uint32_t authmodeset, uint32_t akm,
934*5113495bSYour Name 			uint32_t ucastcipherset);
935*5113495bSYour Name 
936*5113495bSYour Name /**
937*5113495bSYour Name  * csr_phy_mode_to_dot11mode() - converts phy mode to dot11 mode
938*5113495bSYour Name  * @phy_mode: wlan phy mode
939*5113495bSYour Name  *
940*5113495bSYour Name  * Return: csr_cfgdot11mode
941*5113495bSYour Name  */
942*5113495bSYour Name enum csr_cfgdot11mode csr_phy_mode_to_dot11mode(enum wlan_phymode phy_mode);
943*5113495bSYour Name 
944*5113495bSYour Name /*
945*5113495bSYour Name  * csr_mlme_vdev_disconnect_all_p2p_client_event() - Callback for MLME module
946*5113495bSYour Name  *	to send a disconnect all P2P event to the SAP event handler
947*5113495bSYour Name  * @vdev_id: vdev id of SAP
948*5113495bSYour Name  *
949*5113495bSYour Name  * Return: QDF_STATUS
950*5113495bSYour Name  */
951*5113495bSYour Name QDF_STATUS csr_mlme_vdev_disconnect_all_p2p_client_event(uint8_t vdev_id);
952*5113495bSYour Name 
953*5113495bSYour Name /*
954*5113495bSYour Name  * csr_mlme_vdev_stop_bss() - Callback for MLME module to send a stop BSS event
955*5113495bSYour Name  *	to the SAP event handler
956*5113495bSYour Name  * @vdev_id: vdev id of SAP
957*5113495bSYour Name  *
958*5113495bSYour Name  * Return: QDF_STATUS
959*5113495bSYour Name  */
960*5113495bSYour Name QDF_STATUS csr_mlme_vdev_stop_bss(uint8_t vdev_id);
961*5113495bSYour Name 
962*5113495bSYour Name /*
963*5113495bSYour Name  * csr_mlme_get_concurrent_operation_freq() - Callback for MLME module to
964*5113495bSYour Name  *	get the concurrent operation frequency
965*5113495bSYour Name  *
966*5113495bSYour Name  * Return: concurrent frequency
967*5113495bSYour Name  */
968*5113495bSYour Name qdf_freq_t csr_mlme_get_concurrent_operation_freq(void);
969*5113495bSYour Name 
970*5113495bSYour Name /* csr_convert_mode_to_nw_type() - CSR API to convert dot11 mode
971*5113495bSYour Name  * to network type.
972*5113495bSYour Name  *
973*5113495bSYour Name  * @dot11_mode: dot11 mode
974*5113495bSYour Name  * @band: reg band
975*5113495bSYour Name  *
976*5113495bSYour Name  * Return: network type
977*5113495bSYour Name  */
978*5113495bSYour Name tSirNwType
979*5113495bSYour Name csr_convert_mode_to_nw_type(enum csr_cfgdot11mode dot11_mode,
980*5113495bSYour Name 			    enum reg_wifi_band band);
981*5113495bSYour Name 
982*5113495bSYour Name /*
983*5113495bSYour Name  * csr_roam_get_phy_mode_band_for_bss() - CSR API to get phy mode and
984*5113495bSYour Name  * band for particular dot11 config
985*5113495bSYour Name  * @mac : mac context
986*5113495bSYour Name  * @dot11_cfg : pointer to the dot11 config
987*5113495bSYour Name  *
988*5113495bSYour Name  * Return : Void
989*5113495bSYour Name  */
990*5113495bSYour Name enum csr_cfgdot11mode
991*5113495bSYour Name csr_roam_get_phy_mode_band_for_bss(struct mac_context *mac,
992*5113495bSYour Name 				   struct bss_dot11_config *dot11_cfg);
993*5113495bSYour Name #endif
994