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