xref: /wlan-driver/qcacld-3.0/components/wmi/inc/wmi_unified_roam_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
6*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
7*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*5113495bSYour Name  */
17*5113495bSYour Name 
18*5113495bSYour Name /**
19*5113495bSYour Name  * DOC: Implement API's specific to ROAMING component.
20*5113495bSYour Name  */
21*5113495bSYour Name 
22*5113495bSYour Name #ifndef _WMI_UNIFIED_ROAM_API_H_
23*5113495bSYour Name #define _WMI_UNIFIED_ROAM_API_H_
24*5113495bSYour Name 
25*5113495bSYour Name #include <wmi_unified_roam_param.h>
26*5113495bSYour Name #include "wlan_cm_roam_public_struct.h"
27*5113495bSYour Name #include "wlan_crypto_def_i.h"
28*5113495bSYour Name 
29*5113495bSYour Name #ifdef FEATURE_LFR_SUBNET_DETECTION
30*5113495bSYour Name /**
31*5113495bSYour Name  * wmi_unified_set_gateway_params_cmd() - set gateway parameters
32*5113495bSYour Name  * @wmi_handle: wmi handle
33*5113495bSYour Name  * @req: gateway parameter update request structure
34*5113495bSYour Name  *
35*5113495bSYour Name  * This function reads the incoming @req and fill in the destination
36*5113495bSYour Name  * WMI structure and sends down the gateway configs down to the firmware
37*5113495bSYour Name  *
38*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failures;
39*5113495bSYour Name  *         error number otherwise
40*5113495bSYour Name  */
41*5113495bSYour Name QDF_STATUS
42*5113495bSYour Name wmi_unified_set_gateway_params_cmd(wmi_unified_t wmi_handle,
43*5113495bSYour Name 				   struct gateway_update_req_param *req);
44*5113495bSYour Name #endif
45*5113495bSYour Name 
46*5113495bSYour Name #ifdef FEATURE_RSSI_MONITOR
47*5113495bSYour Name /**
48*5113495bSYour Name  * wmi_unified_set_rssi_monitoring_cmd() - set rssi monitoring
49*5113495bSYour Name  * @wmi_handle: wmi handle
50*5113495bSYour Name  * @req: rssi monitoring request structure
51*5113495bSYour Name  *
52*5113495bSYour Name  * This function reads the incoming @req and fill in the destination
53*5113495bSYour Name  * WMI structure and send down the rssi monitoring configs down to the firmware
54*5113495bSYour Name  *
55*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failures;
56*5113495bSYour Name  *         error number otherwise
57*5113495bSYour Name  */
58*5113495bSYour Name QDF_STATUS
59*5113495bSYour Name wmi_unified_set_rssi_monitoring_cmd(wmi_unified_t wmi_handle,
60*5113495bSYour Name 				    struct rssi_monitor_param *req);
61*5113495bSYour Name #endif
62*5113495bSYour Name 
63*5113495bSYour Name /**
64*5113495bSYour Name  * wmi_unified_roam_scan_offload_rssi_thresh_cmd() - set roam scan rssi
65*5113495bSYour Name  *							parameters
66*5113495bSYour Name  * @wmi_handle: wmi handle
67*5113495bSYour Name  * @roam_req: roam rssi related parameters
68*5113495bSYour Name  *
69*5113495bSYour Name  * This function reads the incoming @roam_req and fill in the destination
70*5113495bSYour Name  * WMI structure and send down the roam scan rssi configs down to the firmware
71*5113495bSYour Name  *
72*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
73*5113495bSYour Name  */
74*5113495bSYour Name QDF_STATUS wmi_unified_roam_scan_offload_rssi_thresh_cmd(
75*5113495bSYour Name 		wmi_unified_t wmi_handle,
76*5113495bSYour Name 		struct wlan_roam_offload_scan_rssi_params *roam_req);
77*5113495bSYour Name 
78*5113495bSYour Name /**
79*5113495bSYour Name  * wmi_unified_roam_scan_offload_scan_period() - set roam offload scan period
80*5113495bSYour Name  * @wmi_handle: wmi handle
81*5113495bSYour Name  * @param: pointer to roam scan period params to be sent to fw
82*5113495bSYour Name  *
83*5113495bSYour Name  * Send WMI_ROAM_SCAN_PERIOD parameters to fw.
84*5113495bSYour Name  *
85*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
86*5113495bSYour Name  */
87*5113495bSYour Name QDF_STATUS wmi_unified_roam_scan_offload_scan_period(
88*5113495bSYour Name 	wmi_unified_t wmi_handle, struct wlan_roam_scan_period_params *param);
89*5113495bSYour Name 
90*5113495bSYour Name /**
91*5113495bSYour Name  * wmi_unified_roam_mawc_params_cmd() - configure roaming MAWC parameters
92*5113495bSYour Name  * @wmi_handle: wmi handle
93*5113495bSYour Name  * @params: Parameters to be configured
94*5113495bSYour Name  *
95*5113495bSYour Name  * Pass the MAWC(Motion Aided wireless connectivity) related roaming
96*5113495bSYour Name  * parameters from the host to the target
97*5113495bSYour Name  *
98*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
99*5113495bSYour Name  */
100*5113495bSYour Name QDF_STATUS
101*5113495bSYour Name wmi_unified_roam_mawc_params_cmd(wmi_unified_t wmi_handle,
102*5113495bSYour Name 				 struct wlan_roam_mawc_params *params);
103*5113495bSYour Name 
104*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL
105*5113495bSYour Name /**
106*5113495bSYour Name  * wmi_extract_roam_vendor_control_param_event() - extract vendor handoff param
107*5113495bSYour Name  * event coming from fw
108*5113495bSYour Name  * @wmi_handle: wmi handle
109*5113495bSYour Name  * @event: vendor handoff param event pointer
110*5113495bSYour Name  * @len: event len
111*5113495bSYour Name  * @data: vendor handoff related parameters
112*5113495bSYour Name  *
113*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
114*5113495bSYour Name  */
115*5113495bSYour Name 
116*5113495bSYour Name QDF_STATUS
117*5113495bSYour Name wmi_extract_roam_vendor_control_param_event(wmi_unified_t wmi_handle,
118*5113495bSYour Name 				uint8_t *event, uint32_t len,
119*5113495bSYour Name 				struct roam_vendor_handoff_params **data);
120*5113495bSYour Name 
121*5113495bSYour Name #endif
122*5113495bSYour Name 
123*5113495bSYour Name #if defined(WLAN_FEATURE_ROAM_OFFLOAD) && defined(WLAN_FEATURE_11BE_MLO)
124*5113495bSYour Name /**
125*5113495bSYour Name  * wmi_extract_roam_synch_key_event() - extract roam synch key event
126*5113495bSYour Name  * @wmi_handle: wmi handle
127*5113495bSYour Name  * @event: roam synch key event buffer pointer
128*5113495bSYour Name  * @len: event len
129*5113495bSYour Name  * @keys: destination buffer to copy keys
130*5113495bSYour Name  * @num_keys: Number of keys
131*5113495bSYour Name  * @mld_addr: MLD address pointer
132*5113495bSYour Name  *
133*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
134*5113495bSYour Name  */
135*5113495bSYour Name QDF_STATUS
136*5113495bSYour Name wmi_extract_roam_synch_key_event(wmi_unified_t wmi_handle, uint8_t *event,
137*5113495bSYour Name 				 uint32_t len,
138*5113495bSYour Name 				 struct wlan_crypto_key_entry **keys,
139*5113495bSYour Name 				 uint8_t *num_keys,
140*5113495bSYour Name 				 struct qdf_mac_addr *mld_addr);
141*5113495bSYour Name #else
142*5113495bSYour Name static inline QDF_STATUS
wmi_extract_roam_synch_key_event(wmi_unified_t wmi_handle,uint8_t * event,uint32_t len,struct wlan_crypto_key_entry ** keys,uint8_t * num_keys,struct qdf_mac_addr * mld_addr)143*5113495bSYour Name wmi_extract_roam_synch_key_event(wmi_unified_t wmi_handle, uint8_t *event,
144*5113495bSYour Name 				 uint32_t len,
145*5113495bSYour Name 				 struct wlan_crypto_key_entry **keys,
146*5113495bSYour Name 				 uint8_t *num_keys,
147*5113495bSYour Name 				 struct qdf_mac_addr *mld_addr)
148*5113495bSYour Name {
149*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
150*5113495bSYour Name }
151*5113495bSYour Name #endif
152*5113495bSYour Name 
153*5113495bSYour Name /**
154*5113495bSYour Name  * wmi_unified_roam_scan_filter_cmd() - send roam scan allowlist,
155*5113495bSYour Name  *                                      denylist and preferred list
156*5113495bSYour Name  * @wmi_handle: wmi handle
157*5113495bSYour Name  * @roam_req: roam scan lists related parameters
158*5113495bSYour Name  *
159*5113495bSYour Name  * This function reads the incoming @roam_req and fill in the destination
160*5113495bSYour Name  * WMI structure and send down the different roam scan lists down to the fw
161*5113495bSYour Name  *
162*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
163*5113495bSYour Name  */
164*5113495bSYour Name QDF_STATUS
165*5113495bSYour Name wmi_unified_roam_scan_filter_cmd(wmi_unified_t wmi_handle,
166*5113495bSYour Name 				 struct roam_scan_filter_params *roam_req);
167*5113495bSYour Name 
168*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
169*5113495bSYour Name /**
170*5113495bSYour Name  * wmi_unified_plm_stop_cmd() - plm stop request
171*5113495bSYour Name  * @wmi_handle: wmi handle
172*5113495bSYour Name  * @plm: plm request parameters
173*5113495bSYour Name  *
174*5113495bSYour Name  * This function request FW to stop PLM.
175*5113495bSYour Name  *
176*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
177*5113495bSYour Name  */
178*5113495bSYour Name QDF_STATUS wmi_unified_plm_stop_cmd(wmi_unified_t wmi_handle,
179*5113495bSYour Name 				    const struct plm_req_params *plm);
180*5113495bSYour Name 
181*5113495bSYour Name /**
182*5113495bSYour Name  * wmi_unified_plm_start_cmd() - plm start request
183*5113495bSYour Name  * @wmi_handle: wmi handle
184*5113495bSYour Name  * @plm: plm request parameters
185*5113495bSYour Name  *
186*5113495bSYour Name  * This function request FW to start PLM.
187*5113495bSYour Name  *
188*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
189*5113495bSYour Name  */
190*5113495bSYour Name QDF_STATUS wmi_unified_plm_start_cmd(wmi_unified_t wmi_handle,
191*5113495bSYour Name 				     const struct plm_req_params *plm);
192*5113495bSYour Name #endif /* FEATURE_WLAN_ESE */
193*5113495bSYour Name 
194*5113495bSYour Name #if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
195*5113495bSYour Name /**
196*5113495bSYour Name  * wmi_extract_roam_event  - Extract roam event
197*5113495bSYour Name  * @wmi_handle: WMI handle
198*5113495bSYour Name  * @event: Event data received from firmware
199*5113495bSYour Name  * @data_len: Event data length received from firmware
200*5113495bSYour Name  * @roam_event: Extract the event and fill in roam_event
201*5113495bSYour Name  *
202*5113495bSYour Name  * Return: QDF_STATUS
203*5113495bSYour Name  */
204*5113495bSYour Name QDF_STATUS
205*5113495bSYour Name wmi_extract_roam_event(wmi_unified_t wmi_handle, uint8_t *event,
206*5113495bSYour Name 		       uint32_t data_len,
207*5113495bSYour Name 		       struct roam_offload_roam_event *roam_event);
208*5113495bSYour Name #endif /* WLAN_FEATURE_HOST_ROAM || WLAN_FEATURE_ROAM_OFFLOAD */
209*5113495bSYour Name 
210*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
211*5113495bSYour Name /* wmi_unified_set_ric_req_cmd() - set ric request element
212*5113495bSYour Name  * @wmi_handle: wmi handle
213*5113495bSYour Name  * @msg: message
214*5113495bSYour Name  * @is_add_ts: is addts required
215*5113495bSYour Name  *
216*5113495bSYour Name  * This function sets ric request element for 11r roaming.
217*5113495bSYour Name  *
218*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
219*5113495bSYour Name  */
220*5113495bSYour Name QDF_STATUS wmi_unified_set_ric_req_cmd(wmi_unified_t wmi_handle, void *msg,
221*5113495bSYour Name 				       uint8_t is_add_ts);
222*5113495bSYour Name 
223*5113495bSYour Name /**
224*5113495bSYour Name  * wmi_unified_roam_synch_complete_cmd() - roam synch complete command to fw.
225*5113495bSYour Name  * @wmi_handle: wmi handle
226*5113495bSYour Name  * @vdev_id: vdev id
227*5113495bSYour Name  *
228*5113495bSYour Name  * This function sends roam synch complete event to fw.
229*5113495bSYour Name  *
230*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
231*5113495bSYour Name  */
232*5113495bSYour Name QDF_STATUS wmi_unified_roam_synch_complete_cmd(wmi_unified_t wmi_handle,
233*5113495bSYour Name 					       uint8_t vdev_id);
234*5113495bSYour Name 
235*5113495bSYour Name /**
236*5113495bSYour Name  * wmi_unified_roam_invoke_cmd() - send roam invoke command to fw.
237*5113495bSYour Name  * @wmi_handle: wmi handle
238*5113495bSYour Name  * @roaminvoke: roam invoke command
239*5113495bSYour Name  *
240*5113495bSYour Name  * Send roam invoke command to fw for fastreassoc.
241*5113495bSYour Name  *
242*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
243*5113495bSYour Name  */
244*5113495bSYour Name QDF_STATUS
245*5113495bSYour Name wmi_unified_roam_invoke_cmd(wmi_unified_t wmi_handle,
246*5113495bSYour Name 			    struct roam_invoke_req *roaminvoke);
247*5113495bSYour Name 
248*5113495bSYour Name /**
249*5113495bSYour Name  * wmi_unified_set_roam_triggers() - send roam trigger bitmap
250*5113495bSYour Name  * @wmi_handle: wmi handle
251*5113495bSYour Name  * @triggers: Roam trigger bitmap params as defined @roam_control_trigger_reason
252*5113495bSYour Name  *
253*5113495bSYour Name  * This function passes the roam trigger bitmap to fw
254*5113495bSYour Name  *
255*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
256*5113495bSYour Name  */
257*5113495bSYour Name QDF_STATUS wmi_unified_set_roam_triggers(wmi_unified_t wmi_handle,
258*5113495bSYour Name 					 struct wlan_roam_triggers *triggers);
259*5113495bSYour Name 
260*5113495bSYour Name /**
261*5113495bSYour Name  * wmi_unified_send_disconnect_roam_params() - Send disconnect roam trigger
262*5113495bSYour Name  * parameters to firmware
263*5113495bSYour Name  * @wmi_handle:  wmi handle
264*5113495bSYour Name  * @req: pointer to wlan_roam_disconnect_params
265*5113495bSYour Name  *
266*5113495bSYour Name  * Return: QDF_STATUS
267*5113495bSYour Name  */
268*5113495bSYour Name QDF_STATUS
269*5113495bSYour Name wmi_unified_send_disconnect_roam_params(wmi_unified_t wmi_handle,
270*5113495bSYour Name 				struct wlan_roam_disconnect_params *req);
271*5113495bSYour Name 
272*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL
273*5113495bSYour Name /**
274*5113495bSYour Name  * wmi_unified_roam_vendor_handoff_req_cmd() - Send vendor handoff request
275*5113495bSYour Name  * command to fw
276*5113495bSYour Name  * @wmi_handle:  wmi handle
277*5113495bSYour Name  * @vdev_id: vdev id
278*5113495bSYour Name  * @param_id: Vendor Control Param ID from enum
279*5113495bSYour Name  * WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID
280*5113495bSYour Name  *
281*5113495bSYour Name  * Return: QDF_STATUS
282*5113495bSYour Name  */
283*5113495bSYour Name QDF_STATUS wmi_unified_roam_vendor_handoff_req_cmd(wmi_unified_t wmi_handle,
284*5113495bSYour Name 						   uint8_t vdev_id,
285*5113495bSYour Name 						   uint32_t param_id);
286*5113495bSYour Name #endif
287*5113495bSYour Name 
288*5113495bSYour Name /**
289*5113495bSYour Name  * wmi_unified_send_idle_roam_params() - Send idle roam trigger params to fw
290*5113495bSYour Name  * @wmi_handle:  wmi handle
291*5113495bSYour Name  * @req: pointer to wlan_roam_idle_params
292*5113495bSYour Name  *
293*5113495bSYour Name  * Return: QDF_STATUS
294*5113495bSYour Name  */
295*5113495bSYour Name QDF_STATUS
296*5113495bSYour Name wmi_unified_send_idle_roam_params(wmi_unified_t wmi_handle,
297*5113495bSYour Name 				  struct wlan_roam_idle_params *req);
298*5113495bSYour Name 
299*5113495bSYour Name /**
300*5113495bSYour Name  * wmi_unified_send_roam_preauth_status() - Send roam preauthentication status
301*5113495bSYour Name  * to target.
302*5113495bSYour Name  * @wmi_handle: wmi handle
303*5113495bSYour Name  * @param: Roam auth status params
304*5113495bSYour Name  *
305*5113495bSYour Name  * This function passes preauth status of WPA3 SAE auth to firmware. It is
306*5113495bSYour Name  * called when external_auth_status event is received from userspace.
307*5113495bSYour Name  *
308*5113495bSYour Name  * Return: QDF_STATUS
309*5113495bSYour Name  */
310*5113495bSYour Name QDF_STATUS
311*5113495bSYour Name wmi_unified_send_roam_preauth_status(wmi_unified_t wmi_handle,
312*5113495bSYour Name 				     struct wmi_roam_auth_status_params *param);
313*5113495bSYour Name 
314*5113495bSYour Name /**
315*5113495bSYour Name  * wmi_unified_vdev_set_pcl_cmd  - Send Vdev PCL command to fw
316*5113495bSYour Name  * @wmi_handle: WMI handle
317*5113495bSYour Name  * @params: Set VDEV pcl parameters
318*5113495bSYour Name  *
319*5113495bSYour Name  * Return: QDF_STATUS
320*5113495bSYour Name  */
321*5113495bSYour Name QDF_STATUS wmi_unified_vdev_set_pcl_cmd(wmi_unified_t wmi_handle,
322*5113495bSYour Name 					struct set_pcl_cmd_params *params);
323*5113495bSYour Name 
324*5113495bSYour Name /**
325*5113495bSYour Name  * wmi_extract_roam_sync_event  - Extract roam sync event
326*5113495bSYour Name  * @wmi_handle: WMI handle
327*5113495bSYour Name  * @evt_buf: Event buffer
328*5113495bSYour Name  * @len: evt buffer data len
329*5113495bSYour Name  * @sync_ind: roam sync ptr
330*5113495bSYour Name  *
331*5113495bSYour Name  * This api will allocate memory for roam sync info, extract
332*5113495bSYour Name  * the information sent by FW and pass to CM.The memory will be
333*5113495bSYour Name  * freed by target_if_cm_roam_sync_event.
334*5113495bSYour Name  *
335*5113495bSYour Name  * Return: QDF_STATUS
336*5113495bSYour Name  */
337*5113495bSYour Name QDF_STATUS
338*5113495bSYour Name wmi_extract_roam_sync_event(wmi_unified_t wmi_handle, void *evt_buf,
339*5113495bSYour Name 			    uint32_t len,
340*5113495bSYour Name 			    struct roam_offload_synch_ind **sync_ind);
341*5113495bSYour Name 
342*5113495bSYour Name /**
343*5113495bSYour Name  * wmi_extract_roam_sync_frame_event  - Extract roam sync frame event
344*5113495bSYour Name  * @wmi_handle: WMI handle
345*5113495bSYour Name  * @event: Event buffer
346*5113495bSYour Name  * @len: evt buffer data len
347*5113495bSYour Name  * @frame_ptr: roam sync frame ptr
348*5113495bSYour Name  *
349*5113495bSYour Name  * Return: QDF_STATUS
350*5113495bSYour Name  */
351*5113495bSYour Name QDF_STATUS
352*5113495bSYour Name wmi_extract_roam_sync_frame_event(wmi_unified_t wmi_handle, void *event,
353*5113495bSYour Name 				  uint32_t len,
354*5113495bSYour Name 				  struct roam_synch_frame_ind *frame_ptr);
355*5113495bSYour Name 
356*5113495bSYour Name /**
357*5113495bSYour Name  * wmi_extract_btm_denylist_event - Extract btm denylist event
358*5113495bSYour Name  * @wmi_handle: WMI handle
359*5113495bSYour Name  * @event: Event data received from firmware
360*5113495bSYour Name  * @data_len: Event data length received from firmware
361*5113495bSYour Name  * @dst_list: Extract the event and fill in dst_list
362*5113495bSYour Name  *
363*5113495bSYour Name  * Return: QDF_STATUS
364*5113495bSYour Name  */
365*5113495bSYour Name QDF_STATUS
366*5113495bSYour Name wmi_extract_btm_denylist_event(wmi_unified_t wmi_handle,
367*5113495bSYour Name 			       uint8_t *event, uint32_t data_len,
368*5113495bSYour Name 			       struct roam_denylist_event **dst_list);
369*5113495bSYour Name 
370*5113495bSYour Name /**
371*5113495bSYour Name  * wmi_extract_vdev_disconnect_event - Extract disconnect event data
372*5113495bSYour Name  * @wmi_handle: WMI handle
373*5113495bSYour Name  * @event: Event data received from firmware
374*5113495bSYour Name  * @data_len: Event data length received from firmware
375*5113495bSYour Name  * @data: Extract the event and fill in data
376*5113495bSYour Name  *
377*5113495bSYour Name  * Return: QDF_STATUS
378*5113495bSYour Name  */
379*5113495bSYour Name QDF_STATUS
380*5113495bSYour Name wmi_extract_vdev_disconnect_event(wmi_unified_t wmi_handle,
381*5113495bSYour Name 				  uint8_t *event, uint32_t data_len,
382*5113495bSYour Name 				  struct vdev_disconnect_event_data *data);
383*5113495bSYour Name 
384*5113495bSYour Name /**
385*5113495bSYour Name  * wmi_extract_roam_scan_chan_list - Extract roam scan chan list
386*5113495bSYour Name  * @wmi_handle: WMI handle
387*5113495bSYour Name  * @event: Event data received from firmware
388*5113495bSYour Name  * @data_len: Event data length received from firmware
389*5113495bSYour Name  * @data: Extract the event and fill in data
390*5113495bSYour Name  *
391*5113495bSYour Name  * Return: QDF_STATUS
392*5113495bSYour Name  */
393*5113495bSYour Name QDF_STATUS
394*5113495bSYour Name wmi_extract_roam_scan_chan_list(wmi_unified_t wmi_handle,
395*5113495bSYour Name 				uint8_t *event, uint32_t data_len,
396*5113495bSYour Name 				struct cm_roam_scan_ch_resp **data);
397*5113495bSYour Name 
398*5113495bSYour Name /**
399*5113495bSYour Name  * wmi_unified_extract_roam_btm_response() - Extract BTM response
400*5113495bSYour Name  * @wmi:       wmi handle
401*5113495bSYour Name  * @evt_buf:   Pointer to the event buffer
402*5113495bSYour Name  * @dst:       Pointer to destination structure to fill data
403*5113495bSYour Name  * @idx:       TLV id
404*5113495bSYour Name  *
405*5113495bSYour Name  * Return: QDF_STATUS
406*5113495bSYour Name  */
407*5113495bSYour Name QDF_STATUS
408*5113495bSYour Name wmi_unified_extract_roam_btm_response(wmi_unified_t wmi, void *evt_buf,
409*5113495bSYour Name 				      struct roam_btm_response_data *dst,
410*5113495bSYour Name 				      uint8_t idx);
411*5113495bSYour Name 
412*5113495bSYour Name /**
413*5113495bSYour Name  * wmi_unified_extract_roam_initial_info() - Extract initial info
414*5113495bSYour Name  * @wmi:       wmi handle
415*5113495bSYour Name  * @evt_buf:   Pointer to the event buffer
416*5113495bSYour Name  * @dst:       Pointer to destination structure to fill data
417*5113495bSYour Name  * @idx:       TLV id
418*5113495bSYour Name  *
419*5113495bSYour Name  * Return: QDF_STATUS
420*5113495bSYour Name  */
421*5113495bSYour Name QDF_STATUS
422*5113495bSYour Name wmi_unified_extract_roam_initial_info(wmi_unified_t wmi, void *evt_buf,
423*5113495bSYour Name 				      struct roam_initial_data *dst,
424*5113495bSYour Name 				      uint8_t idx);
425*5113495bSYour Name 
426*5113495bSYour Name /**
427*5113495bSYour Name  * wmi_unified_extract_roam_msg_info() - Extract roam msg info
428*5113495bSYour Name  * @wmi:       wmi handle
429*5113495bSYour Name  * @evt_buf:   Pointer to the event buffer
430*5113495bSYour Name  * @dst:       Pointer to destination structure to fill data
431*5113495bSYour Name  * @idx:       TLV id
432*5113495bSYour Name  *
433*5113495bSYour Name  * Return: QDF_STATUS
434*5113495bSYour Name  */
435*5113495bSYour Name QDF_STATUS
436*5113495bSYour Name wmi_unified_extract_roam_msg_info(wmi_unified_t wmi, void *evt_buf,
437*5113495bSYour Name 				  struct roam_msg_info *dst, uint8_t idx);
438*5113495bSYour Name 
439*5113495bSYour Name /**
440*5113495bSYour Name  * wmi_extract_roam_stats_event  - Extract roam stats event
441*5113495bSYour Name  * @wmi_handle: WMI handle
442*5113495bSYour Name  * @event: Event data received from firmware
443*5113495bSYour Name  * @data_len: Event data length received from firmware
444*5113495bSYour Name  * @stats_info: Extract the event and fill in stats_info
445*5113495bSYour Name  *
446*5113495bSYour Name  * Return: QDF_STATUS
447*5113495bSYour Name  */
448*5113495bSYour Name QDF_STATUS
449*5113495bSYour Name wmi_extract_roam_stats_event(wmi_unified_t wmi_handle,
450*5113495bSYour Name 			     uint8_t *event, uint32_t data_len,
451*5113495bSYour Name 			     struct roam_stats_event **stats_info);
452*5113495bSYour Name 
453*5113495bSYour Name /**
454*5113495bSYour Name  * wmi_unified_extract_roam_extract_frame_info() - Extract the roam frame
455*5113495bSYour Name  * info TLV from roam stats event
456*5113495bSYour Name  * @wmi:        wmi handle
457*5113495bSYour Name  * @evt_buf:    Pointer to the event buffer
458*5113495bSYour Name  * @dst:        Pointer to destination structure to fill data
459*5113495bSYour Name  * @idx:        Index of the TLV to read
460*5113495bSYour Name  * @num_frames: Number of TLV to read
461*5113495bSYour Name  *
462*5113495bSYour Name  * Return: QDF_STATUS
463*5113495bSYour Name  */
464*5113495bSYour Name QDF_STATUS
465*5113495bSYour Name wmi_unified_extract_roam_extract_frame_info(wmi_unified_t wmi, void *evt_buf,
466*5113495bSYour Name 					    struct roam_frame_stats *dst,
467*5113495bSYour Name 					    uint8_t idx, uint8_t num_frames);
468*5113495bSYour Name 
469*5113495bSYour Name /**
470*5113495bSYour Name  * wmi_extract_auth_offload_event  - Extract auth offload event
471*5113495bSYour Name  * @wmi_handle: WMI handle
472*5113495bSYour Name  * @event: Event data received from firmware
473*5113495bSYour Name  * @data_len: Event data length received from firmware
474*5113495bSYour Name  * @auth_event: Extract the event and fill in auth_event
475*5113495bSYour Name  *
476*5113495bSYour Name  * Return: QDF_STATUS
477*5113495bSYour Name  */
478*5113495bSYour Name QDF_STATUS
479*5113495bSYour Name wmi_extract_auth_offload_event(wmi_unified_t wmi_handle,
480*5113495bSYour Name 			       uint8_t *event, uint32_t data_len,
481*5113495bSYour Name 			       struct auth_offload_event *auth_event);
482*5113495bSYour Name 
483*5113495bSYour Name /**
484*5113495bSYour Name  * wmi_extract_roam_pmkid_request - Extract roam pmkid list
485*5113495bSYour Name  * @wmi_handle: WMI handle
486*5113495bSYour Name  * @event: Event data received from firmware
487*5113495bSYour Name  * @data_len: Event data length received from firmware
488*5113495bSYour Name  * @data: Extract the event and fill in data
489*5113495bSYour Name  *
490*5113495bSYour Name  * Return: QDF_STATUS
491*5113495bSYour Name  */
492*5113495bSYour Name QDF_STATUS
493*5113495bSYour Name wmi_extract_roam_pmkid_request(wmi_unified_t wmi_handle,
494*5113495bSYour Name 			       uint8_t *event, uint32_t data_len,
495*5113495bSYour Name 			       struct roam_pmkid_req_event **data);
496*5113495bSYour Name 
497*5113495bSYour Name /**
498*5113495bSYour Name  * wmi_extract_roam_candidate_frame_event() - Extract the roam candidate
499*5113495bSYour Name  * scan entry and update the scan db
500*5113495bSYour Name  * @wmi_handle: wmi handle
501*5113495bSYour Name  * @event: Event data received from firmware
502*5113495bSYour Name  * @len: Event data length received from firmware
503*5113495bSYour Name  * @data: Extract the event and fill in data
504*5113495bSYour Name  */
505*5113495bSYour Name QDF_STATUS
506*5113495bSYour Name wmi_extract_roam_candidate_frame_event(wmi_unified_t wmi_handle, uint8_t *event,
507*5113495bSYour Name 				       uint32_t len,
508*5113495bSYour Name 				       struct roam_scan_candidate_frame *data);
509*5113495bSYour Name #endif /* WLAN_FEATURE_ROAM_OFFLOAD */
510*5113495bSYour Name 
511*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
512*5113495bSYour Name QDF_STATUS
513*5113495bSYour Name wmi_unified_roam_mlo_config_cmd(wmi_unified_t wmi_handle,
514*5113495bSYour Name 				struct wlan_roam_mlo_config *req);
515*5113495bSYour Name #else
516*5113495bSYour Name static inline QDF_STATUS
wmi_unified_roam_mlo_config_cmd(wmi_unified_t wmi_handle,struct wlan_roam_mlo_config * req)517*5113495bSYour Name wmi_unified_roam_mlo_config_cmd(wmi_unified_t wmi_handle,
518*5113495bSYour Name 				struct wlan_roam_mlo_config *req)
519*5113495bSYour Name {
520*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
521*5113495bSYour Name }
522*5113495bSYour Name #endif
523*5113495bSYour Name 
524*5113495bSYour Name /**
525*5113495bSYour Name  * wmi_unified_roam_scan_offload_mode_cmd() - set roam scan parameters
526*5113495bSYour Name  * @wmi_handle: wmi handle
527*5113495bSYour Name  * @rso_cfg: roam scan offload parameters
528*5113495bSYour Name  *
529*5113495bSYour Name  * This function reads the incoming @rso_cfg and fill in the destination
530*5113495bSYour Name  * WMI structure and send down the roam scan configs down to the firmware
531*5113495bSYour Name  *
532*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
533*5113495bSYour Name  */
534*5113495bSYour Name QDF_STATUS wmi_unified_roam_scan_offload_mode_cmd(
535*5113495bSYour Name 			wmi_unified_t wmi_handle,
536*5113495bSYour Name 			struct wlan_roam_scan_offload_params *rso_cfg);
537*5113495bSYour Name 
538*5113495bSYour Name /**
539*5113495bSYour Name  * wmi_unified_send_roam_scan_offload_ap_cmd() - set roam ap profile in fw
540*5113495bSYour Name  * @wmi_handle: wmi handle
541*5113495bSYour Name  * @ap_profile: ap profile params
542*5113495bSYour Name  *
543*5113495bSYour Name  * Send WMI_ROAM_AP_PROFILE to firmware
544*5113495bSYour Name  *
545*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
546*5113495bSYour Name  */
547*5113495bSYour Name QDF_STATUS wmi_unified_send_roam_scan_offload_ap_cmd(
548*5113495bSYour Name 				wmi_unified_t wmi_handle,
549*5113495bSYour Name 				struct ap_profile_params *ap_profile);
550*5113495bSYour Name 
551*5113495bSYour Name /**
552*5113495bSYour Name  * wmi_unified_roam_scan_offload_cmd() - set roam offload command
553*5113495bSYour Name  * @wmi_handle: wmi handle
554*5113495bSYour Name  * @command: command
555*5113495bSYour Name  * @vdev_id: vdev id
556*5113495bSYour Name  *
557*5113495bSYour Name  * This function set roam offload command to fw.
558*5113495bSYour Name  *
559*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
560*5113495bSYour Name  */
561*5113495bSYour Name QDF_STATUS wmi_unified_roam_scan_offload_cmd(wmi_unified_t wmi_handle,
562*5113495bSYour Name 					     uint32_t command,
563*5113495bSYour Name 					     uint32_t vdev_id);
564*5113495bSYour Name 
565*5113495bSYour Name /**
566*5113495bSYour Name  * wmi_unified_roam_scan_offload_chan_list_cmd  - Roam scan offload channel
567*5113495bSYour Name  * list command
568*5113495bSYour Name  * @wmi_handle: wmi handle
569*5113495bSYour Name  * @rso_ch_info: roam scan offload channel info
570*5113495bSYour Name  *
571*5113495bSYour Name  * Return: QDF_STATUS
572*5113495bSYour Name  */
573*5113495bSYour Name QDF_STATUS
574*5113495bSYour Name wmi_unified_roam_scan_offload_chan_list_cmd(wmi_unified_t wmi_handle,
575*5113495bSYour Name 			struct wlan_roam_scan_channel_list *rso_ch_info);
576*5113495bSYour Name 
577*5113495bSYour Name /**
578*5113495bSYour Name  * wmi_unified_roam_scan_offload_rssi_change_cmd() - set roam offload RSSI
579*5113495bSYour Name  * threshold
580*5113495bSYour Name  * @wmi_handle: wmi handle
581*5113495bSYour Name  * @params: RSSI change params
582*5113495bSYour Name  *
583*5113495bSYour Name  * Send WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD parameters to fw.
584*5113495bSYour Name  *
585*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
586*5113495bSYour Name  */
587*5113495bSYour Name QDF_STATUS
588*5113495bSYour Name wmi_unified_roam_scan_offload_rssi_change_cmd(
589*5113495bSYour Name 		wmi_unified_t wmi_handle,
590*5113495bSYour Name 		struct wlan_roam_rssi_change_params *params);
591*5113495bSYour Name 
592*5113495bSYour Name /**
593*5113495bSYour Name  * wmi_unified_set_per_roam_config() - set PER roam config in FW
594*5113495bSYour Name  * @wmi_handle: wmi handle
595*5113495bSYour Name  * @req_buf: per roam config request buffer
596*5113495bSYour Name  *
597*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
598*5113495bSYour Name  */
599*5113495bSYour Name QDF_STATUS
600*5113495bSYour Name wmi_unified_set_per_roam_config(wmi_unified_t wmi_handle,
601*5113495bSYour Name 				struct wlan_per_roam_config_req *req_buf);
602*5113495bSYour Name 
603*5113495bSYour Name /**
604*5113495bSYour Name  * wmi_unified_send_limit_off_chan_cmd() - send wmi cmd of limit off channel
605*5113495bSYour Name  * configuration params
606*5113495bSYour Name  * @wmi_handle:  wmi handler
607*5113495bSYour Name  * @wmi_param: pointer to wmi_limit_off_chan_param
608*5113495bSYour Name  *
609*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF failure reason code on failure
610*5113495bSYour Name  */
611*5113495bSYour Name QDF_STATUS wmi_unified_send_limit_off_chan_cmd(
612*5113495bSYour Name 		wmi_unified_t wmi_handle,
613*5113495bSYour Name 		struct wmi_limit_off_chan_param *wmi_param);
614*5113495bSYour Name 
615*5113495bSYour Name #ifdef WLAN_FEATURE_FILS_SK
616*5113495bSYour Name /*
617*5113495bSYour Name  * wmi_unified_roam_send_hlp_cmd() -send HLP command info
618*5113495bSYour Name  * @wmi_handle: wma handle
619*5113495bSYour Name  * @req_buf: Pointer to HLP params
620*5113495bSYour Name  *
621*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
622*5113495bSYour Name  */
623*5113495bSYour Name QDF_STATUS wmi_unified_roam_send_hlp_cmd(wmi_unified_t wmi_handle,
624*5113495bSYour Name 					 struct hlp_params *req_buf);
625*5113495bSYour Name #endif /* WLAN_FEATURE_FILS_SK */
626*5113495bSYour Name 
627*5113495bSYour Name /**
628*5113495bSYour Name  * wmi_unified_send_btm_config() - Send BTM config to fw
629*5113495bSYour Name  * @wmi_handle:  wmi handle
630*5113495bSYour Name  * @params: pointer to wlan_roam_btm_config
631*5113495bSYour Name  *
632*5113495bSYour Name  * Return: QDF_STATUS
633*5113495bSYour Name  */
634*5113495bSYour Name QDF_STATUS wmi_unified_send_btm_config(wmi_unified_t wmi_handle,
635*5113495bSYour Name 				       struct wlan_roam_btm_config *params);
636*5113495bSYour Name 
637*5113495bSYour Name /**
638*5113495bSYour Name  * wmi_unified_send_bss_load_config() - Send bss load trigger params to fw
639*5113495bSYour Name  * @wmi_handle:  wmi handle
640*5113495bSYour Name  * @params: pointer to wlan_roam_bss_load_config
641*5113495bSYour Name  *
642*5113495bSYour Name  * Return: QDF_STATUS
643*5113495bSYour Name  */
644*5113495bSYour Name QDF_STATUS wmi_unified_send_bss_load_config(
645*5113495bSYour Name 				wmi_unified_t wmi_handle,
646*5113495bSYour Name 				struct wlan_roam_bss_load_config *params);
647*5113495bSYour Name 
648*5113495bSYour Name /**
649*5113495bSYour Name  * wmi_unified_offload_11k_cmd() - send 11k offload command
650*5113495bSYour Name  * @wmi_handle: wmi handle
651*5113495bSYour Name  * @params: 11k offload params
652*5113495bSYour Name  *
653*5113495bSYour Name  * This function passes the 11k offload command params to FW
654*5113495bSYour Name  *
655*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
656*5113495bSYour Name  */
657*5113495bSYour Name QDF_STATUS
658*5113495bSYour Name wmi_unified_offload_11k_cmd(wmi_unified_t wmi_handle,
659*5113495bSYour Name 			    struct wlan_roam_11k_offload_params *params);
660*5113495bSYour Name /**
661*5113495bSYour Name  * wmi_unified_invoke_neighbor_report_cmd() - send invoke neighbor report cmd
662*5113495bSYour Name  * @wmi_handle: wmi handle
663*5113495bSYour Name  * @params: invoke neighbor report params
664*5113495bSYour Name  *
665*5113495bSYour Name  * This function passes the invoke neighbor report command to fw
666*5113495bSYour Name  *
667*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
668*5113495bSYour Name  */
669*5113495bSYour Name QDF_STATUS wmi_unified_invoke_neighbor_report_cmd(
670*5113495bSYour Name 			wmi_unified_t wmi_handle,
671*5113495bSYour Name 			struct wmi_invoke_neighbor_report_params *params);
672*5113495bSYour Name 
673*5113495bSYour Name /**
674*5113495bSYour Name  * wmi_unified_get_roam_scan_ch_list() - send roam scan channel list get cmd
675*5113495bSYour Name  * @wmi_handle: wmi handle
676*5113495bSYour Name  * @vdev_id: vdev id
677*5113495bSYour Name  *
678*5113495bSYour Name  * This function sends roam scan channel list get command to firmware.
679*5113495bSYour Name  *
680*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
681*5113495bSYour Name  */
682*5113495bSYour Name QDF_STATUS wmi_unified_get_roam_scan_ch_list(wmi_unified_t wmi_handle,
683*5113495bSYour Name 					     uint8_t vdev_id);
684*5113495bSYour Name 
685*5113495bSYour Name #endif /* _WMI_UNIFIED_ROAM_API_H_ */
686