xref: /wlan-driver/qca-wifi-host-cmn/umac/mlme/include/wlan_mlme_cmn.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2019-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 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: Define Common MLME structure and APIs
20*5113495bSYour Name  */
21*5113495bSYour Name #ifndef _WLAN_MLME_CMN_H_
22*5113495bSYour Name #define _WLAN_MLME_CMN_H_
23*5113495bSYour Name 
24*5113495bSYour Name #include <include/wlan_psoc_mlme.h>
25*5113495bSYour Name #include <include/wlan_pdev_mlme.h>
26*5113495bSYour Name #include <include/wlan_vdev_mlme.h>
27*5113495bSYour Name #include "wlan_cm_public_struct.h"
28*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
29*5113495bSYour Name #include "wlan_cm_roam_public_struct.h"
30*5113495bSYour Name #endif
31*5113495bSYour Name #include "wlan_twt_public_structs.h"
32*5113495bSYour Name 
33*5113495bSYour Name /**
34*5113495bSYour Name  * struct mlme_cm_ops: connection manager osif callbacks
35*5113495bSYour Name  * @mlme_cm_connect_active_notify_cb: Connect active notify callback
36*5113495bSYour Name  * @mlme_cm_connect_complete_cb: Connect done callback
37*5113495bSYour Name  * @vdev: vdev pointer
38*5113495bSYour Name  * @rsp: connect response
39*5113495bSYour Name  *
40*5113495bSYour Name  * @mlme_cm_failed_candidate_cb: Callback to indicate failed candidate
41*5113495bSYour Name  * @vdev: vdev pointer
42*5113495bSYour Name  * @rsp: connect response
43*5113495bSYour Name  *
44*5113495bSYour Name  * @mlme_cm_update_id_and_src_cb: Callback to update connect id and
45*5113495bSYour Name  *                                source of the connect request
46*5113495bSYour Name  * @vdev: vdev pointer
47*5113495bSYour Name  * @Source: Source of the connect req
48*5113495bSYour Name  * @cm_id: connection manager id
49*5113495bSYour Name  *
50*5113495bSYour Name  * @mlme_cm_disconnect_complete_cb: Disconnect done callback
51*5113495bSYour Name  * @vdev: vdev pointer
52*5113495bSYour Name  * @rsp: Disconnect response
53*5113495bSYour Name  *
54*5113495bSYour Name  * @mlme_cm_disconnect_start_cb: Disconnect start callback
55*5113495bSYour Name  * @vdev: vdev pointer
56*5113495bSYour Name  *
57*5113495bSYour Name  * @mlme_cm_roam_sync_cb: Roam sync callback
58*5113495bSYour Name  * @vdev: vdev pointer
59*5113495bSYour Name  *
60*5113495bSYour Name  * @mlme_cm_pmksa_candidate_notify_cb: Roam pmksa candidate notify callback
61*5113495bSYour Name  * @vdev: vdev pointer
62*5113495bSYour Name  * @bssid: bssid
63*5113495bSYour Name  * @index: index
64*5113495bSYour Name  * @preauth: preauth flag
65*5113495bSYour Name  *
66*5113495bSYour Name  * @mlme_cm_send_keys_cb:
67*5113495bSYour Name  * @vdev: vdev pointer
68*5113495bSYour Name  * @key_index: key index
69*5113495bSYour Name  * @pairwise: true if a pairwise key
70*5113495bSYour Name  * @cipher_type: key cipher type
71*5113495bSYour Name  *
72*5113495bSYour Name  * @mlme_cm_link_reconfig_notify_cb:
73*5113495bSYour Name  * @vdev: vdev object
74*5113495bSYour Name  *
75*5113495bSYour Name  * @mlme_cm_roam_start_cb: Roam start callback
76*5113495bSYour Name  * @vdev: vdev pointer
77*5113495bSYour Name  *
78*5113495bSYour Name  * @mlme_cm_roam_abort_cb: Roam abort callback
79*5113495bSYour Name  * @vdev: vdev pointer
80*5113495bSYour Name  *
81*5113495bSYour Name  * @mlme_cm_roam_cmpl_cb: Roam sync complete cb
82*5113495bSYour Name  * @vdev: vdev pointer
83*5113495bSYour Name  *
84*5113495bSYour Name  * @mlme_cm_roam_get_scan_ie_cb: Get scan ie cb
85*5113495bSYour Name  * @vdev: vdev pointer
86*5113495bSYour Name  * @scan_ie: scan ie element pointer
87*5113495bSYour Name  * @dot11mode_filter: dot11mode filter enumn pointer
88*5113495bSYour Name  *
89*5113495bSYour Name  * @mlme_cm_roam_rt_stats_cb: Roam stats cb
90*5113495bSYour Name  * @roam_stats_event: roam_stats_event pointer
91*5113495bSYour Name  * @idx: TLV idx for roam_stats_event
92*5113495bSYour Name  *
93*5113495bSYour Name  * @mlme_cm_ft_preauth_cmpl_cb: Roam ft preauth complete cb
94*5113495bSYour Name  * @vdev: vdev pointer
95*5113495bSYour Name  * @rsp: preauth response pointer
96*5113495bSYour Name  *
97*5113495bSYour Name  * @mlme_cm_cckm_preauth_cmpl_cb: Roam cckm preauth complete cb
98*5113495bSYour Name  * @vdev: vdev pointer
99*5113495bSYour Name  * @rsp: preauth response pointer
100*5113495bSYour Name  *
101*5113495bSYour Name  * @mlme_cm_get_vendor_handoff_params_cb: get vendor handoff params cb
102*5113495bSYour Name  * @psoc: psoc pointer
103*5113495bSYour Name  * @rsp: vendor handoff response pointer
104*5113495bSYour Name  * @vendor_handoff_context: vendor handoff context
105*5113495bSYour Name  *
106*5113495bSYour Name  * @mlme_cm_perfd_reset_cpufreq_ctrl_cb: callback to reset CPU min freq
107*5113495bSYour Name  */
108*5113495bSYour Name struct mlme_cm_ops {
109*5113495bSYour Name 	void (*mlme_cm_connect_active_notify_cb)(uint8_t vdev_id);
110*5113495bSYour Name 	QDF_STATUS (*mlme_cm_connect_complete_cb)(
111*5113495bSYour Name 					struct wlan_objmgr_vdev *vdev,
112*5113495bSYour Name 					struct wlan_cm_connect_resp *rsp);
113*5113495bSYour Name 	QDF_STATUS (*mlme_cm_failed_candidate_cb)(
114*5113495bSYour Name 					struct wlan_objmgr_vdev *vdev,
115*5113495bSYour Name 					struct wlan_cm_connect_resp *rsp);
116*5113495bSYour Name 	QDF_STATUS (*mlme_cm_update_id_and_src_cb)(
117*5113495bSYour Name 					struct wlan_objmgr_vdev *vdev,
118*5113495bSYour Name 					enum wlan_cm_source source,
119*5113495bSYour Name 					wlan_cm_id cm_id);
120*5113495bSYour Name 	QDF_STATUS (*mlme_cm_disconnect_complete_cb)(
121*5113495bSYour Name 					struct wlan_objmgr_vdev *vdev,
122*5113495bSYour Name 					struct wlan_cm_discon_rsp *rsp);
123*5113495bSYour Name 	QDF_STATUS (*mlme_cm_disconnect_start_cb)(
124*5113495bSYour Name 					struct wlan_objmgr_vdev *vdev,
125*5113495bSYour Name 					enum wlan_cm_source source);
126*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
127*5113495bSYour Name 	QDF_STATUS (*mlme_cm_roam_sync_cb)(struct wlan_objmgr_vdev *vdev);
128*5113495bSYour Name 	QDF_STATUS (*mlme_cm_pmksa_candidate_notify_cb)(
129*5113495bSYour Name 						struct wlan_objmgr_vdev *vdev,
130*5113495bSYour Name 						struct qdf_mac_addr *bssid,
131*5113495bSYour Name 						int index, bool preauth);
132*5113495bSYour Name 	QDF_STATUS (*mlme_cm_send_keys_cb)(struct wlan_objmgr_vdev *vdev,
133*5113495bSYour Name 					   uint8_t key_index, bool pairwise,
134*5113495bSYour Name 					   enum wlan_crypto_cipher_type cipher_type);
135*5113495bSYour Name 	QDF_STATUS (*mlme_cm_link_reconfig_notify_cb)(
136*5113495bSYour Name 					struct wlan_objmgr_vdev *vdev);
137*5113495bSYour Name #endif
138*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
139*5113495bSYour Name 	QDF_STATUS (*mlme_cm_roam_start_cb)(struct wlan_objmgr_vdev *vdev);
140*5113495bSYour Name 	QDF_STATUS (*mlme_cm_roam_abort_cb)(struct wlan_objmgr_vdev *vdev);
141*5113495bSYour Name 	QDF_STATUS (*mlme_cm_roam_cmpl_cb)(struct wlan_objmgr_vdev *vdev);
142*5113495bSYour Name 	QDF_STATUS (*mlme_cm_roam_get_scan_ie_cb)(struct wlan_objmgr_vdev *vdev,
143*5113495bSYour Name 				struct element_info *scan_ie,
144*5113495bSYour Name 				enum dot11_mode_filter *dot11mode_filter);
145*5113495bSYour Name 	void (*mlme_cm_roam_rt_stats_cb)(struct roam_stats_event *roam_stats,
146*5113495bSYour Name 					 uint8_t idx);
147*5113495bSYour Name #endif
148*5113495bSYour Name #ifdef WLAN_FEATURE_PREAUTH_ENABLE
149*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ft_preauth_cmpl_cb)(
150*5113495bSYour Name 					struct wlan_objmgr_vdev *vdev,
151*5113495bSYour Name 					struct wlan_preauth_rsp *rsp);
152*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
153*5113495bSYour Name 	QDF_STATUS (*mlme_cm_cckm_preauth_cmpl_cb)(
154*5113495bSYour Name 					struct wlan_objmgr_vdev *vdev,
155*5113495bSYour Name 					struct wlan_preauth_rsp *rsp);
156*5113495bSYour Name #endif
157*5113495bSYour Name #endif
158*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL
159*5113495bSYour Name 	QDF_STATUS (*mlme_cm_get_vendor_handoff_params_cb)(
160*5113495bSYour Name 				struct wlan_objmgr_psoc *psoc,
161*5113495bSYour Name 				void *vendor_handoff_context);
162*5113495bSYour Name #endif
163*5113495bSYour Name #ifdef WLAN_BOOST_CPU_FREQ_IN_ROAM
164*5113495bSYour Name 	void (*mlme_cm_perfd_reset_cpufreq_ctrl_cb)(void);
165*5113495bSYour Name #endif
166*5113495bSYour Name };
167*5113495bSYour Name 
168*5113495bSYour Name /**
169*5113495bSYour Name  * struct mlme_vdev_mgr_ops - MLME VDEV mgr osif callbacks
170*5113495bSYour Name  * @mlme_vdev_mgr_set_mac_addr_response: Callback to indicate set MAC address
171*5113495bSYour Name  *                                       response to osif
172*5113495bSYour Name  * @mlme_vdev_mgr_send_scan_done_complete_cb: Callback to indicate scan done
173*5113495bSYour Name  *                                            complete to osif
174*5113495bSYour Name  */
175*5113495bSYour Name struct mlme_vdev_mgr_ops {
176*5113495bSYour Name #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
177*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_mgr_set_mac_addr_response)(uint8_t vdev_id,
178*5113495bSYour Name 							  uint8_t resp_status);
179*5113495bSYour Name #endif
180*5113495bSYour Name 	void (*mlme_vdev_mgr_send_scan_done_complete_cb)(uint8_t vdev_id);
181*5113495bSYour Name };
182*5113495bSYour Name 
183*5113495bSYour Name /**
184*5113495bSYour Name  * struct mlme_twt_ops: twt component osif callbacks
185*5113495bSYour Name  * @mlme_twt_enable_complete_cb: TWT enable complete callback
186*5113495bSYour Name  * @psoc: psoc pointer
187*5113495bSYour Name  * @event: response
188*5113495bSYour Name  * @context: context
189*5113495bSYour Name  *
190*5113495bSYour Name  * @mlme_twt_disable_complete_cb: TWT disable complete callback
191*5113495bSYour Name  * @psoc: psoc pointer
192*5113495bSYour Name  * @event: response
193*5113495bSYour Name  * @context: context
194*5113495bSYour Name  *
195*5113495bSYour Name  * @mlme_twt_ack_complete_cb: TWT ack complete callback
196*5113495bSYour Name  * @psoc: psoc pointer
197*5113495bSYour Name  * @event: response
198*5113495bSYour Name  * @context: context
199*5113495bSYour Name  *
200*5113495bSYour Name  * @mlme_twt_setup_complete_cb: TWT setup complete callback
201*5113495bSYour Name  * @psoc: psoc pointer
202*5113495bSYour Name  * @event: response
203*5113495bSYour Name  * @renego_fail: flag to indicate if renegotiation failure case
204*5113495bSYour Name  *
205*5113495bSYour Name  * @mlme_twt_teardown_complete_cb: TWT teardown complete callback
206*5113495bSYour Name  * @psoc: psoc pointer
207*5113495bSYour Name  * @event: response
208*5113495bSYour Name  *
209*5113495bSYour Name  * @mlme_twt_pause_complete_cb: TWT pause complete callback
210*5113495bSYour Name  * @psoc: psoc pointer
211*5113495bSYour Name  * @event: response
212*5113495bSYour Name  *
213*5113495bSYour Name  * @mlme_twt_resume_complete_cb: TWT resume complete callback
214*5113495bSYour Name  * @psoc: psoc pointer
215*5113495bSYour Name  * @event: response
216*5113495bSYour Name  *
217*5113495bSYour Name  * @mlme_twt_nudge_complete_cb: TWT nudge complete callback
218*5113495bSYour Name  * @psoc: psoc pointer
219*5113495bSYour Name  * @event: response
220*5113495bSYour Name  *
221*5113495bSYour Name  * @mlme_twt_notify_complete_cb: TWT notify complete callback
222*5113495bSYour Name  * @psoc: psoc pointer
223*5113495bSYour Name  * @event: response
224*5113495bSYour Name  *
225*5113495bSYour Name  * @mlme_twt_vdev_create_cb: TWT vdev create callback
226*5113495bSYour Name  * @vdev: vdev pointer
227*5113495bSYour Name  *
228*5113495bSYour Name  * @mlme_twt_vdev_destroy_cb: TWT vdev destroy callback
229*5113495bSYour Name  * @vdev: vdev pointer
230*5113495bSYour Name  */
231*5113495bSYour Name struct mlme_twt_ops {
232*5113495bSYour Name 	QDF_STATUS (*mlme_twt_enable_complete_cb)(
233*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
234*5113495bSYour Name 			struct twt_enable_complete_event_param *event,
235*5113495bSYour Name 			void *context);
236*5113495bSYour Name 
237*5113495bSYour Name 	QDF_STATUS (*mlme_twt_disable_complete_cb)(
238*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
239*5113495bSYour Name 			struct twt_disable_complete_event_param *event,
240*5113495bSYour Name 			void *context);
241*5113495bSYour Name 
242*5113495bSYour Name 	QDF_STATUS (*mlme_twt_ack_complete_cb)(
243*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
244*5113495bSYour Name 			struct twt_ack_complete_event_param *event,
245*5113495bSYour Name 			void *context);
246*5113495bSYour Name 
247*5113495bSYour Name 	QDF_STATUS (*mlme_twt_setup_complete_cb)(
248*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
249*5113495bSYour Name 			struct twt_add_dialog_complete_event *event,
250*5113495bSYour Name 			bool renego_fail);
251*5113495bSYour Name 
252*5113495bSYour Name 	QDF_STATUS (*mlme_twt_teardown_complete_cb)(
253*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
254*5113495bSYour Name 			struct twt_del_dialog_complete_event_param *event);
255*5113495bSYour Name 
256*5113495bSYour Name 	QDF_STATUS (*mlme_twt_pause_complete_cb)(
257*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
258*5113495bSYour Name 			struct twt_pause_dialog_complete_event_param *event);
259*5113495bSYour Name 
260*5113495bSYour Name 	QDF_STATUS (*mlme_twt_resume_complete_cb)(
261*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
262*5113495bSYour Name 			struct twt_resume_dialog_complete_event_param *event);
263*5113495bSYour Name 
264*5113495bSYour Name 	QDF_STATUS (*mlme_twt_nudge_complete_cb)(
265*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
266*5113495bSYour Name 			struct twt_nudge_dialog_complete_event_param *event);
267*5113495bSYour Name 
268*5113495bSYour Name 	QDF_STATUS (*mlme_twt_notify_complete_cb)(
269*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc,
270*5113495bSYour Name 			struct twt_notify_event_param *event);
271*5113495bSYour Name 
272*5113495bSYour Name 	QDF_STATUS (*mlme_twt_vdev_create_cb)(
273*5113495bSYour Name 			struct wlan_objmgr_vdev *vdev);
274*5113495bSYour Name 
275*5113495bSYour Name 	QDF_STATUS (*mlme_twt_vdev_destroy_cb)(
276*5113495bSYour Name 			struct wlan_objmgr_vdev *vdev);
277*5113495bSYour Name };
278*5113495bSYour Name 
279*5113495bSYour Name /**
280*5113495bSYour Name  * struct mlme_ext_ops - MLME legacy callbacks structure
281*5113495bSYour Name  * @mlme_psoc_ext_hdl_create:               callback to invoke creation of
282*5113495bSYour Name  *                                          legacy psoc object
283*5113495bSYour Name  * @mlme_psoc_ext_hdl_destroy:              callback to invoke destroy of legacy
284*5113495bSYour Name  *                                          psoc object
285*5113495bSYour Name  * @mlme_pdev_ext_hdl_create:               callback to invoke creation of
286*5113495bSYour Name  *                                          legacy pdev object
287*5113495bSYour Name  * @mlme_pdev_ext_hdl_destroy:              callback to invoke destroy of legacy
288*5113495bSYour Name  *                                          pdev object
289*5113495bSYour Name  * @mlme_vdev_ext_hdl_create:               callback to invoke creation of
290*5113495bSYour Name  *                                          legacy vdev object
291*5113495bSYour Name  * @mlme_vdev_ext_hdl_post_create:          callback to invoke post creation
292*5113495bSYour Name  *                                          actions of legacy vdev object
293*5113495bSYour Name  * @mlme_vdev_ext_hdl_destroy:              callback to invoke destroy of legacy
294*5113495bSYour Name  *                                          vdev object
295*5113495bSYour Name  * @mlme_vdev_start_fw_send:                callback to invoke vdev start
296*5113495bSYour Name  *                                          command
297*5113495bSYour Name  * @mlme_vdev_stop_fw_send:                 callback to invoke vdev stop command
298*5113495bSYour Name  * @mlme_vdev_down_fw_send:                 callback to invoke vdev down command
299*5113495bSYour Name  * @mlme_multivdev_restart_fw_send:         callback to invoke multivdev restart
300*5113495bSYour Name  *                                          command
301*5113495bSYour Name  * @mlme_vdev_enqueue_exp_cmd:              callback to enqueue exception
302*5113495bSYour Name  *                                          command
303*5113495bSYour Name  *                                          required by serialization
304*5113495bSYour Name  * @mlme_vdev_ext_delete_rsp:               callback to process vdev ext delete
305*5113495bSYour Name  * @mlme_multi_vdev_restart_resp:           callback to process multivdev
306*5113495bSYour Name  *                                          restart response
307*5113495bSYour Name  * @mlme_cm_ext_hdl_create_cb:              callback to create ext cm context
308*5113495bSYour Name  * @mlme_cm_ext_hdl_destroy_cb:             callback to destroy ext cm context
309*5113495bSYour Name  * @mlme_cm_ext_connect_start_ind_cb:       callback to indicate connect start
310*5113495bSYour Name  * @mlme_cm_ext_bss_select_ind_cb:          callback to indicate candidate
311*5113495bSYour Name  *                                          select for connect
312*5113495bSYour Name  * @mlme_cm_ext_bss_peer_create_req_cb:     callback to bss peer create request
313*5113495bSYour Name  * @mlme_cm_ext_connect_req_cb:             callback for connect request to
314*5113495bSYour Name  *                                          VDEV/PEER SM
315*5113495bSYour Name  * @mlme_cm_ext_connect_complete_ind_cb:    callback to indicate connect
316*5113495bSYour Name  *                                          complete
317*5113495bSYour Name  * @mlme_cm_ext_disconnect_start_ind_cb :   callback to indicate disconnect
318*5113495bSYour Name  *                                          start
319*5113495bSYour Name  * @mlme_cm_ext_disconnect_req_cb:          callback to disconnect req to
320*5113495bSYour Name  *                                          VDEV/PEER SM
321*5113495bSYour Name  * @mlme_cm_ext_bss_peer_delete_req_cb:     callback to bss peer delete request
322*5113495bSYour Name  * @mlme_cm_ext_disconnect_complete_ind_cb: callback to indicate disconnect
323*5113495bSYour Name  *                                          complete
324*5113495bSYour Name  * @mlme_cm_ext_vdev_down_req_cb:           callback to send vdev down to FW
325*5113495bSYour Name  * @mlme_cm_ext_roam_start_ind_cb:          callback to indicate roam start
326*5113495bSYour Name  * @mlme_cm_ext_rso_stop_cb:                callback to send rso stop to FW
327*5113495bSYour Name  * @mlme_cm_ext_reassoc_req_cb:             callback for reassoc request to
328*5113495bSYour Name  *                                          VDEV/PEER SM
329*5113495bSYour Name  * @mlme_psoc_ext_hdl_enable: to enable mlme ext param handler
330*5113495bSYour Name  * @mlme_psoc_ext_hdl_disable: to disable mlme ext param handler
331*5113495bSYour Name  * @mlme_vdev_send_set_mac_addr:            callback to send set MAC address
332*5113495bSYour Name  *                                          request to FW
333*5113495bSYour Name  * @mlme_ext_get_acs_inprogress:            callback to determine if ACS is
334*5113495bSYour Name  *                                          in progress on a given vdev
335*5113495bSYour Name  */
336*5113495bSYour Name struct mlme_ext_ops {
337*5113495bSYour Name 	QDF_STATUS (*mlme_psoc_ext_hdl_create)(
338*5113495bSYour Name 				struct psoc_mlme_obj *psoc_mlme);
339*5113495bSYour Name 	QDF_STATUS (*mlme_psoc_ext_hdl_destroy)(
340*5113495bSYour Name 				struct psoc_mlme_obj *pdev_mlme);
341*5113495bSYour Name 	QDF_STATUS (*mlme_pdev_ext_hdl_create)(
342*5113495bSYour Name 				struct pdev_mlme_obj *pdev_mlme);
343*5113495bSYour Name 	QDF_STATUS (*mlme_pdev_ext_hdl_destroy)(
344*5113495bSYour Name 				struct pdev_mlme_obj *pdev_mlme);
345*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_ext_hdl_create)(
346*5113495bSYour Name 				struct vdev_mlme_obj *vdev_mlme);
347*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_ext_hdl_post_create)(
348*5113495bSYour Name 				struct vdev_mlme_obj *vdev_mlme);
349*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_ext_hdl_destroy)(
350*5113495bSYour Name 				struct vdev_mlme_obj *vdev_mlme);
351*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_start_fw_send)(
352*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev, uint8_t restart);
353*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_stop_fw_send)(struct wlan_objmgr_vdev *vdev);
354*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_down_fw_send)(struct wlan_objmgr_vdev *vdev);
355*5113495bSYour Name 	QDF_STATUS (*mlme_multivdev_restart_fw_send)(
356*5113495bSYour Name 				struct wlan_objmgr_pdev *pdev);
357*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_enqueue_exp_cmd)(
358*5113495bSYour Name 				struct vdev_mlme_obj *vdev_mlme,
359*5113495bSYour Name 				uint8_t cmd_type);
360*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_ext_delete_rsp)(
361*5113495bSYour Name 					   struct wlan_objmgr_psoc *psoc,
362*5113495bSYour Name 					   struct vdev_delete_response *rsp);
363*5113495bSYour Name 	QDF_STATUS (*mlme_multi_vdev_restart_resp)(
364*5113495bSYour Name 				struct wlan_objmgr_psoc *psoc,
365*5113495bSYour Name 				struct multi_vdev_restart_resp *resp);
366*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_hdl_create_cb)(struct wlan_objmgr_vdev *vdev,
367*5113495bSYour Name 						cm_ext_t **ext_cm_ptr);
368*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_hdl_destroy_cb)(struct wlan_objmgr_vdev *vdev,
369*5113495bSYour Name 						 cm_ext_t *ext_cm_ptr);
370*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_connect_start_ind_cb)(
371*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
372*5113495bSYour Name 				struct wlan_cm_connect_req *req);
373*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_bss_select_ind_cb)(
374*5113495bSYour Name 			struct wlan_objmgr_vdev *vdev,
375*5113495bSYour Name 			struct wlan_cm_vdev_connect_req *req);
376*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_bss_peer_create_req_cb)(
377*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
378*5113495bSYour Name 				struct qdf_mac_addr *peer_mac,
379*5113495bSYour Name 				struct qdf_mac_addr *mld_mac,
380*5113495bSYour Name 				bool is_assoc_link);
381*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_connect_req_cb)(struct wlan_objmgr_vdev *vdev,
382*5113495bSYour Name 			struct wlan_cm_vdev_connect_req *req);
383*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_connect_complete_ind_cb)(
384*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
385*5113495bSYour Name 				struct wlan_cm_connect_resp *rsp);
386*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_disconnect_start_ind_cb)(
387*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
388*5113495bSYour Name 				struct wlan_cm_disconnect_req *req);
389*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_disconnect_req_cb)
390*5113495bSYour Name 			(struct wlan_objmgr_vdev *vdev,
391*5113495bSYour Name 			struct wlan_cm_vdev_discon_req *req);
392*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_bss_peer_delete_req_cb)(
393*5113495bSYour Name 			struct wlan_objmgr_vdev *vdev);
394*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_disconnect_complete_ind_cb)(
395*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
396*5113495bSYour Name 				struct wlan_cm_discon_rsp *rsp);
397*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_vdev_down_req_cb)(
398*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev);
399*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_roam_start_ind_cb)(
400*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
401*5113495bSYour Name 				struct wlan_cm_roam_req *req);
402*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_rso_stop_cb)(struct wlan_objmgr_vdev *vdev);
403*5113495bSYour Name 	QDF_STATUS (*mlme_cm_ext_reassoc_req_cb)(
404*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
405*5113495bSYour Name 				struct wlan_cm_vdev_reassoc_req *req);
406*5113495bSYour Name 	QDF_STATUS (*mlme_psoc_ext_hdl_enable)(struct wlan_objmgr_psoc *psoc);
407*5113495bSYour Name 	QDF_STATUS (*mlme_psoc_ext_hdl_disable)(struct wlan_objmgr_psoc *psoc);
408*5113495bSYour Name #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
409*5113495bSYour Name 	QDF_STATUS (*mlme_vdev_send_set_mac_addr)(
410*5113495bSYour Name 						struct qdf_mac_addr mac_addr,
411*5113495bSYour Name 						struct qdf_mac_addr mld_addr,
412*5113495bSYour Name 						struct wlan_objmgr_vdev *vdev);
413*5113495bSYour Name #endif
414*5113495bSYour Name 	QDF_STATUS (*mlme_ext_get_acs_inprogress)(
415*5113495bSYour Name 						struct wlan_objmgr_vdev *vdev,
416*5113495bSYour Name 						bool *is_acs_inprogress);
417*5113495bSYour Name };
418*5113495bSYour Name 
419*5113495bSYour Name enum wlan_mlme_peer_param;
420*5113495bSYour Name enum wlan_mlme_vdev_param;
421*5113495bSYour Name enum wlan_mlme_pdev_param;
422*5113495bSYour Name 
423*5113495bSYour Name /**
424*5113495bSYour Name  * struct mlme_external_tx_ops - MLME external callbacks structure
425*5113495bSYour Name  * @peer_ops:             callback to invoke peer mlme ops from external module
426*5113495bSYour Name  * @vdev_ops:             callback to invoke vdev mlme ops from external module
427*5113495bSYour Name  * @pdev_ops:             callback to invoke pdev mlme ops from external module
428*5113495bSYour Name  * @scan_db_iterate:      callback to invoke scan database iterate
429*5113495bSYour Name  */
430*5113495bSYour Name struct mlme_external_tx_ops {
431*5113495bSYour Name 	QDF_STATUS (*peer_ops)(
432*5113495bSYour Name 		struct wlan_objmgr_peer *peer,
433*5113495bSYour Name 		enum wlan_mlme_peer_param type,
434*5113495bSYour Name 		void *data, void *ret);
435*5113495bSYour Name 	QDF_STATUS (*vdev_ops)(
436*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
437*5113495bSYour Name 		enum wlan_mlme_vdev_param type,
438*5113495bSYour Name 		void *data, void *ret);
439*5113495bSYour Name 	QDF_STATUS (*pdev_ops)(
440*5113495bSYour Name 		struct wlan_objmgr_pdev *pdev,
441*5113495bSYour Name 		enum wlan_mlme_pdev_param type,
442*5113495bSYour Name 		void *data, void *ret);
443*5113495bSYour Name 	QDF_STATUS (*scan_db_iterate)(
444*5113495bSYour Name 		struct wlan_objmgr_pdev *pdev,
445*5113495bSYour Name 		scan_iterator_func handler, void *arg);
446*5113495bSYour Name };
447*5113495bSYour Name 
448*5113495bSYour Name /**
449*5113495bSYour Name  * mlme_psoc_ops_ext_hdl_create() - Alloc PSOC mlme ext handle
450*5113495bSYour Name  * @psoc_mlme:  PSOC MLME comp object
451*5113495bSYour Name  *
452*5113495bSYour Name  * API to allocate PSOC MLME ext handle
453*5113495bSYour Name  *
454*5113495bSYour Name  * Return: SUCCESS on successful allocation
455*5113495bSYour Name  *         Else FAILURE
456*5113495bSYour Name  */
457*5113495bSYour Name QDF_STATUS mlme_psoc_ops_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme);
458*5113495bSYour Name 
459*5113495bSYour Name /**
460*5113495bSYour Name  * mlme_psoc_ops_ext_hdl_destroy() - Destroy PSOC mlme ext handle
461*5113495bSYour Name  * @psoc_mlme:  PSOC MLME comp object
462*5113495bSYour Name  *
463*5113495bSYour Name  * API to free psoc MLME ext handle
464*5113495bSYour Name  *
465*5113495bSYour Name  * Return: SUCCESS on successful free
466*5113495bSYour Name  *         Else FAILURE
467*5113495bSYour Name  */
468*5113495bSYour Name QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme);
469*5113495bSYour Name 
470*5113495bSYour Name /**
471*5113495bSYour Name  * mlme_psoc_ext_enable_cb() - to enable mlme ext param handler callback
472*5113495bSYour Name  * @psoc: psoc common object
473*5113495bSYour Name  *
474*5113495bSYour Name  * Return: QDF_STATUS
475*5113495bSYour Name  */
476*5113495bSYour Name QDF_STATUS mlme_psoc_ext_enable_cb(struct wlan_objmgr_psoc *psoc);
477*5113495bSYour Name 
478*5113495bSYour Name /**
479*5113495bSYour Name  * mlme_psoc_ext_disable_cb() - to disable mlme ext param handler callback
480*5113495bSYour Name  * @psoc: psoc common object
481*5113495bSYour Name  *
482*5113495bSYour Name  * Return: QDF_STATUS
483*5113495bSYour Name  */
484*5113495bSYour Name QDF_STATUS mlme_psoc_ext_disable_cb(struct wlan_objmgr_psoc *psoc);
485*5113495bSYour Name 
486*5113495bSYour Name /**
487*5113495bSYour Name  * mlme_pdev_ops_ext_hdl_create - Alloc PDEV mlme ext handle
488*5113495bSYour Name  * @pdev_mlme:  PDEV MLME comp object
489*5113495bSYour Name  *
490*5113495bSYour Name  * API to allocate PDEV MLME ext handle
491*5113495bSYour Name  *
492*5113495bSYour Name  * Return: SUCCESS on successful allocation
493*5113495bSYour Name  *         Else FAILURE
494*5113495bSYour Name  */
495*5113495bSYour Name QDF_STATUS mlme_pdev_ops_ext_hdl_create(struct pdev_mlme_obj *pdev_mlme);
496*5113495bSYour Name 
497*5113495bSYour Name /**
498*5113495bSYour Name  * mlme_pdev_ops_ext_hdl_destroy - Destroy PDEV mlme ext handle
499*5113495bSYour Name  * @pdev_mlme:  PDEV MLME comp object
500*5113495bSYour Name  *
501*5113495bSYour Name  * API to free pdev MLME ext handle
502*5113495bSYour Name  *
503*5113495bSYour Name  * Return: SUCCESS on successful free
504*5113495bSYour Name  *         Else FAILURE
505*5113495bSYour Name  */
506*5113495bSYour Name QDF_STATUS mlme_pdev_ops_ext_hdl_destroy(struct pdev_mlme_obj *pdev_mlme);
507*5113495bSYour Name 
508*5113495bSYour Name /**
509*5113495bSYour Name  * mlme_vdev_ops_ext_hdl_create - Alloc VDEV mlme ext handle
510*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
511*5113495bSYour Name  *
512*5113495bSYour Name  * API to allocate VDEV MLME ext handle
513*5113495bSYour Name  *
514*5113495bSYour Name  * Return: SUCCESS on successful allocation
515*5113495bSYour Name  *         Else FAILURE
516*5113495bSYour Name  */
517*5113495bSYour Name QDF_STATUS mlme_vdev_ops_ext_hdl_create(struct vdev_mlme_obj *vdev_mlme);
518*5113495bSYour Name 
519*5113495bSYour Name /**
520*5113495bSYour Name  * mlme_vdev_ops_ext_hdl_post_create - Perform post VDEV mlme ext handle alloc
521*5113495bSYour Name  *                                     operations
522*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
523*5113495bSYour Name  *
524*5113495bSYour Name  * API to perform post vdev MLME ext handle allocation operations
525*5113495bSYour Name  *
526*5113495bSYour Name  * Return: SUCCESS on initialization successful
527*5113495bSYour Name  *         Else FAILURE
528*5113495bSYour Name  */
529*5113495bSYour Name QDF_STATUS mlme_vdev_ops_ext_hdl_post_create(struct vdev_mlme_obj *vdev_mlme);
530*5113495bSYour Name 
531*5113495bSYour Name /**
532*5113495bSYour Name  * mlme_vdev_ops_ext_hdl_destroy - Destroy VDEV mlme ext handle
533*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
534*5113495bSYour Name  *
535*5113495bSYour Name  * API to free vdev MLME ext handle
536*5113495bSYour Name  *
537*5113495bSYour Name  * Return: SUCCESS on successful free
538*5113495bSYour Name  *         Else FAILURE
539*5113495bSYour Name  */
540*5113495bSYour Name QDF_STATUS mlme_vdev_ops_ext_hdl_destroy(struct vdev_mlme_obj *vdev_mlme);
541*5113495bSYour Name 
542*5113495bSYour Name /**
543*5113495bSYour Name  * mlme_vdev_enqueue_exp_ser_cmd - Enqueue exception serialization cmd
544*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
545*5113495bSYour Name  * @cmd_type: Serialization command type
546*5113495bSYour Name  *
547*5113495bSYour Name  * API to enqueue the exception serialization command, used by
548*5113495bSYour Name  * mlme-serialization wrapper layer
549*5113495bSYour Name  *
550*5113495bSYour Name  * Return: SUCCESS on successful enqueuing the command
551*5113495bSYour Name  *         Else FAILURE
552*5113495bSYour Name  */
553*5113495bSYour Name QDF_STATUS mlme_vdev_enqueue_exp_ser_cmd(struct vdev_mlme_obj *vdev_mlme,
554*5113495bSYour Name 					 uint8_t cmd_type);
555*5113495bSYour Name 
556*5113495bSYour Name /**
557*5113495bSYour Name  * mlme_vdev_ops_start_fw_send - Send WMI START/RESTART command to FW
558*5113495bSYour Name  * @vdev:  VDEV object
559*5113495bSYour Name  * @restart: send start vs restart
560*5113495bSYour Name  *
561*5113495bSYour Name  * API to send WMI start/restart command to FW
562*5113495bSYour Name  *
563*5113495bSYour Name  * Return: SUCCESS on successful sending the command
564*5113495bSYour Name  *         Else FAILURE
565*5113495bSYour Name  */
566*5113495bSYour Name QDF_STATUS mlme_vdev_ops_start_fw_send(struct wlan_objmgr_vdev *vdev,
567*5113495bSYour Name 				       uint8_t restart);
568*5113495bSYour Name 
569*5113495bSYour Name /**
570*5113495bSYour Name  * mlme_vdev_ops_multivdev_restart_fw_cmd_send - Send WMI Multivdev restart
571*5113495bSYour Name  *                                              command to FW
572*5113495bSYour Name  * @pdev:  PDEV object
573*5113495bSYour Name  *
574*5113495bSYour Name  * API to send WMI multivdev restart command to FW
575*5113495bSYour Name  *
576*5113495bSYour Name  * Return: SUCCESS on successful sending the command
577*5113495bSYour Name  *         Else FAILURE
578*5113495bSYour Name  */
579*5113495bSYour Name QDF_STATUS mlme_vdev_ops_multivdev_restart_fw_cmd_send(
580*5113495bSYour Name 						struct wlan_objmgr_pdev *pdev);
581*5113495bSYour Name 
582*5113495bSYour Name /**
583*5113495bSYour Name  * mlme_vdev_ops_stop_fw_send - Send WMI STOP command to FW
584*5113495bSYour Name  * @vdev:  VDEV object
585*5113495bSYour Name  *
586*5113495bSYour Name  * API to send WMI stop command to FW
587*5113495bSYour Name  *
588*5113495bSYour Name  * Return: SUCCESS on successful sending the command
589*5113495bSYour Name  *         Else FAILURE
590*5113495bSYour Name  */
591*5113495bSYour Name QDF_STATUS mlme_vdev_ops_stop_fw_send(struct wlan_objmgr_vdev *vdev);
592*5113495bSYour Name 
593*5113495bSYour Name /**
594*5113495bSYour Name  * mlme_vdev_ops_down_fw_send - Send WMI Down command to FW
595*5113495bSYour Name  * @vdev:  VDEV object
596*5113495bSYour Name  *
597*5113495bSYour Name  * API to send WMI down command to FW
598*5113495bSYour Name  *
599*5113495bSYour Name  * Return: SUCCESS on successful sending the command
600*5113495bSYour Name  *         Else FAILURE
601*5113495bSYour Name  */
602*5113495bSYour Name QDF_STATUS mlme_vdev_ops_down_fw_send(struct wlan_objmgr_vdev *vdev);
603*5113495bSYour Name 
604*5113495bSYour Name /**
605*5113495bSYour Name  * mlme_vdev_ops_ext_hdl_multivdev_restart_resp() - Handler multivdev restart
606*5113495bSYour Name  * response event
607*5113495bSYour Name  * @psoc: PSOC object manager handle
608*5113495bSYour Name  * @resp: Restart response event
609*5113495bSYour Name  *
610*5113495bSYour Name  * Return: Success on successful handling of the response event,
611*5113495bSYour Name  *         Else failure
612*5113495bSYour Name  */
613*5113495bSYour Name QDF_STATUS mlme_vdev_ops_ext_hdl_multivdev_restart_resp(
614*5113495bSYour Name 		struct wlan_objmgr_psoc *psoc,
615*5113495bSYour Name 		struct multi_vdev_restart_resp *resp);
616*5113495bSYour Name 
617*5113495bSYour Name /*
618*5113495bSYour Name  * typedef mlme_get_global_ops_cb() - callback to get MLME ext ops
619*5113495bSYour Name  *
620*5113495bSYour Name  * NB: kernel-doc Cannot parse typedef
621*5113495bSYour Name  */
622*5113495bSYour Name typedef struct mlme_ext_ops *(*mlme_get_global_ops_cb)(void);
623*5113495bSYour Name 
624*5113495bSYour Name /**
625*5113495bSYour Name  * mlme_set_ops_register_cb - Sets ops registration callback
626*5113495bSYour Name  * @ops_cb:  Function pointer
627*5113495bSYour Name  *
628*5113495bSYour Name  * API to set ops registration call back
629*5113495bSYour Name  *
630*5113495bSYour Name  * Return: void
631*5113495bSYour Name  */
632*5113495bSYour Name void mlme_set_ops_register_cb(mlme_get_global_ops_cb ops_cb);
633*5113495bSYour Name 
634*5113495bSYour Name /**
635*5113495bSYour Name  * wlan_cmn_mlme_init - Initializes MLME component
636*5113495bSYour Name  *
637*5113495bSYour Name  * Registers callbacks with object manager for create/destroy
638*5113495bSYour Name  *
639*5113495bSYour Name  * Return: SUCCESS on successful registration
640*5113495bSYour Name  *         FAILURE, if registration fails
641*5113495bSYour Name  */
642*5113495bSYour Name QDF_STATUS wlan_cmn_mlme_init(void);
643*5113495bSYour Name 
644*5113495bSYour Name /**
645*5113495bSYour Name  * wlan_cmn_mlme_deinit - Uninitializes MLME component
646*5113495bSYour Name  *
647*5113495bSYour Name  * Unregisters callbacks with object manager for create/destroy
648*5113495bSYour Name  *
649*5113495bSYour Name  * Return: SUCCESS on successful registration
650*5113495bSYour Name  *         FAILURE, if registration fails
651*5113495bSYour Name  */
652*5113495bSYour Name QDF_STATUS wlan_cmn_mlme_deinit(void);
653*5113495bSYour Name 
654*5113495bSYour Name /**
655*5113495bSYour Name  * mlme_vdev_ops_ext_hdl_delete_rsp - Vdev Delete response ext handler
656*5113495bSYour Name  * @psoc: PSOC object
657*5113495bSYour Name  * @rsp: Vdev delete response received from the firmware
658*5113495bSYour Name  *
659*5113495bSYour Name  * API to invoke the legacy delete response handler for legacy cleanup
660*5113495bSYour Name  *
661*5113495bSYour Name  * Return: SUCCESS on successful deletion
662*5113495bSYour Name  *         FAILURE, if deletion fails
663*5113495bSYour Name  */
664*5113495bSYour Name QDF_STATUS mlme_vdev_ops_ext_hdl_delete_rsp(struct wlan_objmgr_psoc *psoc,
665*5113495bSYour Name 					    struct vdev_delete_response *rsp);
666*5113495bSYour Name 
667*5113495bSYour Name /**
668*5113495bSYour Name  * mlme_cm_ext_hdl_create() - Connection manager callback to create ext
669*5113495bSYour Name  * context
670*5113495bSYour Name  * @vdev: VDEV object
671*5113495bSYour Name  * @ext_cm_ptr: pointer to connection manager ext pointer
672*5113495bSYour Name  *
673*5113495bSYour Name  * Return: QDF_STATUS
674*5113495bSYour Name  */
675*5113495bSYour Name QDF_STATUS mlme_cm_ext_hdl_create(struct wlan_objmgr_vdev *vdev,
676*5113495bSYour Name 				  cm_ext_t **ext_cm_ptr);
677*5113495bSYour Name 
678*5113495bSYour Name /**
679*5113495bSYour Name  * mlme_cm_ext_hdl_destroy() - Connection manager callback to destroy ext
680*5113495bSYour Name  * context
681*5113495bSYour Name  * @vdev: VDEV object
682*5113495bSYour Name  * @ext_cm_ptr: connection manager ext pointer
683*5113495bSYour Name  *
684*5113495bSYour Name  * Return: QDF_STATUS
685*5113495bSYour Name  */
686*5113495bSYour Name QDF_STATUS mlme_cm_ext_hdl_destroy(struct wlan_objmgr_vdev *vdev,
687*5113495bSYour Name 				   cm_ext_t *ext_cm_ptr);
688*5113495bSYour Name 
689*5113495bSYour Name /**
690*5113495bSYour Name  * mlme_cm_connect_start_ind() - Connection manager ext Connect start indication
691*5113495bSYour Name  * @vdev: VDEV object
692*5113495bSYour Name  * @req: Connection manager connect request
693*5113495bSYour Name  *
694*5113495bSYour Name  * Return: QDF_STATUS
695*5113495bSYour Name  */
696*5113495bSYour Name QDF_STATUS mlme_cm_connect_start_ind(struct wlan_objmgr_vdev *vdev,
697*5113495bSYour Name 				     struct wlan_cm_connect_req *req);
698*5113495bSYour Name 
699*5113495bSYour Name /**
700*5113495bSYour Name  * mlme_cm_bss_select_ind() - Connection manager ext Connect candidate
701*5113495bSYour Name  * select indication, to do operations for the candidate
702*5113495bSYour Name  * @vdev: VDEV object
703*5113495bSYour Name  * @req: Vdev connect request
704*5113495bSYour Name  *
705*5113495bSYour Name  * Return: QDF_STATUS
706*5113495bSYour Name  */
707*5113495bSYour Name QDF_STATUS mlme_cm_bss_select_ind(struct wlan_objmgr_vdev *vdev,
708*5113495bSYour Name 				  struct wlan_cm_vdev_connect_req *req);
709*5113495bSYour Name 
710*5113495bSYour Name /**
711*5113495bSYour Name  * mlme_cm_bss_peer_create_req() - Connection manager ext bss peer create
712*5113495bSYour Name  * request
713*5113495bSYour Name  * @vdev: VDEV object
714*5113495bSYour Name  * @peer_mac: Peer mac address
715*5113495bSYour Name  * @mld_mac: mld mac address
716*5113495bSYour Name  * @is_assoc_link: assoc happens on this link or not
717*5113495bSYour Name  *
718*5113495bSYour Name  * Return: QDF_STATUS
719*5113495bSYour Name  */
720*5113495bSYour Name QDF_STATUS mlme_cm_bss_peer_create_req(struct wlan_objmgr_vdev *vdev,
721*5113495bSYour Name 				       struct qdf_mac_addr *peer_mac,
722*5113495bSYour Name 				       struct qdf_mac_addr *mld_mac,
723*5113495bSYour Name 				       bool is_assoc_link);
724*5113495bSYour Name 
725*5113495bSYour Name /**
726*5113495bSYour Name  * mlme_cm_connect_req() - Connection manager ext connect request to start vdev
727*5113495bSYour Name  * and peer assoc state machine
728*5113495bSYour Name  * @vdev: VDEV object
729*5113495bSYour Name  * @req: Vdev connect request
730*5113495bSYour Name  *
731*5113495bSYour Name  * Context: The req is on stack, so the API need to make a copy, if it want to
732*5113495bSYour Name  * use the req after return.
733*5113495bSYour Name  *
734*5113495bSYour Name  * Return: QDF_STATUS
735*5113495bSYour Name  */
736*5113495bSYour Name QDF_STATUS mlme_cm_connect_req(struct wlan_objmgr_vdev *vdev,
737*5113495bSYour Name 			       struct wlan_cm_vdev_connect_req *req);
738*5113495bSYour Name 
739*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
740*5113495bSYour Name /**
741*5113495bSYour Name  * mlme_cm_osif_connect_active_notify() - CNX manager ext connect active
742*5113495bSYour Name  * notification.
743*5113495bSYour Name  * @vdev_id: VDEV ID
744*5113495bSYour Name  *
745*5113495bSYour Name  * Return: void
746*5113495bSYour Name  */
747*5113495bSYour Name void mlme_cm_osif_connect_active_notify(uint8_t vdev_id);
748*5113495bSYour Name #else
mlme_cm_osif_connect_active_notify(uint8_t vdev_id)749*5113495bSYour Name static inline void mlme_cm_osif_connect_active_notify(uint8_t vdev_id)
750*5113495bSYour Name {
751*5113495bSYour Name }
752*5113495bSYour Name #endif
753*5113495bSYour Name 
754*5113495bSYour Name /**
755*5113495bSYour Name  * mlme_cm_connect_complete_ind() - Connection manager ext connect complete
756*5113495bSYour Name  * indication
757*5113495bSYour Name  * @vdev: VDEV object
758*5113495bSYour Name  * @rsp: Connection manager connect response
759*5113495bSYour Name  *
760*5113495bSYour Name  * Return: QDF_STATUS
761*5113495bSYour Name  */
762*5113495bSYour Name QDF_STATUS mlme_cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
763*5113495bSYour Name 					struct wlan_cm_connect_resp *rsp);
764*5113495bSYour Name 
765*5113495bSYour Name /**
766*5113495bSYour Name  * mlme_cm_roam_start_ind() - Connection manager ext Connect start indication
767*5113495bSYour Name  * @vdev: VDEV object
768*5113495bSYour Name  * @req: Connection manager roam request
769*5113495bSYour Name  *
770*5113495bSYour Name  * Return: QDF_STATUS
771*5113495bSYour Name  */
772*5113495bSYour Name QDF_STATUS mlme_cm_roam_start_ind(struct wlan_objmgr_vdev *vdev,
773*5113495bSYour Name 				  struct wlan_cm_roam_req *req);
774*5113495bSYour Name 
775*5113495bSYour Name /**
776*5113495bSYour Name  * mlme_cm_rso_stop_req() - Connection manager ext RSO stop request
777*5113495bSYour Name  * @vdev: VDEV object
778*5113495bSYour Name  *
779*5113495bSYour Name  * Return: QDF_STATUS
780*5113495bSYour Name  */
781*5113495bSYour Name QDF_STATUS mlme_cm_rso_stop_req(struct wlan_objmgr_vdev *vdev);
782*5113495bSYour Name 
783*5113495bSYour Name /**
784*5113495bSYour Name  * mlme_cm_reassoc_req() - Connection manager ext reassoc request
785*5113495bSYour Name  * @vdev: VDEV object
786*5113495bSYour Name  * @req: Vdev reassoc request
787*5113495bSYour Name  *
788*5113495bSYour Name  * Context: The req is on stack, so the API need to make a copy, if it want to
789*5113495bSYour Name  * use the req after return.
790*5113495bSYour Name  *
791*5113495bSYour Name  * Return: QDF_STATUS
792*5113495bSYour Name  */
793*5113495bSYour Name QDF_STATUS mlme_cm_reassoc_req(struct wlan_objmgr_vdev *vdev,
794*5113495bSYour Name 			       struct wlan_cm_vdev_reassoc_req *req);
795*5113495bSYour Name 
796*5113495bSYour Name /**
797*5113495bSYour Name  * mlme_cm_disconnect_start_ind() - Connection manager ext disconnect start
798*5113495bSYour Name  * indication
799*5113495bSYour Name  * @vdev: VDEV object
800*5113495bSYour Name  * @req: Connection manager disconnect request
801*5113495bSYour Name  *
802*5113495bSYour Name  * Return: QDF_STATUS
803*5113495bSYour Name  */
804*5113495bSYour Name QDF_STATUS mlme_cm_disconnect_start_ind(struct wlan_objmgr_vdev *vdev,
805*5113495bSYour Name 					struct wlan_cm_disconnect_req *req);
806*5113495bSYour Name 
807*5113495bSYour Name /**
808*5113495bSYour Name  * mlme_cm_disconnect_req() - Connection manager ext disconnect
809*5113495bSYour Name  * req to vdev and peer sm
810*5113495bSYour Name  * @vdev: VDEV object
811*5113495bSYour Name  * @req: vdev disconnect request
812*5113495bSYour Name  *
813*5113495bSYour Name  * Return: QDF_STATUS
814*5113495bSYour Name  */
815*5113495bSYour Name QDF_STATUS mlme_cm_disconnect_req(struct wlan_objmgr_vdev *vdev,
816*5113495bSYour Name 				  struct wlan_cm_vdev_discon_req *req);
817*5113495bSYour Name 
818*5113495bSYour Name /**
819*5113495bSYour Name  * mlme_cm_bss_peer_delete_req() - Connection manager ext bss peer delete
820*5113495bSYour Name  * request
821*5113495bSYour Name  * @vdev: VDEV object
822*5113495bSYour Name  *
823*5113495bSYour Name  * Return: QDF_STATUS
824*5113495bSYour Name  */
825*5113495bSYour Name QDF_STATUS
826*5113495bSYour Name mlme_cm_bss_peer_delete_req(struct wlan_objmgr_vdev *vdev);
827*5113495bSYour Name 
828*5113495bSYour Name /**
829*5113495bSYour Name  * mlme_cm_disconnect_complete_ind() - Connection manager ext disconnect
830*5113495bSYour Name  * complete indication
831*5113495bSYour Name  * @vdev: VDEV object
832*5113495bSYour Name  * @rsp: Connection manager disconnect response
833*5113495bSYour Name  *
834*5113495bSYour Name  * Return: QDF_STATUS
835*5113495bSYour Name  */
836*5113495bSYour Name QDF_STATUS mlme_cm_disconnect_complete_ind(struct wlan_objmgr_vdev *vdev,
837*5113495bSYour Name 					   struct wlan_cm_discon_rsp *rsp);
838*5113495bSYour Name 
839*5113495bSYour Name /**
840*5113495bSYour Name  * mlme_cm_vdev_down_req() - Connection manager ext req to send vdev down to FW
841*5113495bSYour Name  * @vdev: VDEV object
842*5113495bSYour Name  *
843*5113495bSYour Name  * Return: QDF_STATUS
844*5113495bSYour Name  */
845*5113495bSYour Name QDF_STATUS mlme_cm_vdev_down_req(struct wlan_objmgr_vdev *vdev);
846*5113495bSYour Name 
847*5113495bSYour Name /**
848*5113495bSYour Name  * mlme_ext_hdl_get_acs_in_progress() - Check if ACS is in progress
849*5113495bSYour Name  * @vdev: VDEV object
850*5113495bSYour Name  * @acs_in_progress: ACS in progress flag
851*5113495bSYour Name  *
852*5113495bSYour Name  * Return: QDF_STATUS
853*5113495bSYour Name  */
854*5113495bSYour Name QDF_STATUS mlme_ext_hdl_get_acs_in_progress(struct wlan_objmgr_vdev *vdev,
855*5113495bSYour Name 					    bool *acs_in_progress);
856*5113495bSYour Name /**
857*5113495bSYour Name  * mlme_cm_osif_connect_complete() - Connect complete resp to osif
858*5113495bSYour Name  * @vdev: vdev pointer
859*5113495bSYour Name  * @rsp: Connect response
860*5113495bSYour Name  *
861*5113495bSYour Name  * Return: QDF_STATUS
862*5113495bSYour Name  */
863*5113495bSYour Name QDF_STATUS mlme_cm_osif_connect_complete(struct wlan_objmgr_vdev *vdev,
864*5113495bSYour Name 					 struct wlan_cm_connect_resp *rsp);
865*5113495bSYour Name 
866*5113495bSYour Name /**
867*5113495bSYour Name  * mlme_cm_osif_failed_candidate_ind() - Failed Candidate indication to osif
868*5113495bSYour Name  * @vdev: vdev pointer
869*5113495bSYour Name  * @rsp: Connect response
870*5113495bSYour Name  *
871*5113495bSYour Name  * Return: QDF_STATUS
872*5113495bSYour Name  */
873*5113495bSYour Name QDF_STATUS
874*5113495bSYour Name mlme_cm_osif_failed_candidate_ind(struct wlan_objmgr_vdev *vdev,
875*5113495bSYour Name 				  struct wlan_cm_connect_resp *rsp);
876*5113495bSYour Name 
877*5113495bSYour Name /**
878*5113495bSYour Name  * mlme_cm_osif_update_id_and_src() - Update connection id and source to osif
879*5113495bSYour Name  * @vdev: vdev pointer
880*5113495bSYour Name  * @source: source of request
881*5113495bSYour Name  * @cm_id: connection manager id
882*5113495bSYour Name  *
883*5113495bSYour Name  * Return: QDF_STATUS
884*5113495bSYour Name  */
885*5113495bSYour Name QDF_STATUS mlme_cm_osif_update_id_and_src(struct wlan_objmgr_vdev *vdev,
886*5113495bSYour Name 					  enum wlan_cm_source source,
887*5113495bSYour Name 					  wlan_cm_id cm_id);
888*5113495bSYour Name 
889*5113495bSYour Name /**
890*5113495bSYour Name  * mlme_cm_osif_disconnect_complete() - Disconnect complete osif response
891*5113495bSYour Name  * @vdev: vdev pointer
892*5113495bSYour Name  * @rsp: Disconnect response
893*5113495bSYour Name  *
894*5113495bSYour Name  * Return: QDF_STATUS
895*5113495bSYour Name  */
896*5113495bSYour Name QDF_STATUS
897*5113495bSYour Name mlme_cm_osif_disconnect_complete(struct wlan_objmgr_vdev *vdev,
898*5113495bSYour Name 				 struct wlan_cm_discon_rsp *rsp);
899*5113495bSYour Name 
900*5113495bSYour Name /**
901*5113495bSYour Name  * mlme_cm_osif_disconnect_start_ind() - osif Disconnect start indication
902*5113495bSYour Name  * @vdev: vdev pointer
903*5113495bSYour Name  * @source: Source of disconnect
904*5113495bSYour Name  *
905*5113495bSYour Name  * Return: QDF_STATUS
906*5113495bSYour Name  */
907*5113495bSYour Name QDF_STATUS mlme_cm_osif_disconnect_start_ind(struct wlan_objmgr_vdev *vdev,
908*5113495bSYour Name 					     enum wlan_cm_source source);
909*5113495bSYour Name 
910*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL
911*5113495bSYour Name /**
912*5113495bSYour Name  * mlme_cm_osif_get_vendor_handoff_params() - osif get vendor handoff params
913*5113495bSYour Name  * indication
914*5113495bSYour Name  * @psoc: psoc pointer
915*5113495bSYour Name  * @vendor_handoff_context: vendor handoff context
916*5113495bSYour Name  *
917*5113495bSYour Name  * Return: QDF_STATUS
918*5113495bSYour Name  */
919*5113495bSYour Name QDF_STATUS mlme_cm_osif_get_vendor_handoff_params(struct wlan_objmgr_psoc *psoc,
920*5113495bSYour Name 						  void *vendor_handoff_context);
921*5113495bSYour Name #endif
922*5113495bSYour Name 
923*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
924*5113495bSYour Name /**
925*5113495bSYour Name  * mlme_cm_osif_roam_sync_ind() - osif Roam sync indication
926*5113495bSYour Name  * @vdev: vdev pointer
927*5113495bSYour Name  *
928*5113495bSYour Name  * Return: QDF_STATUS
929*5113495bSYour Name  */
930*5113495bSYour Name QDF_STATUS mlme_cm_osif_roam_sync_ind(struct wlan_objmgr_vdev *vdev);
931*5113495bSYour Name 
932*5113495bSYour Name /**
933*5113495bSYour Name  * mlme_cm_osif_pmksa_candidate_notify() - osif roam pmksa candidate notify
934*5113495bSYour Name  * @vdev: vdev pointer
935*5113495bSYour Name  * @bssid: bssid
936*5113495bSYour Name  * @index: index
937*5113495bSYour Name  * @preauth: preauth flag
938*5113495bSYour Name  *
939*5113495bSYour Name  * Return: QDF_STATUS
940*5113495bSYour Name  */
941*5113495bSYour Name QDF_STATUS mlme_cm_osif_pmksa_candidate_notify(struct wlan_objmgr_vdev *vdev,
942*5113495bSYour Name 					       struct qdf_mac_addr *bssid,
943*5113495bSYour Name 					       int index, bool preauth);
944*5113495bSYour Name /**
945*5113495bSYour Name  * mlme_cm_osif_send_keys() - send vdev keys
946*5113495bSYour Name  * @vdev: vdev pointer
947*5113495bSYour Name  * @key_index: key index value
948*5113495bSYour Name  * @pairwise: pairwise bool value
949*5113495bSYour Name  * @cipher_type: cipher enum value
950*5113495bSYour Name  *
951*5113495bSYour Name  * Return: QDF_STATUS
952*5113495bSYour Name  */
953*5113495bSYour Name QDF_STATUS mlme_cm_osif_send_keys(struct wlan_objmgr_vdev *vdev,
954*5113495bSYour Name 				  uint8_t key_index, bool pairwise,
955*5113495bSYour Name 				  enum wlan_crypto_cipher_type cipher_type);
956*5113495bSYour Name 
957*5113495bSYour Name /**
958*5113495bSYour Name  * mlme_cm_osif_link_reconfig_notify() - notify link reconfig event
959*5113495bSYour Name  * @vdev: vdev pointer
960*5113495bSYour Name  *
961*5113495bSYour Name  * Return: QDF_STATUS
962*5113495bSYour Name  */
963*5113495bSYour Name QDF_STATUS mlme_cm_osif_link_reconfig_notify(struct wlan_objmgr_vdev *vdev);
964*5113495bSYour Name #else
965*5113495bSYour Name static inline
mlme_cm_osif_roam_sync_ind(struct wlan_objmgr_vdev * vdev)966*5113495bSYour Name QDF_STATUS mlme_cm_osif_roam_sync_ind(struct wlan_objmgr_vdev *vdev)
967*5113495bSYour Name {
968*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
969*5113495bSYour Name }
970*5113495bSYour Name 
971*5113495bSYour Name static inline
mlme_cm_osif_send_keys(struct wlan_objmgr_vdev * vdev,uint8_t key_index,bool pairwise,enum wlan_crypto_cipher_type cipher_type)972*5113495bSYour Name QDF_STATUS mlme_cm_osif_send_keys(struct wlan_objmgr_vdev *vdev,
973*5113495bSYour Name 				  uint8_t key_index, bool pairwise,
974*5113495bSYour Name 				  enum wlan_crypto_cipher_type cipher_type)
975*5113495bSYour Name {
976*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
977*5113495bSYour Name }
978*5113495bSYour Name 
979*5113495bSYour Name static inline
mlme_cm_osif_link_reconfig_notify(struct wlan_objmgr_vdev * vdev)980*5113495bSYour Name QDF_STATUS mlme_cm_osif_link_reconfig_notify(struct wlan_objmgr_vdev *vdev)
981*5113495bSYour Name {
982*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
983*5113495bSYour Name }
984*5113495bSYour Name #endif
985*5113495bSYour Name 
986*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
987*5113495bSYour Name /**
988*5113495bSYour Name  * mlme_cm_osif_roam_start_ind() - osif Roam start indication
989*5113495bSYour Name  * @vdev: vdev pointer
990*5113495bSYour Name  *
991*5113495bSYour Name  * Return: QDF_STATUS
992*5113495bSYour Name  */
993*5113495bSYour Name QDF_STATUS mlme_cm_osif_roam_start_ind(struct wlan_objmgr_vdev *vdev);
994*5113495bSYour Name 
995*5113495bSYour Name /**
996*5113495bSYour Name  * mlme_cm_osif_roam_abort_ind() - osif Roam abort indication
997*5113495bSYour Name  * @vdev: vdev pointer
998*5113495bSYour Name  *
999*5113495bSYour Name  * Return: QDF_STATUS
1000*5113495bSYour Name  */
1001*5113495bSYour Name QDF_STATUS mlme_cm_osif_roam_abort_ind(struct wlan_objmgr_vdev *vdev);
1002*5113495bSYour Name 
1003*5113495bSYour Name /**
1004*5113495bSYour Name  * mlme_cm_osif_roam_complete() - osif Roam sync complete callback
1005*5113495bSYour Name  * @vdev: vdev pointer
1006*5113495bSYour Name  *
1007*5113495bSYour Name  * Return: QDF_STATUS
1008*5113495bSYour Name  */
1009*5113495bSYour Name QDF_STATUS mlme_cm_osif_roam_complete(struct wlan_objmgr_vdev *vdev);
1010*5113495bSYour Name 
1011*5113495bSYour Name /**
1012*5113495bSYour Name  * mlme_cm_osif_roam_rt_stats() - osif Roam stats callback
1013*5113495bSYour Name  * @roam_stats: roam_stats_event pointer
1014*5113495bSYour Name  * @idx: TLV idx for roam_stats_event
1015*5113495bSYour Name  *
1016*5113495bSYour Name  * Return: void
1017*5113495bSYour Name  */
1018*5113495bSYour Name void mlme_cm_osif_roam_rt_stats(struct roam_stats_event *roam_stats, uint8_t idx);
1019*5113495bSYour Name /**
1020*5113495bSYour Name  * mlme_cm_osif_roam_get_scan_params() - osif Roam get scan params callback
1021*5113495bSYour Name  * @vdev: vdev pointer
1022*5113495bSYour Name  * @scan_ie: Pointer to scan_ie
1023*5113495bSYour Name  * @dot11mode_filter: Pointer to dot11mode_filter
1024*5113495bSYour Name  *
1025*5113495bSYour Name  * Get scan IE params from adapter corresponds to given vdev
1026*5113495bSYour Name  *
1027*5113495bSYour Name  * Return: QDF_STATUS
1028*5113495bSYour Name  */
1029*5113495bSYour Name QDF_STATUS
1030*5113495bSYour Name mlme_cm_osif_roam_get_scan_params(struct wlan_objmgr_vdev *vdev,
1031*5113495bSYour Name 				  struct element_info *scan_ie,
1032*5113495bSYour Name 				  enum dot11_mode_filter *dot11mode_filter);
1033*5113495bSYour Name #endif
1034*5113495bSYour Name 
1035*5113495bSYour Name #ifdef WLAN_FEATURE_PREAUTH_ENABLE
1036*5113495bSYour Name /**
1037*5113495bSYour Name  * mlme_cm_osif_ft_preauth_complete() - osif roam ft preauth complete callback
1038*5113495bSYour Name  * @vdev: vdev pointer
1039*5113495bSYour Name  * @rsp: preauth response pointer
1040*5113495bSYour Name  *
1041*5113495bSYour Name  * Return: QDF_STATUS
1042*5113495bSYour Name  */
1043*5113495bSYour Name QDF_STATUS
1044*5113495bSYour Name mlme_cm_osif_ft_preauth_complete(struct wlan_objmgr_vdev *vdev,
1045*5113495bSYour Name 				 struct wlan_preauth_rsp *rsp);
1046*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
1047*5113495bSYour Name /**
1048*5113495bSYour Name  * mlme_cm_osif_cckm_preauth_complete() - osif cckm preauth complete callback
1049*5113495bSYour Name  * @vdev: vdev pointer
1050*5113495bSYour Name  * @rsp: preauth response pointer
1051*5113495bSYour Name  *
1052*5113495bSYour Name  * Return: QDF_STATUS
1053*5113495bSYour Name  */
1054*5113495bSYour Name QDF_STATUS
1055*5113495bSYour Name mlme_cm_osif_cckm_preauth_complete(struct wlan_objmgr_vdev *vdev,
1056*5113495bSYour Name 				   struct wlan_preauth_rsp *rsp);
1057*5113495bSYour Name #else
1058*5113495bSYour Name static inline QDF_STATUS
mlme_cm_osif_cckm_preauth_complete(struct wlan_objmgr_vdev * vdev,struct wlan_preauth_rsp * rsp)1059*5113495bSYour Name mlme_cm_osif_cckm_preauth_complete(struct wlan_objmgr_vdev *vdev,
1060*5113495bSYour Name 				   struct wlan_preauth_rsp *rsp)
1061*5113495bSYour Name {
1062*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1063*5113495bSYour Name }
1064*5113495bSYour Name #endif /* FEATURE_WLAN_ESE */
1065*5113495bSYour Name #endif /* WLAN_FEATURE_PREAUTH_ENABLE */
1066*5113495bSYour Name 
1067*5113495bSYour Name /*
1068*5113495bSYour Name  * typedef osif_cm_get_global_ops_cb() - Callback to get connection manager
1069*5113495bSYour Name  * global ops
1070*5113495bSYour Name  *
1071*5113495bSYour Name  * NB: kernel-doc Cannot parse typedef
1072*5113495bSYour Name  */
1073*5113495bSYour Name typedef struct mlme_cm_ops *(*osif_cm_get_global_ops_cb)(void);
1074*5113495bSYour Name 
1075*5113495bSYour Name /*
1076*5113495bSYour Name  * typedef osif_twt_get_global_ops_cb() - Callback to get twt global ops
1077*5113495bSYour Name  *
1078*5113495bSYour Name  * NB: kernel-doc Cannot parse typedef
1079*5113495bSYour Name  */
1080*5113495bSYour Name typedef struct mlme_twt_ops *(*osif_twt_get_global_ops_cb)(void);
1081*5113495bSYour Name 
1082*5113495bSYour Name /**
1083*5113495bSYour Name  * mlme_set_osif_cm_cb() - Sets ops registration callback
1084*5113495bSYour Name  * @cm_osif_ops:  Function pointer
1085*5113495bSYour Name  *
1086*5113495bSYour Name  * API to set ops registration call back
1087*5113495bSYour Name  *
1088*5113495bSYour Name  * Return: void
1089*5113495bSYour Name  */
1090*5113495bSYour Name void mlme_set_osif_cm_cb(osif_cm_get_global_ops_cb cm_osif_ops);
1091*5113495bSYour Name 
1092*5113495bSYour Name /*
1093*5113495bSYour Name  * typedef osif_vdev_mgr_get_global_ops_cb() - Callback to get vdev manager
1094*5113495bSYour Name  * global ops
1095*5113495bSYour Name  *
1096*5113495bSYour Name  * NB: kernel-doc Cannot parse typedef
1097*5113495bSYour Name  */
1098*5113495bSYour Name typedef struct mlme_vdev_mgr_ops *(*osif_vdev_mgr_get_global_ops_cb)(void);
1099*5113495bSYour Name 
1100*5113495bSYour Name /**
1101*5113495bSYour Name  * mlme_set_osif_vdev_mgr_cb() - Sets ops registration callback
1102*5113495bSYour Name  * @mlme_vdev_mgr_osif_ops:  Function pointer
1103*5113495bSYour Name  *
1104*5113495bSYour Name  * API to set ops registration call back
1105*5113495bSYour Name  *
1106*5113495bSYour Name  * Return: void
1107*5113495bSYour Name  */
1108*5113495bSYour Name void mlme_set_osif_vdev_mgr_cb(
1109*5113495bSYour Name 		osif_vdev_mgr_get_global_ops_cb mlme_vdev_mgr_osif_ops);
1110*5113495bSYour Name 
1111*5113495bSYour Name /**
1112*5113495bSYour Name  * mlme_set_osif_twt_cb() - Sets twt ops registration callback
1113*5113495bSYour Name  * @twt_osif_ops:  Function pointer
1114*5113495bSYour Name  *
1115*5113495bSYour Name  * API to set twt ops registration call back
1116*5113495bSYour Name  *
1117*5113495bSYour Name  * Return: void
1118*5113495bSYour Name  */
1119*5113495bSYour Name void mlme_set_osif_twt_cb(osif_twt_get_global_ops_cb twt_osif_ops);
1120*5113495bSYour Name 
1121*5113495bSYour Name /**
1122*5113495bSYour Name  * mlme_max_chan_switch_is_set() - Get if max chan switch IE is enabled
1123*5113495bSYour Name  * @psoc: Object manager psoc pointer
1124*5113495bSYour Name  *
1125*5113495bSYour Name  * Return: True if max chan switch is enabled else false
1126*5113495bSYour Name  */
1127*5113495bSYour Name bool mlme_max_chan_switch_is_set(struct wlan_objmgr_psoc *psoc);
1128*5113495bSYour Name 
1129*5113495bSYour Name /**
1130*5113495bSYour Name  * mlme_send_scan_done_complete_cb() - send scan done indication to upper layer
1131*5113495bSYour Name  * @vdev_id: vdev id
1132*5113495bSYour Name  *
1133*5113495bSYour Name  * Return: none
1134*5113495bSYour Name  */
1135*5113495bSYour Name void mlme_send_scan_done_complete_cb(uint8_t vdev_id);
1136*5113495bSYour Name 
1137*5113495bSYour Name #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
1138*5113495bSYour Name /**
1139*5113495bSYour Name  * mlme_vdev_ops_send_set_mac_address() - Send set MAC address request to FW
1140*5113495bSYour Name  * @mac_addr: VDEV MAC address
1141*5113495bSYour Name  * @mld_addr: VDEV MLD address
1142*5113495bSYour Name  * @vdev: vdev pointer
1143*5113495bSYour Name  *
1144*5113495bSYour Name  * API to send set MAC address request command to FW
1145*5113495bSYour Name  *
1146*5113495bSYour Name  * Return: QDF_STATUS
1147*5113495bSYour Name  */
1148*5113495bSYour Name QDF_STATUS mlme_vdev_ops_send_set_mac_address(struct qdf_mac_addr mac_addr,
1149*5113495bSYour Name 					      struct qdf_mac_addr mld_addr,
1150*5113495bSYour Name 					      struct wlan_objmgr_vdev *vdev);
1151*5113495bSYour Name 
1152*5113495bSYour Name /**
1153*5113495bSYour Name  * mlme_vdev_mgr_notify_set_mac_addr_response() - Notify set MAC address
1154*5113495bSYour Name  *                                                response
1155*5113495bSYour Name  * @vdev_id: VDEV ID
1156*5113495bSYour Name  * @resp_status: FW response for the set MAC address operation
1157*5113495bSYour Name  *
1158*5113495bSYour Name  * API to notify set MAC address to osif
1159*5113495bSYour Name  *
1160*5113495bSYour Name  * Return: None
1161*5113495bSYour Name  */
1162*5113495bSYour Name void mlme_vdev_mgr_notify_set_mac_addr_response(uint8_t vdev_id,
1163*5113495bSYour Name 						uint8_t resp_status);
1164*5113495bSYour Name #endif
1165*5113495bSYour Name 
1166*5113495bSYour Name #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
1167*5113495bSYour Name /**
1168*5113495bSYour Name  * mlme_twt_osif_enable_complete_ind() - enable complete resp to osif
1169*5113495bSYour Name  * @psoc: psoc pointer
1170*5113495bSYour Name  * @event: enable complete response
1171*5113495bSYour Name  * @context: context registered by OSIF
1172*5113495bSYour Name  *
1173*5113495bSYour Name  * Return: QDF_STATUS
1174*5113495bSYour Name  */
1175*5113495bSYour Name QDF_STATUS
1176*5113495bSYour Name mlme_twt_osif_enable_complete_ind(struct wlan_objmgr_psoc *psoc,
1177*5113495bSYour Name 				  struct twt_enable_complete_event_param *event,
1178*5113495bSYour Name 				  void *context);
1179*5113495bSYour Name 
1180*5113495bSYour Name /**
1181*5113495bSYour Name  * mlme_twt_osif_disable_complete_ind() - disable complete resp to osif
1182*5113495bSYour Name  * @psoc: psoc pointer
1183*5113495bSYour Name  * @event: disable complete response
1184*5113495bSYour Name  * @context: context registered by OSIF
1185*5113495bSYour Name  *
1186*5113495bSYour Name  * Return: QDF_STATUS
1187*5113495bSYour Name  */
1188*5113495bSYour Name QDF_STATUS
1189*5113495bSYour Name mlme_twt_osif_disable_complete_ind(struct wlan_objmgr_psoc *psoc,
1190*5113495bSYour Name 				 struct twt_disable_complete_event_param *event,
1191*5113495bSYour Name 				 void *context);
1192*5113495bSYour Name 
1193*5113495bSYour Name /**
1194*5113495bSYour Name  * mlme_twt_osif_ack_complete_ind() - ack complete resp to osif
1195*5113495bSYour Name  * @psoc: psoc pointer
1196*5113495bSYour Name  * @event: ack complete response
1197*5113495bSYour Name  * @context: context registered by OSIF
1198*5113495bSYour Name  *
1199*5113495bSYour Name  * Return: QDF_STATUS
1200*5113495bSYour Name  */
1201*5113495bSYour Name QDF_STATUS
1202*5113495bSYour Name mlme_twt_osif_ack_complete_ind(struct wlan_objmgr_psoc *psoc,
1203*5113495bSYour Name 			       struct twt_ack_complete_event_param *event,
1204*5113495bSYour Name 			       void *context);
1205*5113495bSYour Name 
1206*5113495bSYour Name /**
1207*5113495bSYour Name  * mlme_twt_osif_setup_complete_ind() - setup complete resp to osif
1208*5113495bSYour Name  * @psoc: psoc pointer
1209*5113495bSYour Name  * @event: setup complete response
1210*5113495bSYour Name  * @renego_fail: flag to indicate if renegotiation failure case
1211*5113495bSYour Name  *
1212*5113495bSYour Name  * Return: QDF_STATUS
1213*5113495bSYour Name  */
1214*5113495bSYour Name QDF_STATUS
1215*5113495bSYour Name mlme_twt_osif_setup_complete_ind(struct wlan_objmgr_psoc *psoc,
1216*5113495bSYour Name 				 struct twt_add_dialog_complete_event *event,
1217*5113495bSYour Name 				 bool renego_fail);
1218*5113495bSYour Name 
1219*5113495bSYour Name /**
1220*5113495bSYour Name  * mlme_twt_osif_teardown_complete_ind() - teardown complete resp to osif
1221*5113495bSYour Name  * @psoc: psoc pointer
1222*5113495bSYour Name  * @event: teardown complete response
1223*5113495bSYour Name  *
1224*5113495bSYour Name  * Return: QDF_STATUS
1225*5113495bSYour Name  */
1226*5113495bSYour Name QDF_STATUS
1227*5113495bSYour Name mlme_twt_osif_teardown_complete_ind(struct wlan_objmgr_psoc *psoc,
1228*5113495bSYour Name 			     struct twt_del_dialog_complete_event_param *event);
1229*5113495bSYour Name 
1230*5113495bSYour Name /**
1231*5113495bSYour Name  * mlme_twt_osif_pause_complete_ind() - pause complete resp to osif
1232*5113495bSYour Name  * @psoc: psoc pointer
1233*5113495bSYour Name  * @event: pause complete response
1234*5113495bSYour Name  *
1235*5113495bSYour Name  * Return: QDF_STATUS
1236*5113495bSYour Name  */
1237*5113495bSYour Name QDF_STATUS
1238*5113495bSYour Name mlme_twt_osif_pause_complete_ind(struct wlan_objmgr_psoc *psoc,
1239*5113495bSYour Name 			   struct twt_pause_dialog_complete_event_param *event);
1240*5113495bSYour Name 
1241*5113495bSYour Name /**
1242*5113495bSYour Name  * mlme_twt_osif_resume_complete_ind() - resume complete resp to osif
1243*5113495bSYour Name  * @psoc: psoc pointer
1244*5113495bSYour Name  * @event: resume complete response
1245*5113495bSYour Name  *
1246*5113495bSYour Name  * Return: QDF_STATUS
1247*5113495bSYour Name  */
1248*5113495bSYour Name QDF_STATUS
1249*5113495bSYour Name mlme_twt_osif_resume_complete_ind(struct wlan_objmgr_psoc *psoc,
1250*5113495bSYour Name 			  struct twt_resume_dialog_complete_event_param *event);
1251*5113495bSYour Name 
1252*5113495bSYour Name /**
1253*5113495bSYour Name  * mlme_twt_osif_nudge_complete_ind() - nudge complete resp to osif
1254*5113495bSYour Name  * @psoc: psoc pointer
1255*5113495bSYour Name  * @event: nudge complete response
1256*5113495bSYour Name  *
1257*5113495bSYour Name  * Return: QDF_STATUS
1258*5113495bSYour Name  */
1259*5113495bSYour Name QDF_STATUS
1260*5113495bSYour Name mlme_twt_osif_nudge_complete_ind(struct wlan_objmgr_psoc *psoc,
1261*5113495bSYour Name 			   struct twt_nudge_dialog_complete_event_param *event);
1262*5113495bSYour Name 
1263*5113495bSYour Name /**
1264*5113495bSYour Name  * mlme_twt_osif_notify_complete_ind() - notify complete resp to osif
1265*5113495bSYour Name  * @psoc: psoc pointer
1266*5113495bSYour Name  * @event: notify complete response
1267*5113495bSYour Name  *
1268*5113495bSYour Name  * Return: QDF_STATUS
1269*5113495bSYour Name  */
1270*5113495bSYour Name QDF_STATUS
1271*5113495bSYour Name mlme_twt_osif_notify_complete_ind(struct wlan_objmgr_psoc *psoc,
1272*5113495bSYour Name 				  struct twt_notify_event_param *event);
1273*5113495bSYour Name 
1274*5113495bSYour Name /**
1275*5113495bSYour Name  * mlme_twt_vdev_create_notification() - vdev create notification to osif
1276*5113495bSYour Name  * @vdev: vdev pointer
1277*5113495bSYour Name  *
1278*5113495bSYour Name  * Return: QDF_STATUS
1279*5113495bSYour Name  */
1280*5113495bSYour Name QDF_STATUS
1281*5113495bSYour Name mlme_twt_vdev_create_notification(struct wlan_objmgr_vdev *vdev);
1282*5113495bSYour Name 
1283*5113495bSYour Name /**
1284*5113495bSYour Name  * mlme_twt_vdev_destroy_notification() - vdev destroy notification to osif
1285*5113495bSYour Name  * @vdev: vdev pointer
1286*5113495bSYour Name  *
1287*5113495bSYour Name  * Return: QDF_STATUS
1288*5113495bSYour Name  */
1289*5113495bSYour Name QDF_STATUS
1290*5113495bSYour Name mlme_twt_vdev_destroy_notification(struct wlan_objmgr_vdev *vdev);
1291*5113495bSYour Name #else
1292*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_enable_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_enable_complete_event_param * event,void * context)1293*5113495bSYour Name mlme_twt_osif_enable_complete_ind(struct wlan_objmgr_psoc *psoc,
1294*5113495bSYour Name 				  struct twt_enable_complete_event_param *event,
1295*5113495bSYour Name 				  void *context)
1296*5113495bSYour Name {
1297*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1298*5113495bSYour Name }
1299*5113495bSYour Name 
1300*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_disable_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_disable_complete_event_param * event,void * context)1301*5113495bSYour Name mlme_twt_osif_disable_complete_ind(struct wlan_objmgr_psoc *psoc,
1302*5113495bSYour Name 				 struct twt_disable_complete_event_param *event,
1303*5113495bSYour Name 				 void *context)
1304*5113495bSYour Name {
1305*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1306*5113495bSYour Name }
1307*5113495bSYour Name 
1308*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_ack_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_ack_complete_event_param * event,void * context)1309*5113495bSYour Name mlme_twt_osif_ack_complete_ind(struct wlan_objmgr_psoc *psoc,
1310*5113495bSYour Name 			       struct twt_ack_complete_event_param *event,
1311*5113495bSYour Name 			       void *context)
1312*5113495bSYour Name {
1313*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1314*5113495bSYour Name }
1315*5113495bSYour Name 
1316*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_setup_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_add_dialog_complete_event * event,bool renego_fail)1317*5113495bSYour Name mlme_twt_osif_setup_complete_ind(struct wlan_objmgr_psoc *psoc,
1318*5113495bSYour Name 				 struct twt_add_dialog_complete_event *event,
1319*5113495bSYour Name 				 bool renego_fail)
1320*5113495bSYour Name {
1321*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1322*5113495bSYour Name }
1323*5113495bSYour Name 
1324*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_teardown_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_del_dialog_complete_event_param * event)1325*5113495bSYour Name mlme_twt_osif_teardown_complete_ind(struct wlan_objmgr_psoc *psoc,
1326*5113495bSYour Name 			      struct twt_del_dialog_complete_event_param *event)
1327*5113495bSYour Name {
1328*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1329*5113495bSYour Name }
1330*5113495bSYour Name 
1331*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_pause_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_pause_dialog_complete_event_param * event)1332*5113495bSYour Name mlme_twt_osif_pause_complete_ind(struct wlan_objmgr_psoc *psoc,
1333*5113495bSYour Name 			    struct twt_pause_dialog_complete_event_param *event)
1334*5113495bSYour Name {
1335*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1336*5113495bSYour Name }
1337*5113495bSYour Name 
1338*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_resume_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_resume_dialog_complete_event_param * event)1339*5113495bSYour Name mlme_twt_osif_resume_complete_ind(struct wlan_objmgr_psoc *psoc,
1340*5113495bSYour Name 			   struct twt_resume_dialog_complete_event_param *event)
1341*5113495bSYour Name {
1342*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1343*5113495bSYour Name }
1344*5113495bSYour Name 
1345*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_nudge_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_nudge_dialog_complete_event_param * event)1346*5113495bSYour Name mlme_twt_osif_nudge_complete_ind(struct wlan_objmgr_psoc *psoc,
1347*5113495bSYour Name 			    struct twt_nudge_dialog_complete_event_param *event)
1348*5113495bSYour Name {
1349*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1350*5113495bSYour Name }
1351*5113495bSYour Name 
1352*5113495bSYour Name static inline QDF_STATUS
mlme_twt_osif_notify_complete_ind(struct wlan_objmgr_psoc * psoc,struct twt_notify_event_param * event)1353*5113495bSYour Name mlme_twt_osif_notify_complete_ind(struct wlan_objmgr_psoc *psoc,
1354*5113495bSYour Name 				  struct twt_notify_event_param *event)
1355*5113495bSYour Name {
1356*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1357*5113495bSYour Name }
1358*5113495bSYour Name 
1359*5113495bSYour Name static inline QDF_STATUS
mlme_twt_vdev_create_notification(struct wlan_objmgr_vdev * vdev)1360*5113495bSYour Name mlme_twt_vdev_create_notification(struct wlan_objmgr_vdev *vdev)
1361*5113495bSYour Name {
1362*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1363*5113495bSYour Name }
1364*5113495bSYour Name 
1365*5113495bSYour Name static inline QDF_STATUS
mlme_twt_vdev_destroy_notification(struct wlan_objmgr_vdev * vdev)1366*5113495bSYour Name mlme_twt_vdev_destroy_notification(struct wlan_objmgr_vdev *vdev)
1367*5113495bSYour Name {
1368*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1369*5113495bSYour Name }
1370*5113495bSYour Name 
1371*5113495bSYour Name #endif /* WLAN_SUPPORT_TWT && WLAN_TWT_CONV_SUPPORTED */
1372*5113495bSYour Name 
1373*5113495bSYour Name /**
1374*5113495bSYour Name  * mlme_vdev_reconfig_timer_cb() - vdev ml reconfig timer callback
1375*5113495bSYour Name  * @arg: timer argument
1376*5113495bSYour Name  *
1377*5113495bSYour Name  * Return: None
1378*5113495bSYour Name  */
1379*5113495bSYour Name void mlme_vdev_reconfig_timer_cb(void *arg);
1380*5113495bSYour Name 
1381*5113495bSYour Name /**
1382*5113495bSYour Name  * mlme_mlo_is_reconfig_reassoc_enable() - Get if reassoc on mlo reconfig link
1383*5113495bSYour Name  * add is enable
1384*5113495bSYour Name  * @psoc: Object manager psoc pointer
1385*5113495bSYour Name  *
1386*5113495bSYour Name  * Return: True if reassoc on mlo reconfig link add ie enable
1387*5113495bSYour Name  */
1388*5113495bSYour Name bool mlme_mlo_is_reconfig_reassoc_enable(struct wlan_objmgr_psoc *psoc);
1389*5113495bSYour Name 
1390*5113495bSYour Name #ifdef WLAN_BOOST_CPU_FREQ_IN_ROAM
1391*5113495bSYour Name /**
1392*5113495bSYour Name  * mlme_cm_osif_perfd_reset_cpufreq() - Function to reset CPU freq
1393*5113495bSYour Name  *
1394*5113495bSYour Name  * This function is to reset the CPU freq
1395*5113495bSYour Name  *
1396*5113495bSYour Name  * Return: None
1397*5113495bSYour Name  */
1398*5113495bSYour Name void mlme_cm_osif_perfd_reset_cpufreq(void);
1399*5113495bSYour Name #else
1400*5113495bSYour Name static inline
mlme_cm_osif_perfd_reset_cpufreq(void)1401*5113495bSYour Name void mlme_cm_osif_perfd_reset_cpufreq(void)
1402*5113495bSYour Name {
1403*5113495bSYour Name }
1404*5113495bSYour Name #endif
1405*5113495bSYour Name 
1406*5113495bSYour Name #endif
1407