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