1 /*
2  * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 /*
18  * DOC: contains MLO manager public file containing roaming functionality
19  */
20 #ifndef _WLAN_MLO_MGR_ROAM_H_
21 #define _WLAN_MLO_MGR_ROAM_H_
22 
23 #include <wlan_mlo_mgr_cmn.h>
24 #include <wlan_mlo_mgr_public_structs.h>
25 #include <wlan_cm_roam_public_struct.h>
26 #include <../../core/src/wlan_cm_roam_i.h>
27 
28 #ifdef WLAN_FEATURE_11BE_MLO
29 
30 /**
31  * mlo_fw_roam_sync_req - Handler for roam sync event handling
32  *
33  * @psoc: psoc pointer
34  * @vdev_id: vdev id
35  * @event: event ptr
36  * @event_data_len: event data len
37  *
38  * This api will be called from target_if layer to mlo mgr,
39  * handles mlo roaming and posts roam sync propagation to
40  * connection manager state machine.
41  *
42  * Return: qdf status
43  */
44 QDF_STATUS mlo_fw_roam_sync_req(struct wlan_objmgr_psoc *psoc,
45 				uint8_t vdev_id, void *event,
46 				uint32_t event_data_len);
47 
48 /**
49  * mlo_fw_ho_fail_req - Handler for HO fail event handling
50  *
51  * @psoc: psoc pointer
52  * @vdev_id: vdev id
53  * @bssid: bssid mac addr
54  *
55  * This api will be called from target_if layer to mlo mgr,
56  * handles mlo ho fail req and posts to connection manager
57  * state machine.
58  *
59  * Return: void
60  */
61 void
62 mlo_fw_ho_fail_req(struct wlan_objmgr_psoc *psoc,
63 		   uint8_t vdev_id, struct qdf_mac_addr bssid);
64 
65 /**
66  * mlo_get_sta_link_mac_addr - get sta link mac addr
67  *
68  * @vdev_id: vdev id
69  * @sync_ind: roam sync ind pointer
70  * @link_mac_addr: link mac addr pointer
71  *
72  * This api will be called to get the link specific mac address.
73  *
74  * Return: qdf status
75  */
76 QDF_STATUS
77 mlo_get_sta_link_mac_addr(uint8_t vdev_id,
78 			  struct roam_offload_synch_ind *sync_ind,
79 			  struct qdf_mac_addr *link_mac_addr);
80 
81 /**
82  * mlo_roam_get_chan_freq - get channel frequency
83  *
84  * @vdev_id: vdev id
85  * @sync_ind: roam sync ind pointer
86  *
87  * This api will be called to get the link channel frequency.
88  *
89  * Return: channel frequency
90  */
91 uint32_t
92 mlo_roam_get_chan_freq(uint8_t vdev_id,
93 		       struct roam_offload_synch_ind *sync_ind);
94 
95 /**
96  * mlo_roam_get_link_freq_from_mac_addr - get given link frequency
97  * @sync_ind: roam sync ind pointer
98  * @link_mac_addr: Link mac address
99  *
100  * This api will be called to get the link frequency.
101  *
102  * Return: channel frequency
103  */
104 uint32_t
105 mlo_roam_get_link_freq_from_mac_addr(struct roam_offload_synch_ind *sync_ind,
106 				     uint8_t *link_mac_addr);
107 
108 /**
109  * mlo_roam_get_link_id_from_mac_addr - get link id of given link addr
110  * @sync_ind: roam sync ind pointer
111  * @link_mac_addr: Link mac address
112  * @link_id: Buffer to fill link corresponds to link mac address
113  *
114  * This api will be called to get the link id
115  *
116  * Return: QDF_STATUS
117  */
118 QDF_STATUS
119 mlo_roam_get_link_id_from_mac_addr(struct roam_offload_synch_ind *sync_ind,
120 				   uint8_t *link_mac_addr, uint32_t *link_id);
121 /**
122  * mlo_roam_get_link_id - get link id
123  *
124  * @vdev_id: vdev id
125  * @sync_ind: roam sync ind pointer
126  *
127  * This api will be called to get the link id information.
128  *
129  * Return: link id
130  */
131 uint32_t
132 mlo_roam_get_link_id(uint8_t vdev_id,
133 		     struct roam_offload_synch_ind *sync_ind);
134 
135 /**
136  * is_multi_link_roam - check if MLO roaming
137  *
138  * @sync_ind: roam sync ind pointer
139  *
140  * This api will be called to check if MLO roaming.
141  *
142  * Return: true/false
143  */
144 bool
145 is_multi_link_roam(struct roam_offload_synch_ind *sync_ind);
146 
147 /**
148  * mlo_roam_get_num_of_setup_links - get number of setup links
149  * @sync_ind: roam sync ind pointer
150  *
151  * This api will be called to get number of setup links after roaming
152  *
153  * Return: true/false
154  */
155 uint8_t
156 mlo_roam_get_num_of_setup_links(struct roam_offload_synch_ind *sync_ind);
157 
158 /**
159  * mlo_enable_rso - Enable rso on assoc vdev
160  *
161  * @pdev: pdev pointer
162  * @vdev: assoc vdev pointer
163  * @rsp: cm connect rsp
164  *
165  * This api will be called to enable RSO for MLO connection.
166  *
167  * Return: qdf_status success or fail
168  */
169 QDF_STATUS mlo_enable_rso(struct wlan_objmgr_pdev *pdev,
170 			  struct wlan_objmgr_vdev *vdev,
171 			  struct wlan_cm_connect_resp *rsp);
172 
173 /**
174  * mlo_roam_copy_partner_info - copy partner link info to connect response
175  *
176  * @partner_info: Destination buffer to fill partner info from roam sync ind
177  * @sync_ind: roam sync ind pointer
178  * @skip_vdev_id: Skip to copy the link info corresponds to this vdev_id
179  * @fill_all_links: Fill all the links for connect response to userspace
180  *
181  * This api will be called to copy partner link info to connect response.
182  *
183  * Return: none
184  */
185 void mlo_roam_copy_partner_info(struct mlo_partner_info *partner_info,
186 				struct roam_offload_synch_ind *sync_ind,
187 				uint8_t skip_vdev_id, bool fill_all_links);
188 
189 /**
190  * mlo_roam_init_cu_bpcc() - init cu bpcc per roam sync data
191  * @vdev: vdev object
192  * @sync_ind: roam sync ind pointer
193  *
194  * This api will be called to init cu bpcc from connect response.
195  *
196  * Return: none
197  */
198 void mlo_roam_init_cu_bpcc(struct wlan_objmgr_vdev *vdev,
199 			   struct roam_offload_synch_ind *sync_ind);
200 
201 /**
202  * mlo_roam_update_connected_links - update connected links bitmap after roaming
203  *
204  * @vdev: vdev pointer
205  * @connect_rsp: connect resp structure pointer
206  *
207  * This api will be called to copy partner link info to connect response.
208  *
209  * Return: none
210  */
211 void mlo_roam_update_connected_links(struct wlan_objmgr_vdev *vdev,
212 				     struct wlan_cm_connect_resp *connect_rsp);
213 
214 /**
215  * mlo_set_single_link_ml_roaming - set single link mlo roaming
216  *
217  * @psoc: psoc pointer
218  * @vdev_id: vdev id
219  * @is_single_link_ml_roaming: boolean flag
220  *
221  * This api will be called to set single link mlo roaming flag.
222  *
223  * Return: none
224  */
225 void
226 mlo_set_single_link_ml_roaming(struct wlan_objmgr_psoc *psoc,
227 			       uint8_t vdev_id,
228 			       bool is_single_link_ml_roaming);
229 
230 /**
231  * mlo_get_single_link_ml_roaming - check if single link mlo roaming
232  *
233  * @psoc: psoc pointer
234  * @vdev_id: vdev id
235  *
236  * This api will be called to check if single link mlo roaming is true or false.
237  *
238  * Return: boolean value
239  */
240 bool
241 mlo_get_single_link_ml_roaming(struct wlan_objmgr_psoc *psoc,
242 			       uint8_t vdev_id);
243 
244 /**
245  * mlo_roam_get_bssid_chan_for_link - get link mac addr and channel info
246  *
247  * @vdev_id: vdev id
248  * @sync_ind: roam sync ind pointer
249  * @bssid: link mac addr pointer
250  * @chan: link wmi channel pointer
251  *
252  * This api will be called to get link mac addr and channel info.
253  *
254  * Return: qdf status
255  */
256 QDF_STATUS
257 mlo_roam_get_bssid_chan_for_link(uint8_t vdev_id,
258 				 struct roam_offload_synch_ind *sync_ind,
259 				 struct qdf_mac_addr *bssid,
260 				 wmi_channel *chan);
261 
262 /**
263  * mlo_get_link_mac_addr_from_reassoc_rsp - get link mac addr from reassoc rsp
264  * @vdev: vdev pointer
265  * @link_mac_addr: link mac address
266  *
267  * This api will be called to get link mac addr from stored reassoc rsp
268  * after roaming and vdev id.
269  *
270  * Return: qdf status
271  */
272 QDF_STATUS
273 mlo_get_link_mac_addr_from_reassoc_rsp(struct wlan_objmgr_vdev *vdev,
274 				       struct qdf_mac_addr *link_mac_addr);
275 
276 /**
277  * mlo_roam_copy_reassoc_rsp - Copy cm vdev join rsp
278  *
279  * @vdev: vdev pointer
280  * @reassoc_rsp: cm vdev reassoc rsp pointer
281  *
282  * This api will be called to copy cm vdev reassoc rsp which will
283  * be used to later bring up link vdev/s.
284  *
285  * Return: qdf_status success or fail
286  */
287 QDF_STATUS
288 mlo_roam_copy_reassoc_rsp(struct wlan_objmgr_vdev *vdev,
289 			  struct wlan_cm_connect_resp *reassoc_rsp);
290 
291 /**
292  * mlo_roam_link_connect_notify - Send connect req
293  * on link
294  * @psoc: psoc pointer
295  * @vdev_id: vdev id
296  *
297  * This api will be called to send connect req for link vdev.
298  *
299  * Return: qdf_status success or fail
300  */
301 QDF_STATUS
302 mlo_roam_link_connect_notify(struct wlan_objmgr_psoc *psoc,
303 			     uint8_t vdev_id);
304 
305 /**
306  * mlo_roam_is_auth_status_connected - api to check roam auth status
307  * on link
308  * @psoc: psoc pointer
309  * @vdev_id: vdev id
310  *
311  * This api will be called to check if roam auth status is connected
312  *
313  * Return: boolean true or false
314  */
315 bool
316 mlo_roam_is_auth_status_connected(struct wlan_objmgr_psoc *psoc,
317 				  uint8_t vdev_id);
318 
319 /**
320  * mlo_roam_connect_complete - roam connect complete api
321  * @vdev: vdev pointer
322  *
323  * This api will be called after connect complete for roam 1x case.
324  *
325  * Return: none
326  */
327 void mlo_roam_connect_complete(struct wlan_objmgr_vdev *vdev);
328 
329 /**
330  * mlo_roam_free_copied_reassoc_rsp - roam free copied reassoc rsp
331  * @vdev: vdev pointer
332  *
333  * This api will be called to free copied reassoc rsp.
334  *
335  * Return: none
336  */
337 void mlo_roam_free_copied_reassoc_rsp(struct wlan_objmgr_vdev *vdev);
338 
339 #ifdef WLAN_FEATURE_11BE_MLO_ADV_FEATURE
340 /**
341  * mlo_mgr_roam_update_ap_link_info() - Update AP links information
342  * @vdev: Object Manager vdev
343  * @src_link_info: Source link setup information
344  * @channel: Channel information
345  *
346  * Update AP link information for each link of AP MLD
347  *
348  * Return: None
349  */
350 void mlo_mgr_roam_update_ap_link_info(struct wlan_objmgr_vdev *vdev,
351 				      struct ml_setup_link_param *src_link_info,
352 				      struct wlan_channel *channel);
353 
354 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
355 /**
356  * mlo_mgr_num_roam_links() - Get number of roaming links
357  * @vdev: VDEV object manager pointer
358  *
359  * Returns the num of links device roamed via FW roam sync event,
360  * for non-MLO VDEV the number of links is one.
361  */
362 uint8_t mlo_mgr_num_roam_links(struct wlan_objmgr_vdev *vdev);
363 #else
mlo_mgr_num_roam_links(struct wlan_objmgr_vdev * vdev)364 static inline uint8_t mlo_mgr_num_roam_links(struct wlan_objmgr_vdev *vdev)
365 {
366 	return 0;
367 }
368 #endif
369 
370 /**
371  * mlo_cm_roam_sync_cb - Callback function from CM to MLO mgr
372  *
373  * @vdev: vdev pointer
374  * @event: event ptr
375  * @event_data_len: event data len
376  *
377  * This api will be called from connection manager to mlo
378  * manager to start roam sync request on link vdev's.
379  *
380  * Return: qdf status
381  */
382 QDF_STATUS
383 mlo_cm_roam_sync_cb(struct wlan_objmgr_vdev *vdev,
384 		    void *event, uint32_t event_data_len);
385 #endif /* WLAN_FEATURE_11BE_MLO_ADV_FEATURE */
386 
387 /**
388  * wlan_mlo_roam_abort_on_link - Abort roam on link
389  *
390  * @psoc: psoc pointer
391  * @event: Roam sync indication event pointer
392  * @vdev_id: vdev id value
393  *
394  * Abort roaming on all the links except the vdev id passed.
395  * Roam abort on vdev id link would be taken care in legacy path.
396  *
397  * Return: QDF_STATUS
398  */
399 QDF_STATUS
400 wlan_mlo_roam_abort_on_link(struct wlan_objmgr_psoc *psoc,
401 			    uint8_t *event, uint8_t vdev_id);
402 
403 /**
404  * mlo_check_if_all_links_up - Check if all links are up
405  * @vdev: vdev pointer
406  *
407  * This api will check if all the requested links are  in CM connected
408  * state.
409  *
410  * Return: bool, true: all links of mld connected
411  */
412 bool
413 mlo_check_if_all_links_up(struct wlan_objmgr_vdev *vdev);
414 
415 /**
416  * mlo_check_if_all_vdev_up - Check if all vdev are up
417  * @vdev: vdev pointer
418  *
419  * This api will check if all the requested vdev are  in up
420  * state.
421  *
422  * Return: bool, true: all assoc/link vdevs of mld in UP state
423  */
424 bool
425 mlo_check_if_all_vdev_up(struct wlan_objmgr_vdev *vdev);
426 
427 /**
428  * mlo_roam_set_link_id - set link id post roaming
429  *
430  * @vdev: vdev pointer
431  * @sync_ind: roam sync indication pointer
432  *
433  * This api will be called to set link id post roaming
434  *
435  * Return: none
436  */
437 void
438 mlo_roam_set_link_id(struct wlan_objmgr_vdev *vdev,
439 		     struct roam_offload_synch_ind *sync_ind);
440 
441 /**
442  * mlo_is_roaming_in_progress - check if roaming is in progress
443  * @psoc: psoc pointer
444  * @vdev_id: vdev id
445  *
446  * This api will be called to check if roaming in progress on any
447  * of the mlo links.
448  *
449  * Return: boolean (true or false)
450  */
451 bool
452 mlo_is_roaming_in_progress(struct wlan_objmgr_psoc *psoc,
453 			   uint8_t vdev_id);
454 
455 /**
456  * mlo_add_all_link_probe_rsp_to_scan_db - Extract and add all ML link probe
457  * rsps to scan db
458  * @psoc: psoc pointer
459  * @rcvd_frame: Received frame from firmware
460  *
461  * This api will be called to generate ML probe responses corresponds to each
462  * link from the received probe response and add them to scan db
463  *
464  * Return: QDF_STATUS
465  */
466 QDF_STATUS
467 mlo_add_all_link_probe_rsp_to_scan_db(struct wlan_objmgr_psoc *psoc,
468 			      struct roam_scan_candidate_frame *rcvd_frame);
469 
470 /**
471  * mlo_is_enable_roaming_on_connected_sta_allowed() - whether connected STA is
472  * allowed to enable roaming if link vdev disconnects
473  * @vdev: vdev object
474  *
475  * Return: true if connected STA is allowed to enable roaming, false otherwise.
476  */
477 bool
478 mlo_is_enable_roaming_on_connected_sta_allowed(struct wlan_objmgr_vdev *vdev);
479 
480 /**
481  * mlo_check_is_given_vdevs_on_same_mld() - check if the 2 given vdev's are on
482  * same MLD
483  * @psoc: PSOC object
484  * @vdev_id_1: Current connected station vdev id on which roaming is to be
485  * enabled
486  * @vdev_id_2: vdev id on which disconnection is happening
487  *
488  * Return: true if both vdev ids are on same MLD, false otherwise.
489  */
490 bool
491 mlo_check_is_given_vdevs_on_same_mld(struct wlan_objmgr_psoc *psoc,
492 				     uint8_t vdev_id_1, uint8_t vdev_id_2);
493 #else /* WLAN_FEATURE_11BE_MLO */
494 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
495 static inline
mlo_fw_roam_sync_req(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,void * event,uint32_t event_data_len)496 QDF_STATUS mlo_fw_roam_sync_req(struct wlan_objmgr_psoc *psoc,
497 				uint8_t vdev_id, void *event,
498 				uint32_t event_data_len)
499 {
500 	return cm_fw_roam_sync_req(psoc, vdev_id, event, event_data_len);
501 }
502 #endif
503 static inline QDF_STATUS
mlo_get_sta_link_mac_addr(uint8_t vdev_id,struct roam_offload_synch_ind * sync_ind,struct qdf_mac_addr * link_mac_addr)504 mlo_get_sta_link_mac_addr(uint8_t vdev_id,
505 			  struct roam_offload_synch_ind *sync_ind,
506 			  struct qdf_mac_addr *link_mac_addr)
507 {
508 	return QDF_STATUS_E_NOSUPPORT;
509 }
510 
511 static inline uint32_t
mlo_roam_get_chan_freq(uint8_t vdev_id,struct roam_offload_synch_ind * sync_ind)512 mlo_roam_get_chan_freq(uint8_t vdev_id,
513 		       struct roam_offload_synch_ind *sync_ind)
514 {
515 	return 0;
516 }
517 
518 static inline uint32_t
mlo_roam_get_link_id(uint8_t vdev_id,struct roam_offload_synch_ind * sync_ind)519 mlo_roam_get_link_id(uint8_t vdev_id,
520 		     struct roam_offload_synch_ind *sync_ind)
521 {
522 	return 0;
523 }
524 
525 #ifdef WLAN_FEATURE_11BE_MLO_ADV_FEATURE
526 /**
527  * mlo_cm_roam_sync_cb() - MLO callback to handle roam synch event
528  * for MLO vdev
529  * @vdev: Pointer to objmgr vdev
530  * @event: Pointer to event
531  * @event_data_len: event data length
532  */
533 QDF_STATUS mlo_cm_roam_sync_cb(struct wlan_objmgr_vdev *vdev,
534 			       void *event, uint32_t event_data_len);
535 #else
536 static inline QDF_STATUS
mlo_cm_roam_sync_cb(struct wlan_objmgr_vdev * vdev,void * event,uint32_t event_data_len)537 mlo_cm_roam_sync_cb(struct wlan_objmgr_vdev *vdev,
538 		    void *event, uint32_t event_data_len)
539 {
540 	return QDF_STATUS_SUCCESS;
541 }
542 #endif
543 
544 static inline bool
is_multi_link_roam(struct roam_offload_synch_ind * sync_ind)545 is_multi_link_roam(struct roam_offload_synch_ind *sync_ind)
546 {
547 	return false;
548 }
549 
550 static inline uint8_t
mlo_roam_get_num_of_setup_links(struct roam_offload_synch_ind * sync_ind)551 mlo_roam_get_num_of_setup_links(struct roam_offload_synch_ind *sync_ind)
552 {
553 	return 0;
554 }
555 
556 static inline
mlo_enable_rso(struct wlan_objmgr_pdev * pdev,struct wlan_objmgr_vdev * vdev,struct wlan_cm_connect_resp * rsp)557 QDF_STATUS mlo_enable_rso(struct wlan_objmgr_pdev *pdev,
558 			  struct wlan_objmgr_vdev *vdev,
559 			  struct wlan_cm_connect_resp *rsp)
560 {
561 	return QDF_STATUS_SUCCESS;
562 }
563 
564 static inline void
mlo_roam_copy_partner_info(struct mlo_partner_info * partner_info,struct roam_offload_synch_ind * sync_ind,uint8_t skip_vdev_id,bool fill_all_links)565 mlo_roam_copy_partner_info(struct mlo_partner_info *partner_info,
566 			   struct roam_offload_synch_ind *sync_ind,
567 			   uint8_t skip_vdev_id, bool fill_all_links)
568 {}
569 
570 static inline
mlo_roam_init_cu_bpcc(struct wlan_objmgr_vdev * vdev,struct roam_offload_synch_ind * sync_ind)571 void mlo_roam_init_cu_bpcc(struct wlan_objmgr_vdev *vdev,
572 			   struct roam_offload_synch_ind *sync_ind)
573 {}
574 
575 static inline void
mlo_roam_update_connected_links(struct wlan_objmgr_vdev * vdev,struct wlan_cm_connect_resp * connect_rsp)576 mlo_roam_update_connected_links(struct wlan_objmgr_vdev *vdev,
577 				struct wlan_cm_connect_resp *connect_rsp)
578 {}
579 
580 static inline QDF_STATUS
wlan_mlo_roam_abort_on_link(struct wlan_objmgr_psoc * psoc,uint8_t * event,uint8_t vdev_id)581 wlan_mlo_roam_abort_on_link(struct wlan_objmgr_psoc *psoc,
582 			    uint8_t *event, uint8_t vdev_id)
583 {
584 	return QDF_STATUS_E_NOSUPPORT;
585 }
586 
587 static inline void
mlo_set_single_link_ml_roaming(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,bool is_single_link_ml_roaming)588 mlo_set_single_link_ml_roaming(struct wlan_objmgr_psoc *psoc,
589 			       uint8_t vdev_id,
590 			       bool is_single_link_ml_roaming)
591 {}
592 
593 static inline bool
mlo_get_single_link_ml_roaming(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)594 mlo_get_single_link_ml_roaming(struct wlan_objmgr_psoc *psoc,
595 			       uint8_t vdev_id)
596 {
597 	return false;
598 }
599 
600 static inline QDF_STATUS
mlo_roam_get_bssid_chan_for_link(uint8_t vdev_id,struct roam_offload_synch_ind * sync_ind,struct qdf_mac_addr * bssid,wmi_channel * chan)601 mlo_roam_get_bssid_chan_for_link(uint8_t vdev_id,
602 				 struct roam_offload_synch_ind *sync_ind,
603 				 struct qdf_mac_addr *bssid,
604 				 wmi_channel *chan)
605 {
606 	return QDF_STATUS_E_NOSUPPORT;
607 }
608 
609 static inline bool
mlo_check_if_all_links_up(struct wlan_objmgr_vdev * vdev)610 mlo_check_if_all_links_up(struct wlan_objmgr_vdev *vdev)
611 {
612 	return false;
613 }
614 
615 static inline bool
mlo_check_if_all_vdev_up(struct wlan_objmgr_vdev * vdev)616 mlo_check_if_all_vdev_up(struct wlan_objmgr_vdev *vdev)
617 {
618 	return false;
619 }
620 
621 static inline void
mlo_roam_set_link_id(struct wlan_objmgr_vdev * vdev,struct roam_offload_synch_ind * sync_ind)622 mlo_roam_set_link_id(struct wlan_objmgr_vdev *vdev,
623 		     struct roam_offload_synch_ind *sync_ind)
624 {}
625 
626 static inline QDF_STATUS
mlo_roam_copy_reassoc_rsp(struct wlan_objmgr_vdev * vdev,struct wlan_cm_connect_resp * reassoc_rsp)627 mlo_roam_copy_reassoc_rsp(struct wlan_objmgr_vdev *vdev,
628 			  struct wlan_cm_connect_resp *reassoc_rsp)
629 {
630 	return QDF_STATUS_E_NOSUPPORT;
631 }
632 
633 static inline QDF_STATUS
mlo_roam_link_connect_notify(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)634 mlo_roam_link_connect_notify(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
635 {
636 	return QDF_STATUS_E_NOSUPPORT;
637 }
638 
639 static inline bool
mlo_roam_is_auth_status_connected(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)640 mlo_roam_is_auth_status_connected(struct wlan_objmgr_psoc *psoc,
641 				  uint8_t vdev_id)
642 {
643 	return false;
644 }
645 
646 static inline void
mlo_roam_connect_complete(struct wlan_objmgr_vdev * vdev)647 mlo_roam_connect_complete(struct wlan_objmgr_vdev *vdev)
648 {}
649 
650 static inline void
mlo_roam_free_copied_reassoc_rsp(struct wlan_objmgr_vdev * vdev)651 mlo_roam_free_copied_reassoc_rsp(struct wlan_objmgr_vdev *vdev)
652 {}
653 
654 static inline QDF_STATUS
mlo_get_link_mac_addr_from_reassoc_rsp(struct wlan_objmgr_vdev * vdev,struct qdf_mac_addr * link_mac_addr)655 mlo_get_link_mac_addr_from_reassoc_rsp(struct wlan_objmgr_vdev *vdev,
656 				       struct qdf_mac_addr *link_mac_addr)
657 {
658 	return QDF_STATUS_E_NOSUPPORT;
659 }
660 
661 static inline
mlo_mgr_roam_update_ap_link_info(struct wlan_objmgr_vdev * vdev,struct ml_setup_link_param * src_info,struct wlan_channel * channel)662 void mlo_mgr_roam_update_ap_link_info(struct wlan_objmgr_vdev *vdev,
663 				      struct ml_setup_link_param *src_info,
664 				      struct wlan_channel *channel)
665 {}
666 
mlo_mgr_num_roam_links(struct wlan_objmgr_vdev * vdev)667 static inline uint8_t mlo_mgr_num_roam_links(struct wlan_objmgr_vdev *vdev)
668 {
669 	return 1;
670 }
671 
672 static inline uint32_t
mlo_roam_get_link_freq_from_mac_addr(struct roam_offload_synch_ind * sync_ind,uint8_t * link_mac_addr)673 mlo_roam_get_link_freq_from_mac_addr(struct roam_offload_synch_ind *sync_ind,
674 				     uint8_t *link_mac_addr)
675 {
676 	if (sync_ind)
677 		return sync_ind->chan_freq;
678 
679 	return 0;
680 }
681 
682 static inline bool
mlo_is_roaming_in_progress(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)683 mlo_is_roaming_in_progress(struct wlan_objmgr_psoc *psoc,
684 			   uint8_t vdev_id)
685 {
686 	return false;
687 }
688 
689 static inline bool
mlo_is_enable_roaming_on_connected_sta_allowed(struct wlan_objmgr_vdev * vdev)690 mlo_is_enable_roaming_on_connected_sta_allowed(struct wlan_objmgr_vdev *vdev)
691 {
692 	return true;
693 }
694 
695 static inline bool
mlo_check_is_given_vdevs_on_same_mld(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id_1,uint8_t vdev_id_2)696 mlo_check_is_given_vdevs_on_same_mld(struct wlan_objmgr_psoc *psoc,
697 				     uint8_t vdev_id_1, uint8_t vdev_id_2)
698 {
699 	return false;
700 }
701 
702 #endif /* WLAN_FEATURE_11BE_MLO */
703 #endif
704