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