1 /*
2 * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
3 * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for
6 * any purpose with or without fee is hereby granted, provided that the
7 * above copyright notice and this permission notice appear in all
8 * copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17 * PERFORMANCE OF THIS SOFTWARE.
18 */
19 /**
20 * DOC: declare public APIs exposed by the mlme component
21 */
22
23 #ifndef _WLAN_MLME_API_H_
24 #define _WLAN_MLME_API_H_
25
26 #include <wlan_mlme_public_struct.h>
27 #include <wlan_objmgr_psoc_obj.h>
28 #include <wlan_cmn.h>
29 #include "sme_api.h"
30
31 #define DISABLE_MCS_12_13_2G_40M 1
32
33 #define ASSEMBLE_RATECODE_V1(_pream, _nss, _rate) \
34 (((1) << 28) | ((_pream) << 8) | ((_nss) << 5) | (_rate))
35
36 /* This macro is used to extract the rate from the rate_code as first four bits
37 * in rate_code represents the rate, next 3 bits represents the nss and
38 * next 2 bits represents preamble.
39 */
40 #define RATECODE_V1_RIX_MASK 0xf
41
42 /* This macro is used to extract preamble from the rate_code as first 4 bits
43 * in rate_code represents the rate, next 3 bits represents the nss and
44 * next 2 bits represents preamble.
45 */
46 #define RATECODE_V1_PREAMBLE_OFFSET (4 + 3)
47
48 /* This macro is used to extract NSS from the rate_code as first 4 bits
49 * in rate_code represents the rate, next 3 bits represents the NSS and
50 * next 2 bits represents preamble.
51 */
52 #define RATECODE_V1_NSS_OFFSET 0x4
53 #define RATECODE_V1_NSS_MASK 0x7
54
55 #ifdef FEATURE_SET
56 /**
57 * wlan_mlme_get_feature_info() - Get mlme features
58 * @psoc: psoc context
59 * @mlme_feature_set: MLME feature set info structure
60 *
61 * Return: None
62 */
63 void wlan_mlme_get_feature_info(
64 struct wlan_objmgr_psoc *psoc,
65 struct wlan_mlme_features *mlme_feature_set);
66 #endif
67
68 /**
69 * wlan_mlme_get_cfg_str() - Copy the uint8_t array for a particular CFG
70 * @dst: pointer to the destination buffer.
71 * @cfg_str: pointer to the cfg string structure
72 * @len: length to be copied
73 *
74 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE
75 */
76 QDF_STATUS wlan_mlme_get_cfg_str(uint8_t *dst, struct mlme_cfg_str *cfg_str,
77 qdf_size_t *len);
78
79 /**
80 * wlan_mlme_set_cfg_str() - Set values for a particular CFG
81 * @src: pointer to the source buffer.
82 * @dst_cfg_str: pointer to the cfg string structure to be modified
83 * @len: length to be written
84 *
85 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE
86 */
87 QDF_STATUS wlan_mlme_set_cfg_str(uint8_t *src, struct mlme_cfg_str *dst_cfg_str,
88 qdf_size_t len);
89
90 /**
91 * wlan_mlme_get_edca_params() - get the EDCA parameters corresponding to the
92 * edca profile access category
93 * @edca_params: pointer to mlme edca parameters structure
94 * @data: data to which the parameter is to be copied
95 * @edca_ac: edca ac type enum passed to get the cfg value
96 *
97 * Return QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE
98 *
99 */
100 QDF_STATUS wlan_mlme_get_edca_params(struct wlan_mlme_edca_params *edca_params,
101 uint8_t *data, enum e_edca_type edca_ac);
102
103 /**
104 * wlan_mlme_update_cfg_with_tgt_caps() - Update mlme cfg with tgt caps
105 * @psoc: pointer to psoc object
106 * @tgt_caps: Pointer to the mlme related capability structure
107 *
108 * Return: None
109 */
110 void
111 wlan_mlme_update_cfg_with_tgt_caps(struct wlan_objmgr_psoc *psoc,
112 struct mlme_tgt_caps *tgt_caps);
113
114 /**
115 * wlan_mlme_update_aux_dev_caps() - Update mlme aux capability
116 * @psoc: pointer to psoc object
117 * @wlan_mlme_aux_dev_caps: array for aux dev capability
118 *
119 * Return: None
120 */
121
122 void
123 wlan_mlme_update_aux_dev_caps(struct wlan_objmgr_psoc *psoc,
124 struct wlan_mlme_aux_dev_caps
125 wlan_mlme_aux_dev_caps[]);
126
127 /*
128 * mlme_get_wep_key() - get the wep key to process during auth frame
129 * @vdev: VDEV object for which the wep key is being requested
130 * @wep_params: cfg wep parameters structure
131 * @wep_key_id: default key number
132 * @default_key: default key to be copied
133 * @key_len: length of the key to copy
134 *
135 * Return QDF_STATUS
136 */
137 QDF_STATUS mlme_get_wep_key(struct wlan_objmgr_vdev *vdev,
138 struct wlan_mlme_wep_cfg *wep_params,
139 enum wep_key_id wep_keyid, uint8_t *default_key,
140 qdf_size_t *key_len);
141
142 /**
143 * wlan_mlme_get_tx_power() - Get the max tx power in particular band
144 * @psoc: pointer to psoc object
145 * @band: 2ghz/5ghz band
146 *
147 * Return: value of tx power in the respective band
148 */
149 uint8_t wlan_mlme_get_tx_power(struct wlan_objmgr_psoc *psoc,
150 enum band_info band);
151
152 /**
153 * wlan_mlme_get_power_usage() - Get the power usage info
154 * @psoc: pointer to psoc object
155 *
156 * Return: pointer to character array of power usage
157 */
158 char *wlan_mlme_get_power_usage(struct wlan_objmgr_psoc *psoc);
159
160 /**
161 * wlan_mlme_get_enable_deauth_to_disassoc_map() - Get the deauth to disassoc
162 * map
163 * @psoc: pointer to psoc object
164 * @value: pointer to the value which will be filled for the caller
165 *
166 * Return: QDF Status
167 */
168 QDF_STATUS
169 wlan_mlme_get_enable_deauth_to_disassoc_map(struct wlan_objmgr_psoc *psoc,
170 bool *value);
171
172 /**
173 * wlan_mlme_get_ht_cap_info() - Get the HT cap info config
174 * @psoc: pointer to psoc object
175 * @ht_cap_info: pointer to the value which will be filled for the caller
176 *
177 * Return: QDF Status
178 */
179 QDF_STATUS wlan_mlme_get_ht_cap_info(struct wlan_objmgr_psoc *psoc,
180 struct mlme_ht_capabilities_info
181 *ht_cap_info);
182
183 /**
184 * wlan_mlme_get_manufacturer_name() - get manufacturer name
185 * @psoc: pointer to psoc object
186 * @pbuf: pointer of the buff which will be filled for the caller
187 * @plen: pointer of max buffer length
188 * actual length will be returned at this address
189 * This function gets manufacturer name
190 *
191 * Return: QDF_STATUS_SUCCESS - in case of success
192 */
193 QDF_STATUS
194 wlan_mlme_get_manufacturer_name(struct wlan_objmgr_psoc *psoc,
195 uint8_t *pbuf, uint32_t *plen);
196
197 /**
198 * wlan_mlme_get_model_number() - get model number
199 * @psoc: pointer to psoc object
200 * @pbuf: pointer of the buff which will be filled for the caller
201 * @plen: pointer of max buffer length
202 * actual length will be returned at this address
203 * This function gets model number
204 *
205 * Return: QDF_STATUS_SUCCESS - in case of success
206 */
207 QDF_STATUS
208 wlan_mlme_get_model_number(struct wlan_objmgr_psoc *psoc,
209 uint8_t *pbuf, uint32_t *plen);
210
211 /**
212 * wlan_mlme_get_model_name() - get model name
213 * @psoc: pointer to psoc object
214 * @pbuf: pointer of the buff which will be filled for the caller
215 * @plen: pointer of max buffer length
216 * actual length will be returned at this address
217 * This function gets model name
218 *
219 * Return: QDF_STATUS_SUCCESS - in case of success
220 */
221 QDF_STATUS
222 wlan_mlme_get_model_name(struct wlan_objmgr_psoc *psoc,
223 uint8_t *pbuf, uint32_t *plen);
224
225 /**
226 * wlan_mlme_get_manufacture_product_name() - get manufacture product name
227 * @psoc: pointer to psoc object
228 * @pbuf: pointer of the buff which will be filled for the caller
229 * @plen: pointer of max buffer length
230 * actual length will be returned at this address
231 * This function gets manufacture product name
232 *
233 * Return: QDF_STATUS_SUCCESS - in case of success
234 */
235 QDF_STATUS
236 wlan_mlme_get_manufacture_product_name(struct wlan_objmgr_psoc *psoc,
237 uint8_t *pbuf, uint32_t *plen);
238
239 /**
240 * wlan_mlme_get_manufacture_product_version() - get manufacture product version
241 * @psoc: pointer to psoc object
242 * @pbuf: pointer of the buff which will be filled for the caller
243 * @plen: pointer of max buffer length
244 * actual length will be returned at this address
245 * This function gets manufacture product version
246 *
247 * Return: QDF_STATUS_SUCCESS - in case of success
248 */
249 QDF_STATUS
250 wlan_mlme_get_manufacture_product_version(struct wlan_objmgr_psoc *psoc,
251 uint8_t *pbuf, uint32_t *plen);
252
253 /**
254 * wlan_mlme_set_ht_cap_info() - Set the HT cap info config
255 * @psoc: pointer to psoc object
256 * @ht_cap_info: Value that needs to be set from the caller
257 *
258 * Return: QDF Status
259 */
260 QDF_STATUS wlan_mlme_set_ht_cap_info(struct wlan_objmgr_psoc *psoc,
261 struct mlme_ht_capabilities_info
262 ht_cap_info);
263
264 /**
265 * wlan_mlme_get_max_amsdu_num() - get the max amsdu num
266 * @psoc: pointer to psoc object
267 * @value: pointer to the value where the max_amsdu num is to be filled
268 *
269 * Return: QDF_STATUS
270 */
271 QDF_STATUS wlan_mlme_get_max_amsdu_num(struct wlan_objmgr_psoc *psoc,
272 uint8_t *value);
273
274 /**
275 * wlan_mlme_set_max_amsdu_num() - set the max amsdu num
276 * @psoc: pointer to psoc object
277 * @value: value to be set for max_amsdu_num
278 *
279 * Return: QDF_STATUS
280 */
281 QDF_STATUS wlan_mlme_set_max_amsdu_num(struct wlan_objmgr_psoc *psoc,
282 uint8_t value);
283
284 /**
285 * wlan_mlme_get_ht_mpdu_density() - get the ht mpdu density
286 * @psoc: pointer to psoc object
287 * @value: pointer to the value where the ht mpdu density is to be filled
288 *
289 * Return: QDF_STATUS
290 */
291 QDF_STATUS wlan_mlme_get_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
292 uint8_t *value);
293
294 /**
295 * wlan_mlme_set_ht_mpdu_density() - set the ht mpdu density
296 * @psoc: pointer to psoc object
297 * @value: value to be set for ht mpdu density
298 *
299 * Return: QDF_STATUS
300 */
301 QDF_STATUS wlan_mlme_set_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
302 uint8_t value);
303
304 /**
305 * wlan_mlme_get_band_capability() - Get the Band capability config
306 * @psoc: pointer to psoc object
307 * @band_capability: Pointer to the variable from caller
308 *
309 * Return: QDF Status
310 */
311 QDF_STATUS wlan_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
312 uint32_t *band_capability);
313
314 #ifdef QCA_MULTIPASS_SUPPORT
315 /**
316 * wlan_mlme_peer_config_vlan() - send vlan id to FW for RX path
317 * @vdev: vdev pointer
318 * @mac_addr: mac address of the peer
319 *
320 * Return: QDF_STATUS
321 */
322 QDF_STATUS
323 wlan_mlme_peer_config_vlan(struct wlan_objmgr_vdev *vdev,
324 uint8_t *mac_addr);
325 #else
326 static inline QDF_STATUS
wlan_mlme_peer_config_vlan(struct wlan_objmgr_vdev * vdev,uint8_t * mac_addr)327 wlan_mlme_peer_config_vlan(struct wlan_objmgr_vdev *vdev,
328 uint8_t *mac_addr)
329 {
330 return QDF_STATUS_SUCCESS;
331 }
332 #endif
333 #ifdef MULTI_CLIENT_LL_SUPPORT
334 /**
335 * wlan_mlme_get_wlm_multi_client_ll_caps() - Get the wlm multi client latency
336 * level capability flag
337 * @psoc: pointer to psoc object
338 *
339 * Return: True is multi client ll cap present
340 */
341 bool wlan_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc);
342 #else
343 static inline bool
wlan_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc * psoc)344 wlan_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc)
345 {
346 return false;
347 }
348 #endif
349
350 #ifdef FEATURE_WLAN_CH_AVOID_EXT
351 /**
352 * wlan_mlme_get_coex_unsafe_chan_nb_user_prefer() - get coex unsafe nb
353 * support
354 * @psoc: pointer to psoc object
355 *
356 * Return: coex_unsafe_chan_nb_user_prefer
357 */
358 uint32_t wlan_mlme_get_coex_unsafe_chan_nb_user_prefer(
359 struct wlan_objmgr_psoc *psoc);
360 bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_p2p_go(
361 struct wlan_objmgr_psoc *psoc);
362 bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_sap(
363 struct wlan_objmgr_psoc *psoc);
364 #else
365 static inline
wlan_mlme_get_coex_unsafe_chan_nb_user_prefer(struct wlan_objmgr_psoc * psoc)366 uint32_t wlan_mlme_get_coex_unsafe_chan_nb_user_prefer(
367 struct wlan_objmgr_psoc *psoc)
368 {
369 return false;
370 }
371
372 static inline
wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_sap(struct wlan_objmgr_psoc * psoc)373 bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_sap(
374 struct wlan_objmgr_psoc *psoc)
375 {
376 return false;
377 }
378
379 static inline
wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_p2p_go(struct wlan_objmgr_psoc * psoc)380 bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_p2p_go(
381 struct wlan_objmgr_psoc *psoc)
382 {
383 return false;
384 }
385 #endif
386
387 /**
388 * wlan_mlme_set_band_capability() - Set the Band capability config
389 * @psoc: pointer to psoc object
390 * @band_capability: Value to be set from the caller
391 *
392 * Return: QDF Status
393 */
394 QDF_STATUS wlan_mlme_set_band_capability(struct wlan_objmgr_psoc *psoc,
395 uint32_t band_capability);
396
397 #ifdef WLAN_VENDOR_HANDOFF_CONTROL
398 /**
399 * wlan_mlme_get_vendor_handoff_control_caps() - Get the vendor handoff control
400 * capability flag
401 * @psoc: pointer to psoc object
402 *
403 * Return: True if vendor handoff control caps present
404 */
405 bool wlan_mlme_get_vendor_handoff_control_caps(struct wlan_objmgr_psoc *psoc);
406 #else
407 static inline bool
wlan_mlme_get_vendor_handoff_control_caps(struct wlan_objmgr_psoc * psoc)408 wlan_mlme_get_vendor_handoff_control_caps(struct wlan_objmgr_psoc *psoc)
409 {
410 return false;
411 }
412 #endif
413
414 /**
415 * wlan_mlme_set_dual_sta_policy() - Set the dual sta config
416 * @psoc: pointer to psoc object
417 * @dual_sta_config: Value to be set from the caller
418 *
419 * Return: QDF Status
420 */
421 QDF_STATUS wlan_mlme_set_dual_sta_policy(struct wlan_objmgr_psoc *psoc,
422 uint8_t dual_sta_config);
423
424 /**
425 * wlan_mlme_get_dual_sta_policy() - Get the dual sta policy
426 * @psoc: pointer to psoc object
427 * @dual_sta_config: Value to be set from the caller
428 *
429 * Return: QDF Status
430 */
431 QDF_STATUS wlan_mlme_get_dual_sta_policy(struct wlan_objmgr_psoc *psoc,
432 uint8_t *dual_sta_config);
433
434 /**
435 * wlan_mlme_convert_ap_policy_config() - Convert vendor attr ap policy
436 * config to host enum
437 * @ap_config: Value to convert
438 *
439 * Return: enum host_concurrent_ap_policy
440 */
441 enum host_concurrent_ap_policy
442 wlan_mlme_convert_ap_policy_config(
443 enum qca_wlan_concurrent_ap_policy_config ap_config);
444
445 /**
446 * wlan_mlme_set_ap_policy() - Set ap config policy value
447 * @vdev: pointer to vdev object
448 * @ap_cfg_policy: Value to be set from the caller
449 *
450 * Return: QDF Status
451 */
452 QDF_STATUS
453 wlan_mlme_set_ap_policy(struct wlan_objmgr_vdev *vdev,
454 enum host_concurrent_ap_policy ap_cfg_policy);
455
456 /**
457 * wlan_mlme_get_ap_policy() - Get ap config policy value
458 * @vdev: pointer to vdev object
459 *
460 * Return: enum host_concurrent_ap_policy
461 */
462 enum host_concurrent_ap_policy
463 wlan_mlme_get_ap_policy(struct wlan_objmgr_vdev *vdev);
464
465 /**
466 * wlan_mlme_ll_lt_sap_send_oce_flags_fw() - Send the oce flags to FW for
467 * ll_lt_sap
468 * @vdev: pointer to vdev object
469 *
470 * Return: void
471 */
472 void wlan_mlme_ll_lt_sap_send_oce_flags_fw(struct wlan_objmgr_vdev *vdev);
473
474 /**
475 * wlan_mlme_get_prevent_link_down() - Get the prevent link down config
476 * @psoc: pointer to psoc object
477 * @prevent_link_down: Pointer to the variable from caller
478 *
479 * Return: QDF Status
480 */
481 QDF_STATUS wlan_mlme_get_prevent_link_down(struct wlan_objmgr_psoc *psoc,
482 bool *prevent_link_down);
483
484 /**
485 * wlan_mlme_get_select_5ghz_margin() - Get the select 5Ghz margin config
486 * @psoc: pointer to psoc object
487 * @select_5ghz_margin: Pointer to the variable from caller
488 *
489 * Return: QDF Status
490 */
491 QDF_STATUS wlan_mlme_get_select_5ghz_margin(struct wlan_objmgr_psoc *psoc,
492 uint8_t *select_5ghz_margin);
493
494 /**
495 * wlan_mlme_get_rtt_mac_randomization() - Get the RTT MAC randomization config
496 * @psoc: pointer to psoc object
497 * @rtt_mac_randomization: Pointer to the variable from caller
498 *
499 * Return: QDF Status
500 */
501 QDF_STATUS wlan_mlme_get_rtt_mac_randomization(struct wlan_objmgr_psoc *psoc,
502 bool *rtt_mac_randomization);
503
504 /**
505 * wlan_mlme_get_crash_inject() - Get the crash inject config
506 * @psoc: pointer to psoc object
507 * @crash_inject: Pointer to the variable from caller
508 *
509 * Return: QDF Status
510 */
511 QDF_STATUS wlan_mlme_get_crash_inject(struct wlan_objmgr_psoc *psoc,
512 bool *crash_inject);
513
514 /**
515 * wlan_mlme_get_lpass_support() - Get the LPASS Support config
516 * @psoc: pointer to psoc object
517 * @lpass_support: Pointer to the variable from caller
518 *
519 * Return: QDF Status
520 */
521 QDF_STATUS wlan_mlme_get_lpass_support(struct wlan_objmgr_psoc *psoc,
522 bool *lpass_support);
523
524 /**
525 * wlan_mlme_get_wls_6ghz_cap() - Get the wifi location service(WLS)
526 * 6ghz capability
527 * @psoc: pointer to psoc object
528 * @wls_6ghz_capable: Pointer to the variable from caller
529 *
530 * Return: void
531 */
532 void wlan_mlme_get_wls_6ghz_cap(struct wlan_objmgr_psoc *psoc,
533 bool *wls_6ghz_capable);
534
535 /**
536 * wlan_mlme_get_self_recovery() - Get the self recovery config
537 * @psoc: pointer to psoc object
538 * @self_recovery: Pointer to the variable from caller
539 *
540 * Return: QDF Status
541 */
542 QDF_STATUS wlan_mlme_get_self_recovery(struct wlan_objmgr_psoc *psoc,
543 bool *self_recovery);
544
545 /**
546 * wlan_mlme_get_sub_20_chan_width() - Get the sub 20 chan width config
547 * @psoc: pointer to psoc object
548 * @sub_20_chan_width: Pointer to the variable from caller
549 *
550 * Return: QDF Status
551 */
552 QDF_STATUS wlan_mlme_get_sub_20_chan_width(struct wlan_objmgr_psoc *psoc,
553 uint8_t *sub_20_chan_width);
554
555 /**
556 * wlan_mlme_get_fw_timeout_crash() - Get the fw timeout crash config
557 * @psoc: pointer to psoc object
558 * @fw_timeout_crash: Pointer to the variable from caller
559 *
560 * Return: QDF Status
561 */
562 QDF_STATUS wlan_mlme_get_fw_timeout_crash(struct wlan_objmgr_psoc *psoc,
563 bool *fw_timeout_crash);
564
565 /**
566 * wlan_mlme_get_ito_repeat_count() - Get the fw timeout crash config
567 * @psoc: pointer to psoc object
568 * @ito_repeat_count: Pointer to the variable from caller
569 *
570 * Return: QDF Status
571 */
572 QDF_STATUS wlan_mlme_get_ito_repeat_count(struct wlan_objmgr_psoc *psoc,
573 uint8_t *ito_repeat_count);
574
575 /**
576 * wlan_mlme_get_acs_with_more_param() - Get the acs_with_more_param flag
577 * @psoc: pointer to psoc object
578 * @value: Value that needs to be set from the caller
579 *
580 * Return: QDF Status
581 */
582 QDF_STATUS wlan_mlme_get_acs_with_more_param(struct wlan_objmgr_psoc *psoc,
583 bool *value);
584
585 /**
586 * wlan_mlme_get_auto_channel_weight() - Get the auto channel weight
587 * @psoc: pointer to psoc object
588 * @value: Value that needs to be set from the caller
589 *
590 * Return: QDF Status
591 */
592 QDF_STATUS wlan_mlme_get_auto_channel_weight(struct wlan_objmgr_psoc *psoc,
593 uint32_t *value);
594
595 /**
596 * wlan_mlme_get_vendor_acs_support() - Get the vendor based channel selece
597 * @psoc: pointer to psoc object
598 * @value: Value that needs to be set from the caller
599 *
600 * Return: QDF Status
601 */
602
603 QDF_STATUS wlan_mlme_get_vendor_acs_support(struct wlan_objmgr_psoc *psoc,
604 bool *value);
605
606 /**
607 * wlan_mlme_get_acs_support_for_dfs_ltecoex() - Get the flag for
608 * acs support for dfs ltecoex
609 * @psoc: pointer to psoc object
610 * @value: Value that needs to be set from the caller
611 *
612 * Return: QDF Status
613 */
614 QDF_STATUS
615 wlan_mlme_get_acs_support_for_dfs_ltecoex(struct wlan_objmgr_psoc *psoc,
616 bool *value);
617
618 /**
619 * wlan_mlme_get_external_acs_policy() - Get the flag for external acs policy
620 * @psoc: pointer to psoc object
621 * @value: Value that needs to be set from the caller
622 *
623 * Return: QDF Status
624 */
625 QDF_STATUS
626 wlan_mlme_get_external_acs_policy(struct wlan_objmgr_psoc *psoc,
627 bool *value);
628
629 /**
630 * wlan_mlme_get_sap_inactivity_override() - Check if sap max inactivity
631 * override flag is set.
632 * @psoc: pointer to psoc object
633 * @value: Value that needs to be set from the caller
634 *
635 * Return: QDF Status
636 */
637 void wlan_mlme_get_sap_inactivity_override(struct wlan_objmgr_psoc *psoc,
638 bool *value);
639
640 /**
641 * wlan_mlme_get_ignore_peer_ht_mode() - Get the ignore peer ht opmode flag
642 * @psoc: pointer to psoc object
643 * @value: Value that needs to be set from the caller
644 *
645 * Return: QDF Status
646 */
647 QDF_STATUS wlan_mlme_get_ignore_peer_ht_mode(struct wlan_objmgr_psoc *psoc,
648 bool *value);
649 /**
650 * wlan_mlme_get_tx_chainmask_cck() - Get the tx_chainmask_cfg value
651 * @psoc: pointer to psoc object
652 * @value: Value that needs to be set from the caller
653 *
654 * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
655 */
656 QDF_STATUS wlan_mlme_get_tx_chainmask_cck(struct wlan_objmgr_psoc *psoc,
657 bool *value);
658
659 /**
660 * wlan_mlme_get_tx_chainmask_1ss() - Get the tx_chainmask_1ss value
661 * @psoc: pointer to psoc object
662 * @value: Value that caller needs to get
663 *
664 * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
665 */
666 QDF_STATUS wlan_mlme_get_tx_chainmask_1ss(struct wlan_objmgr_psoc *psoc,
667 uint8_t *value);
668
669 /**
670 * wlan_mlme_get_num_11b_tx_chains() - Get the number of 11b only tx chains
671 * @psoc: pointer to psoc object
672 * @value: Value that needs to be set from the caller
673 *
674 * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
675 */
676 QDF_STATUS wlan_mlme_get_num_11b_tx_chains(struct wlan_objmgr_psoc *psoc,
677 uint16_t *value);
678
679 /**
680 * wlan_mlme_get_num_11ag_tx_chains() - get the total number of 11a/g tx chains
681 * @psoc: pointer to psoc object
682 * @value: Value that caller needs to get
683 *
684 * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
685 */
686 QDF_STATUS wlan_mlme_get_num_11ag_tx_chains(struct wlan_objmgr_psoc *psoc,
687 uint16_t *value);
688
689 /**
690 * wlan_mlme_get_bt_chain_separation_flag() - get the enable_bt_chain_separation
691 * flag
692 * @psoc: pointer to psoc object
693 * @value: Value that needs to be set from the caller
694 *
695 * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
696 */
697 QDF_STATUS wlan_mlme_get_bt_chain_separation_flag(struct wlan_objmgr_psoc *psoc,
698 bool *value);
699 /**
700 * wlan_mlme_configure_chain_mask() - configure chainmask parameters
701 * @psoc: pointer to psoc object
702 * @session_id: vdev_id
703 *
704 * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
705 */
706 QDF_STATUS wlan_mlme_configure_chain_mask(struct wlan_objmgr_psoc *psoc,
707 uint8_t session_id);
708
709 /**
710 * wlan_mlme_is_chain_mask_supported() - check if configure chainmask can
711 * be supported
712 * @psoc: pointer to psoc object
713 *
714 * Return: true if supported else false
715 */
716 bool wlan_mlme_is_chain_mask_supported(struct wlan_objmgr_psoc *psoc);
717
718 /**
719 * wlan_mlme_get_listen_interval() - Get listen interval
720 * @psoc: pointer to psoc object
721 * @value: Pointer to value that needs to be filled by MLME
722 *
723 * Return: QDF Status
724 */
725 QDF_STATUS wlan_mlme_get_listen_interval(struct wlan_objmgr_psoc *psoc,
726 int *value);
727
728 /**
729 * wlan_mlme_set_sap_listen_interval() - Set the sap listen interval
730 * @psoc: pointer to psoc object
731 * @value: Value that needs to be set from the caller
732 *
733 * Return: QDF Status
734 */
735 QDF_STATUS wlan_mlme_set_sap_listen_interval(struct wlan_objmgr_psoc *psoc,
736 int value);
737
738 /**
739 * wlan_mlme_set_assoc_sta_limit() - Set the assoc sta limit
740 * @psoc: pointer to psoc object
741 * @value: Value that needs to be set from the caller
742 *
743 * Return: QDF Status
744 */
745 QDF_STATUS wlan_mlme_set_assoc_sta_limit(struct wlan_objmgr_psoc *psoc,
746 int value);
747
748 /**
749 * wlan_mlme_get_assoc_sta_limit() - Get the assoc sta limit
750 * @psoc: pointer to psoc object
751 * @value: Pointer to value that needs to be filled by MLME
752 *
753 * Return: QDF Status
754 */
755 QDF_STATUS wlan_mlme_get_assoc_sta_limit(struct wlan_objmgr_psoc *psoc,
756 int *value);
757
758 /**
759 * wlan_mlme_get_sap_get_peer_info() - get the sap get peer info
760 * @psoc: pointer to psoc object
761 * @value: Value that needs to be set from the caller
762 *
763 * Return: QDF Status
764 */
765 QDF_STATUS wlan_mlme_get_sap_get_peer_info(struct wlan_objmgr_psoc *psoc,
766 bool *value);
767
768 /**
769 * wlan_mlme_set_sap_get_peer_info() - set the sap get peer info
770 * @psoc: pointer to psoc object
771 * @value: value to overwrite the sap get peer info
772 *
773 * Return: QDF Status
774 */
775 QDF_STATUS wlan_mlme_set_sap_get_peer_info(struct wlan_objmgr_psoc *psoc,
776 bool value);
777
778 /**
779 * wlan_mlme_get_sap_bcast_deauth_enabled() - get the enable/disable value
780 * for broadcast deauth in sap
781 * @psoc: pointer to psoc object
782 * @value: Value that needs to get from the caller
783 *
784 * Return: QDF Status
785 */
786 QDF_STATUS
787 wlan_mlme_get_sap_bcast_deauth_enabled(struct wlan_objmgr_psoc *psoc,
788 bool *value);
789
790 /**
791 * wlan_mlme_get_sap_allow_all_channels() - get the value of sap allow all
792 * channels
793 * @psoc: pointer to psoc object
794 * @value: Value that needs to be set from the caller
795 *
796 * Return: QDF Status
797 */
798 QDF_STATUS wlan_mlme_get_sap_allow_all_channels(struct wlan_objmgr_psoc *psoc,
799 bool *value);
800
801 /**
802 * wlan_mlme_is_6g_sap_fd_enabled() - get the enable/disable value
803 * for 6g sap fils discovery
804 * @psoc: pointer to psoc object
805 * @value: Value that needs to get from the caller
806 *
807 * Return: QDF Status
808 */
809 QDF_STATUS
810 wlan_mlme_is_6g_sap_fd_enabled(struct wlan_objmgr_psoc *psoc,
811 bool *value);
812
813 /**
814 * wlan_mlme_get_sap_max_peers() - get the value sap max peers
815 * @psoc: pointer to psoc object
816 * @value: Value that needs to be set from the caller
817 *
818 * Return: QDF Status
819 */
820 QDF_STATUS wlan_mlme_get_sap_max_peers(struct wlan_objmgr_psoc *psoc,
821 int *value);
822
823 /**
824 * wlan_mlme_set_sap_max_peers() - set the value sap max peers
825 * @psoc: pointer to psoc object
826 * @value: Value that needs to be set from the caller
827 *
828 * Return: QDF Status
829 */
830 QDF_STATUS wlan_mlme_set_sap_max_peers(struct wlan_objmgr_psoc *psoc,
831 int value);
832
833 /**
834 * wlan_mlme_get_sap_max_offload_peers() - get the value sap max offload peers
835 * @psoc: pointer to psoc object
836 * @value: Value that needs to be set from the caller
837 *
838 * Return: QDF Status
839 */
840 QDF_STATUS wlan_mlme_get_sap_max_offload_peers(struct wlan_objmgr_psoc *psoc,
841 int *value);
842
843 /**
844 * wlan_mlme_get_sap_max_offload_reorder_buffs() - get the value sap max offload
845 * reorder buffs.
846 * @psoc: pointer to psoc object
847 * @value: Value that needs to be set from the caller
848 *
849 * Return: QDF Status
850 */
851 QDF_STATUS wlan_mlme_get_sap_max_offload_reorder_buffs(struct wlan_objmgr_psoc
852 *psoc, int *value);
853
854 /**
855 * wlan_mlme_get_sap_chn_switch_bcn_count() - get the value sap max channel
856 * switch beacon count
857 * @psoc: pointer to psoc object
858 * @value: Value that needs to be set from the caller
859 *
860 * Return: QDF Status
861 */
862 QDF_STATUS wlan_mlme_get_sap_chn_switch_bcn_count(struct wlan_objmgr_psoc *psoc,
863 int *value);
864
865 /**
866 * wlan_mlme_get_sap_chn_switch_mode() - get the sap channel
867 * switch mode
868 * @psoc: pointer to psoc object
869 * @value: Value that needs to be set from the caller
870 *
871 * Return: QDF Status
872 */
873 QDF_STATUS wlan_mlme_get_sap_chn_switch_mode(struct wlan_objmgr_psoc *psoc,
874 bool *value);
875
876 /**
877 * wlan_mlme_get_sap_internal_restart() - get the sap internal
878 * restart
879 * @psoc: pointer to psoc object
880 * @value: Value that needs to be set from the caller
881 *
882 * Return: QDF Status
883 */
884 QDF_STATUS wlan_mlme_get_sap_internal_restart(struct wlan_objmgr_psoc *psoc,
885 bool *value);
886 /**
887 * wlan_mlme_get_sap_max_modulated_dtim() - get the max modulated dtim
888 * restart
889 * @psoc: pointer to psoc object
890 * @value: Value that needs to be set from the caller
891 *
892 * Return: QDF Status
893 */
894 QDF_STATUS wlan_mlme_get_sap_max_modulated_dtim(struct wlan_objmgr_psoc *psoc,
895 uint8_t *value);
896
897 /**
898 * wlan_mlme_get_sap_chan_pref_location() - get the sap chan pref location
899 * restart
900 * @psoc: pointer to psoc object
901 * @value: Value that needs to be set from the caller
902 *
903 * Return: QDF Status
904 */
905 QDF_STATUS wlan_mlme_get_sap_chan_pref_location(struct wlan_objmgr_psoc *psoc,
906 uint8_t *value);
907
908 /**
909 * wlan_mlme_get_sap_country_priority() - get the sap country code priority
910 * restart
911 * @psoc: pointer to psoc object
912 * @value: Value that needs to be set from the caller
913 *
914 * Return: QDF Status
915 */
916 QDF_STATUS wlan_mlme_get_sap_country_priority(struct wlan_objmgr_psoc *psoc,
917 bool *value);
918
919 /**
920 * wlan_mlme_get_sap_reduced_beacon_interval() - get the sap reduced
921 * beacon interval
922 * @psoc: pointer to psoc object
923 * @value: Value that needs to be set from the caller
924 *
925 * Return: QDF Status
926 */
927 QDF_STATUS wlan_mlme_get_sap_reduced_beacon_interval(struct wlan_objmgr_psoc
928 *psoc, int *value);
929
930 /**
931 * wlan_mlme_get_sap_chan_switch_rate_enabled() - get the sap rate hostapd
932 * enabled beacon interval
933 * @psoc: pointer to psoc object
934 * @value: Value that needs to be set from the caller
935 *
936 * Return: QDF Status
937 */
938 QDF_STATUS wlan_mlme_get_sap_chan_switch_rate_enabled(struct wlan_objmgr_psoc
939 *psoc, bool *value);
940
941 /**
942 * wlan_mlme_get_sap_force_11n_for_11ac() - get the sap 11n for 11ac
943 * @psoc: pointer to psoc object
944 * @value: Value that needs to be set from the caller
945 *
946 * Return: QDF Status
947 */
948 QDF_STATUS wlan_mlme_get_sap_force_11n_for_11ac(struct wlan_objmgr_psoc
949 *psoc, bool *value);
950
951 /**
952 * wlan_mlme_get_go_force_11n_for_11ac() - get the go 11n for 11ac
953 * @psoc: pointer to psoc object
954 * @value: Value that needs to be set from the caller
955 *
956 * Return: QDF Status
957 */
958 QDF_STATUS wlan_mlme_get_go_force_11n_for_11ac(struct wlan_objmgr_psoc
959 *psoc, bool *value);
960
961 /**
962 * wlan_mlme_is_go_11ac_override() - Override 11ac bandwdith for P2P GO
963 * @psoc: pointer to psoc object
964 * @value: pointer to the value which will be filled for the caller
965 *
966 * Return: QDF Status
967 */
968 QDF_STATUS wlan_mlme_is_go_11ac_override(struct wlan_objmgr_psoc *psoc,
969 bool *value);
970
971 /**
972 * wlan_mlme_is_sap_11ac_override() - Override 11ac bandwdith for SAP
973 * @psoc: pointer to psoc object
974 * @value: pointer to the value which will be filled for the caller
975 *
976 * Return: QDF Status
977 */
978 QDF_STATUS wlan_mlme_is_sap_11ac_override(struct wlan_objmgr_psoc *psoc,
979 bool *value);
980
981 /**
982 * wlan_mlme_set_go_11ac_override() - set override 11ac bandwdith for P2P GO
983 * @psoc: pointer to psoc object
984 * @value: pointer to the value which will be filled for the caller
985 *
986 * Return: QDF Status
987 */
988 QDF_STATUS wlan_mlme_set_go_11ac_override(struct wlan_objmgr_psoc *psoc,
989 bool value);
990
991 /**
992 * wlan_mlme_set_sap_11ac_override() - set override 11ac bandwdith for SAP
993 * @psoc: pointer to psoc object
994 * @value: pointer to the value which will be filled for the caller
995 *
996 * Return: QDF Status
997 */
998 QDF_STATUS wlan_mlme_set_sap_11ac_override(struct wlan_objmgr_psoc *psoc,
999 bool value);
1000
1001 /**
1002 * wlan_mlme_get_oce_sta_enabled_info() - Get the OCE feature enable
1003 * info for STA
1004 * @psoc: pointer to psoc object
1005 * @value: pointer to the value which will be filled for the caller
1006 *
1007 * Return: QDF Status
1008 */
1009 QDF_STATUS wlan_mlme_get_oce_sta_enabled_info(struct wlan_objmgr_psoc *psoc,
1010 bool *value);
1011
1012 /**
1013 * wlan_mlme_get_bigtk_support() - Get the BIGTK support
1014 * @psoc: pointer to psoc object
1015 * @value: pointer to the value which will be filled for the caller
1016 *
1017 * Return: QDF Status
1018 */
1019 QDF_STATUS wlan_mlme_get_bigtk_support(struct wlan_objmgr_psoc *psoc,
1020 bool *value);
1021
1022 /**
1023 * wlan_mlme_get_ocv_support() - Get the OCV support
1024 * @psoc: pointer to psoc object
1025 * @value: pointer to the value which will be filled for the caller
1026 *
1027 * Return: QDF Status
1028 */
1029 QDF_STATUS wlan_mlme_get_ocv_support(struct wlan_objmgr_psoc *psoc,
1030 bool *value);
1031
1032 /**
1033 * wlan_mlme_get_host_scan_abort_support() - Get support for stop all host
1034 * scans service capability.
1035 * @psoc: PSOC object pointer
1036 *
1037 * Return: True if capability is supported, else False
1038 */
1039 bool wlan_mlme_get_host_scan_abort_support(struct wlan_objmgr_psoc *psoc);
1040
1041 /**
1042 * wlan_mlme_get_dual_sta_roam_support - Get support for dual sta roaming
1043 * feature
1044 * @psoc: PSOC object pointer
1045 *
1046 * Return: True if capability is supported, else False
1047 */
1048 bool wlan_mlme_get_dual_sta_roam_support(struct wlan_objmgr_psoc *psoc);
1049
1050 /**
1051 * wlan_mlme_get_oce_sap_enabled_info() - Get the OCE feature enable
1052 * info for SAP
1053 * @psoc: pointer to psoc object
1054 * @value: pointer to the value which will be filled for the caller
1055 *
1056 * Return: QDF Status
1057 */
1058 QDF_STATUS wlan_mlme_get_oce_sap_enabled_info(struct wlan_objmgr_psoc *psoc,
1059 bool *value);
1060
1061 /**
1062 * wlan_mlme_update_oce_flags() - Update the oce flags to FW
1063 * @pdev: pointer to pdev object
1064 *
1065 * Return: void
1066 */
1067 void wlan_mlme_update_oce_flags(struct wlan_objmgr_pdev *pdev);
1068
1069 /**
1070 * wlan_mlme_cfg_get_aux_supported_modes() - get supported mode of aux.
1071 * definition of bitmap refer WMI_AUX_DEV_CAPS_SUPPORTED_MODE.
1072 *
1073 * @psoc: pointer to psoc object
1074 * @aux_index: aux index, current only support aux0.
1075 * @hw_mode_id: hw mode id
1076 * @supported_modes_bitmap: output for value
1077 *
1078 * Return: true for getting value. false for failure check.
1079 */
1080 bool wlan_mlme_cfg_get_aux_supported_modes(
1081 struct wlan_objmgr_psoc *psoc,
1082 uint32_t aux_index,
1083 enum wlan_mlme_hw_mode_config_type hw_mode_id,
1084 uint32_t *supported_modes_bitmap);
1085
1086 /**
1087 * wlan_mlme_is_aux_scan_support() - check whether aux scan is supported.
1088 * @psoc: pointer to psoc object
1089 * @hw_mode_id: hw mode id
1090 *
1091 * Return: true if supporting, else false
1092 */
1093 bool
1094 wlan_mlme_is_aux_scan_support(struct wlan_objmgr_psoc *psoc,
1095 enum wlan_mlme_hw_mode_config_type hw_mode_id);
1096
1097 /**
1098 * wlan_mlme_is_aux_listen_support() - check whether aux listen is supported.
1099 * @psoc: pointer to psoc object
1100 * @hw_mode_id: hw mode id
1101 *
1102 * Return: true if supporting, else false
1103 */
1104 bool
1105 wlan_mlme_is_aux_listen_support(struct wlan_objmgr_psoc *psoc,
1106 enum wlan_mlme_hw_mode_config_type hw_mode_id);
1107
1108 /**
1109 * wlan_mlme_is_aux_emlsr_support() - check whether aux emlsr is supported.
1110 * @psoc: pointer to psoc object
1111 * @hw_mode_id: hw mode id
1112 *
1113 * Return: true if supporting, else false
1114 */
1115 bool
1116 wlan_mlme_is_aux_emlsr_support(struct wlan_objmgr_psoc *psoc,
1117 enum wlan_mlme_hw_mode_config_type hw_mode_id);
1118
1119 #ifdef WLAN_FEATURE_11AX
1120 /**
1121 * wlan_mlme_cfg_get_he_ul_mumimo() - Get the HE Ul Mumio
1122 * @psoc: pointer to psoc object
1123 * @value: Value that needs to be set from the caller
1124 *
1125 * Return: QDF Status
1126 */
1127 QDF_STATUS wlan_mlme_cfg_get_he_ul_mumimo(struct wlan_objmgr_psoc *psoc,
1128 uint32_t *value);
1129
1130 /**
1131 * wlan_mlme_cfg_set_he_ul_mumimo() - Set the HE Ul Mumio
1132 * @psoc: pointer to psoc object
1133 * @value: Value that needs to be set from the caller
1134 *
1135 * Return: QDF Status
1136 */
1137 QDF_STATUS wlan_mlme_cfg_set_he_ul_mumimo(struct wlan_objmgr_psoc *psoc,
1138 uint32_t value);
1139
1140 /**
1141 * mlme_cfg_get_he_caps() - Get the HE capability info
1142 * @psoc: pointer to psoc object
1143 * @he_cap: Caps that needs to be filled.
1144 *
1145 * Return: QDF Status
1146 */
1147 QDF_STATUS mlme_cfg_get_he_caps(struct wlan_objmgr_psoc *psoc,
1148 tDot11fIEhe_cap *he_cap);
1149
1150 /**
1151 * wlan_mlme_cfg_get_enable_ul_mimo() - Get the HE Ul mimo
1152 * @psoc: pointer to psoc object
1153 * @value: Value that needs to be set from the caller
1154 *
1155 * Return: QDF Status
1156 */
1157 QDF_STATUS wlan_mlme_cfg_get_enable_ul_mimo(struct wlan_objmgr_psoc *psoc,
1158 uint8_t *value);
1159
1160 /**
1161 * wlan_mlme_cfg_get_enable_ul_ofdm() - Get enable ul ofdm
1162 * @psoc: pointer to psoc object
1163 * @value: Value that needs to be set from the caller
1164 *
1165 * Return: QDF Status
1166 */
1167 QDF_STATUS wlan_mlme_cfg_get_enable_ul_ofdm(struct wlan_objmgr_psoc *psoc,
1168 uint8_t *value);
1169
1170 /**
1171 * mlme_update_tgt_he_caps_in_cfg() - Update tgt he cap in mlme component
1172 * @psoc: pointer to psoc object
1173 * @cfg: pointer to config params from target
1174 *
1175 * This api to be used by callers to update
1176 * he caps in mlme.
1177 *
1178 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
1179 */
1180 QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
1181 struct wma_tgt_cfg *cfg);
1182 #endif
1183
1184 /**
1185 * wlan_mlme_convert_vht_op_bw_to_phy_ch_width() - convert channel width in VHT
1186 * operation IE to phy_ch_width
1187 * @channel_width: channel width in VHT operation IE.
1188 * @chan_id: channel id
1189 * @ccfs0: channel center frequency segment 0
1190 * @ccfs1: channel center frequency segment 1
1191 *
1192 * Return: phy_ch_width
1193 */
1194 enum phy_ch_width
1195 wlan_mlme_convert_vht_op_bw_to_phy_ch_width(uint8_t channel_width,
1196 uint8_t chan_id,
1197 uint8_t ccfs0,
1198 uint8_t ccfs1);
1199
1200 /**
1201 * wlan_mlme_convert_he_6ghz_op_bw_to_phy_ch_width() - convert channel width in
1202 * he 6ghz peration IE to phy_ch_width
1203 * @channel_width: channel width in HE operation IE.
1204 * @chan_id: channel id
1205 * @ccfs0: channel center frequency segment 0
1206 * @ccfs1: channel center frequency segment 1
1207 *
1208 * Return: phy_ch_width
1209 */
1210 enum phy_ch_width
1211 wlan_mlme_convert_he_6ghz_op_bw_to_phy_ch_width(uint8_t channel_width,
1212 uint8_t chan_id,
1213 uint8_t ccfs0,
1214 uint8_t ccfs1);
1215
1216 /**
1217 * wlan_mlme_chan_stats_scan_event_cb() - process connected channel stats
1218 * scan event
1219 * @vdev: pointer to vdev object
1220 * @event: scan event definition
1221 * @arg: scan argument
1222 *
1223 * Return: none
1224 */
1225 void wlan_mlme_chan_stats_scan_event_cb(struct wlan_objmgr_vdev *vdev,
1226 struct scan_event *event, void *arg);
1227
1228 /**
1229 * wlan_mlme_send_ch_width_update_with_notify() - update connected VDEV
1230 * channel bandwidth
1231 * @psoc: pointer to psoc object
1232 * @vdev: pointer to vdev object
1233 * @link_id: mlo link id
1234 * @ch_width: channel width to update
1235 *
1236 * Return: none
1237 */
1238 QDF_STATUS
1239 wlan_mlme_send_ch_width_update_with_notify(struct wlan_objmgr_psoc *psoc,
1240 struct wlan_objmgr_vdev *vdev,
1241 uint8_t link_id,
1242 enum phy_ch_width ch_width);
1243
1244 /**
1245 * wlan_mlme_update_bss_rate_flags() - update bss rate flag as per new channel
1246 * width
1247 * @psoc: pointer to psoc object
1248 * @vdev_id: Vdev id
1249 * @cw: channel width to update
1250 * @eht_present: connected bss is eht capable or not
1251 * @he_present: connected bss is he capable or not
1252 * @vht_present: connected bss is vht capable or not
1253 * @ht_present: connected bss is ht capable or not
1254 *
1255 * Return: QDF_STATUS
1256 */
1257 QDF_STATUS wlan_mlme_update_bss_rate_flags(struct wlan_objmgr_psoc *psoc,
1258 uint8_t vdev_id,
1259 enum phy_ch_width cw,
1260 uint8_t eht_present,
1261 uint8_t he_present,
1262 uint8_t vht_present,
1263 uint8_t ht_present);
1264
1265 #ifdef WLAN_FEATURE_11BE
1266 /**
1267 * mlme_update_tgt_eht_caps_in_cfg() - Update tgt eht cap in mlme component
1268 * @psoc: pointer to psoc object
1269 * @cfg: pointer to config params from target
1270 *
1271 * This api to be used by callers to update EHT caps in mlme.
1272 *
1273 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
1274 */
1275 QDF_STATUS mlme_update_tgt_eht_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
1276 struct wma_tgt_cfg *cfg);
1277
1278 /**
1279 * mlme_update_tgt_mlo_caps_in_cfg() - Update tgt MLO cap in mlme component
1280 * @psoc: pointer to psoc object
1281 *
1282 * This api to be used by callers to update MLO caps in mlme.
1283 *
1284 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
1285 */
1286 QDF_STATUS mlme_update_tgt_mlo_caps_in_cfg(struct wlan_objmgr_psoc *psoc);
1287
1288 /**
1289 * wlan_mlme_convert_eht_op_bw_to_phy_ch_width() - convert channel width in eht
1290 * operation IE to phy_ch_width
1291 * @channel_width: channel width in eht operation IE
1292 *
1293 * Return: phy_ch_width
1294 */
1295 enum phy_ch_width wlan_mlme_convert_eht_op_bw_to_phy_ch_width(
1296 uint8_t channel_width);
1297
1298 /**
1299 * wlan_mlme_convert_phy_ch_width_to_eht_op_bw() - convert channel width to eht
1300 * operation IE format
1301 * @ch_width: phy_ch_width
1302 *
1303 * Return: channel width in eht operation IE
1304 */
1305 uint8_t wlan_mlme_convert_phy_ch_width_to_eht_op_bw(enum phy_ch_width ch_width);
1306
1307 /**
1308 * wlan_mlme_get_epcs_capability() - Get mlme epcs capability flag
1309 * @psoc: psoc object
1310 *
1311 * Return: true if epcs capability enabled
1312 */
1313 bool wlan_mlme_get_epcs_capability(struct wlan_objmgr_psoc *psoc);
1314
1315 /**
1316 * wlan_mlme_set_epcs_capability() - Set mlme epcs capability flag
1317 * @psoc: psoc object
1318 * @flag: epcs capability flag
1319 *
1320 * Return: void
1321 */
1322 void wlan_mlme_set_epcs_capability(struct wlan_objmgr_psoc *psoc, bool flag);
1323
1324 /**
1325 * wlan_mlme_get_usr_disable_sta_eht() - Get user disable sta eht flag
1326 * @psoc: psoc object
1327 *
1328 * Return: true if user has disabled eht in connect request
1329 */
1330 bool wlan_mlme_get_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc);
1331
1332 /**
1333 * wlan_mlme_set_usr_disable_sta_eht() - Set user disable sta eht flag
1334 * @psoc: psoc object
1335 * @disable: eht disable flag
1336 *
1337 * Return: void
1338 */
1339 void wlan_mlme_set_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc,
1340 bool disable);
1341
1342 /**
1343 * wlan_mlme_get_eht_disable_punct_in_us_lpi() - Get disable eht punct in us
1344 * lpi mode flag.
1345 * @psoc: psoc object
1346 *
1347 * Return: true if eht punct disabled in us lpi mode
1348 */
1349 bool wlan_mlme_get_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc *psoc);
1350
1351 /**
1352 * wlan_mlme_set_eht_disable_punct_in_us_lpi() - Set disable eht punct in us
1353 * lpi mode flag.
1354 * @psoc: psoc object
1355 * @flag: true if eht punct disabled in us lpi mode
1356 *
1357 * Return: void
1358 */
1359 void wlan_mlme_set_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc *psoc,
1360 bool flag);
1361 /**
1362 * wlan_mlme_update_bw_no_punct() - update connected VDEV
1363 * channel bandwidth without puncture bitmap for FCC requirement
1364 * @psoc: pointer to SOC object
1365 * @vdev_id: vdev id
1366 *
1367 * Return: none
1368 */
1369 QDF_STATUS
1370 wlan_mlme_update_bw_no_punct(struct wlan_objmgr_psoc *psoc,
1371 uint8_t vdev_id);
1372
1373 /**
1374 * wlan_mlme_get_bw_no_punct() - Get connected VDEV
1375 * channel bandwidth without puncture bitmap for FCC requirement
1376 * @psoc: pointer to SOC object
1377 * @vdev: pointer to vdev
1378 * @bss_chan: bss chan with puncture
1379 * @new_ch_width: pointer to new channel bandwidth without puncture
1380 * Return: none
1381 */
1382 QDF_STATUS
1383 wlan_mlme_get_bw_no_punct(struct wlan_objmgr_psoc *psoc,
1384 struct wlan_objmgr_vdev *vdev,
1385 struct wlan_channel *bss_chan,
1386 enum phy_ch_width *new_ch_width);
1387 #else
1388 static inline
wlan_mlme_get_epcs_capability(struct wlan_objmgr_psoc * psoc)1389 bool wlan_mlme_get_epcs_capability(struct wlan_objmgr_psoc *psoc)
1390 {
1391 return false;
1392 }
1393
1394 static inline
wlan_mlme_set_epcs_capability(struct wlan_objmgr_psoc * psoc,bool flag)1395 void wlan_mlme_set_epcs_capability(struct wlan_objmgr_psoc *psoc, bool flag)
1396 {
1397 }
1398
1399 static inline
wlan_mlme_get_usr_disable_sta_eht(struct wlan_objmgr_psoc * psoc)1400 bool wlan_mlme_get_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc)
1401 {
1402 return true;
1403 }
1404
1405 static inline
wlan_mlme_set_usr_disable_sta_eht(struct wlan_objmgr_psoc * psoc,bool disable)1406 void wlan_mlme_set_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc,
1407 bool disable)
1408 {
1409 }
1410
1411 static inline
wlan_mlme_get_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc * psoc)1412 bool wlan_mlme_get_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc *psoc)
1413 {
1414 return false;
1415 }
1416
1417 static inline
wlan_mlme_set_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc * psoc,bool flag)1418 void wlan_mlme_set_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc *psoc,
1419 bool flag)
1420 {
1421 }
1422
1423 static inline QDF_STATUS
wlan_mlme_update_bw_no_punct(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)1424 wlan_mlme_update_bw_no_punct(struct wlan_objmgr_psoc *psoc,
1425 uint8_t vdev_id)
1426 {
1427 return QDF_STATUS_E_INVAL;
1428 }
1429
1430 static inline QDF_STATUS
wlan_mlme_get_bw_no_punct(struct wlan_objmgr_psoc * psoc,struct wlan_objmgr_vdev * vdev,struct wlan_channel * bss_chan,enum phy_ch_width * new_ch_width)1431 wlan_mlme_get_bw_no_punct(struct wlan_objmgr_psoc *psoc,
1432 struct wlan_objmgr_vdev *vdev,
1433 struct wlan_channel *bss_chan,
1434 enum phy_ch_width *new_ch_width)
1435 {
1436 return QDF_STATUS_E_INVAL;
1437 }
1438 #endif
1439
1440 /**
1441 * wlan_mlme_is_ap_prot_enabled() - check if sap protection is enabled
1442 * @psoc: pointer to psoc object
1443 *
1444 * Return: is_ap_prot_enabled flag
1445 */
1446 bool wlan_mlme_is_ap_prot_enabled(struct wlan_objmgr_psoc *psoc);
1447
1448 /**
1449 * wlan_mlme_get_ap_protection_mode() - Get ap_protection_mode value
1450 * @psoc: pointer to psoc object
1451 * @value: pointer to the value which needs to be filled for the caller
1452 *
1453 * Return: QDF Status
1454 */
1455 QDF_STATUS wlan_mlme_get_ap_protection_mode(struct wlan_objmgr_psoc *psoc,
1456 uint16_t *value);
1457
1458 /**
1459 * wlan_mlme_is_ap_obss_prot_enabled() - Get ap_obss_protection is
1460 * enabled/disabled
1461 * @psoc: pointer to psoc object
1462 * @value: pointer to the value which needs to be filled for the caller
1463 *
1464 * Return: QDF Status
1465 */
1466 QDF_STATUS wlan_mlme_is_ap_obss_prot_enabled(struct wlan_objmgr_psoc *psoc,
1467 bool *value);
1468
1469 /**
1470 * wlan_mlme_get_rts_threshold() - Get the RTS threshold config
1471 * @psoc: pointer to psoc object
1472 * @value: pointer to the value which will be filled for the caller
1473 *
1474 * Return: QDF Status
1475 */
1476 QDF_STATUS wlan_mlme_get_rts_threshold(struct wlan_objmgr_psoc *psoc,
1477 uint32_t *value);
1478
1479 /**
1480 * wlan_mlme_set_rts_threshold() - Set the RTS threshold config
1481 * @psoc: pointer to psoc object
1482 * @value: Value that needs to be set from the caller
1483 *
1484 * Return: QDF Status
1485 */
1486 QDF_STATUS wlan_mlme_set_rts_threshold(struct wlan_objmgr_psoc *psoc,
1487 uint32_t value);
1488
1489 /**
1490 * wlan_mlme_get_frag_threshold() - Get the Fragmentation threshold
1491 * config
1492 * @psoc: pointer to psoc object
1493 * @value: pointer to the value which will be filled for the caller
1494 *
1495 * Return: QDF Status
1496 */
1497 QDF_STATUS wlan_mlme_get_frag_threshold(struct wlan_objmgr_psoc *psoc,
1498 uint32_t *value);
1499
1500 /**
1501 * wlan_mlme_set_frag_threshold() - Set the Fragmentation threshold
1502 * config
1503 * @psoc: pointer to psoc object
1504 * @value: Value that needs to be set from the caller
1505 *
1506 * Return: QDF Status
1507 */
1508 QDF_STATUS wlan_mlme_set_frag_threshold(struct wlan_objmgr_psoc *psoc,
1509 uint32_t value);
1510
1511 /**
1512 * wlan_mlme_get_fils_enabled_info() - Get the fils enable info for driver
1513 * @psoc: pointer to psoc object
1514 * @value: pointer to the value which will be filled for the caller
1515 *
1516 * Return: QDF Status
1517 */
1518 QDF_STATUS wlan_mlme_get_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
1519 bool *value);
1520 /**
1521 * wlan_mlme_set_fils_enabled_info() - Set the fils enable info for driver
1522 * @psoc: pointer to psoc object
1523 * @value: value that needs to be set from the caller
1524 *
1525 * Return: QDF Status
1526 */
1527 QDF_STATUS wlan_mlme_set_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
1528 bool value);
1529
1530 /**
1531 * wlan_mlme_set_primary_interface() - Set the primary iface id for driver
1532 * @psoc: pointer to psoc object
1533 * @value: value that needs to be set from the caller
1534 *
1535 * When a vdev is set as primary then based on the dual sta policy
1536 * "qca_wlan_concurrent_sta_policy_config" mcc preference and roaming has
1537 * to be enabled on the primary vdev
1538 *
1539 * Return: QDF Status
1540 */
1541 QDF_STATUS wlan_mlme_set_primary_interface(struct wlan_objmgr_psoc *psoc,
1542 uint8_t value);
1543
1544 /**
1545 * wlan_mlme_set_default_primary_iface() - Set the default primary iface id
1546 * for driver
1547 * @psoc: pointer to psoc object
1548 *
1549 * Return: QDF Status
1550 */
1551 QDF_STATUS wlan_mlme_set_default_primary_iface(struct wlan_objmgr_psoc *psoc);
1552
1553 /**
1554 * wlan_mlme_is_primary_interface_configured() - Check if primary iface is set
1555 * @psoc: pointer to psoc object
1556 *
1557 * Check if primary iface is configured from userspace through vendor command.
1558 * Return true if it's configured. If it's not configured, default value would
1559 * be 0xFF and return false then.
1560 *
1561 * Return: True or False
1562 */
1563 bool wlan_mlme_is_primary_interface_configured(struct wlan_objmgr_psoc *psoc);
1564
1565 /**
1566 * wlan_mlme_peer_get_assoc_rsp_ies() - Get the assoc response IEs of peer
1567 * @peer: WLAN peer objmgr
1568 * @ie_buf: Pointer to IE buffer
1569 * @ie_len: Length of the IE buffer
1570 *
1571 * Get the pointer to assoc response IEs of the peer from MLME
1572 * and length of the IE buffer.
1573 *
1574 * Return: QDF_STATUS
1575 */
1576 QDF_STATUS wlan_mlme_peer_get_assoc_rsp_ies(struct wlan_objmgr_peer *peer,
1577 const uint8_t **ie_buf,
1578 size_t *ie_len);
1579
1580 /**
1581 * wlan_mlme_get_mcc_duty_cycle_percentage() - Get primary STA iface duty
1582 * cycle percentage
1583 * @pdev: pointer to pdev object
1584 *
1585 * API to get the MCC duty cycle for primary and secondary STA's
1586 *
1587 * Return: primary iface quota on success
1588 */
1589 int wlan_mlme_get_mcc_duty_cycle_percentage(struct wlan_objmgr_pdev *pdev);
1590
1591 /**
1592 * wlan_mlme_get_tl_delayed_trgr_frm_int() - Get delay interval(in ms)
1593 * of UAPSD auto trigger
1594 * @psoc: pointer to psoc object
1595 * @value: Value that needs to be set from the caller
1596 *
1597 * Return: None
1598 */
1599 void wlan_mlme_get_tl_delayed_trgr_frm_int(struct wlan_objmgr_psoc *psoc,
1600 uint32_t *value);
1601
1602 /**
1603 * wlan_mlme_get_wmm_dir_ac_vi() - Get TSPEC direction
1604 * for VI
1605 * @psoc: pointer to psoc object
1606 * @value: Value that needs to be set from the caller
1607 *
1608 * Return: QDF Status
1609 */
1610 QDF_STATUS
1611 wlan_mlme_get_wmm_dir_ac_vi(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1612
1613 /**
1614 * wlan_mlme_get_wmm_nom_msdu_size_ac_vi() - Get normal
1615 * MSDU size for VI
1616 * @psoc: pointer to psoc object
1617 * @value: Value that needs to be set from the caller
1618 *
1619 * Return: QDF Status
1620 */
1621 QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_vi(struct wlan_objmgr_psoc *psoc,
1622 uint16_t *value);
1623
1624 /**
1625 * wlan_mlme_get_wmm_mean_data_rate_ac_vi() - mean data
1626 * rate for VI
1627 * @psoc: pointer to psoc object
1628 * @value: Value that needs to be set from the caller
1629 *
1630 * Return: QDF Status
1631 */
1632 QDF_STATUS
1633 wlan_mlme_get_wmm_mean_data_rate_ac_vi(struct wlan_objmgr_psoc *psoc,
1634 uint32_t *value);
1635
1636 /**
1637 * wlan_mlme_get_wmm_min_phy_rate_ac_vi() - min PHY
1638 * rate for VI
1639 * @psoc: pointer to psoc object
1640 * @value: Value that needs to be set from the caller
1641 *
1642 * Return: QDF Status
1643 */
1644 QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_vi(struct wlan_objmgr_psoc *psoc,
1645 uint32_t *value);
1646
1647 /**
1648 * wlan_mlme_get_wmm_sba_ac_vi() - surplus bandwidth
1649 * allowance for VI
1650 * @psoc: pointer to psoc object
1651 * @value: Value that needs to be set from the caller
1652 *
1653 * Return: QDF Status
1654 */
1655 QDF_STATUS
1656 wlan_mlme_get_wmm_sba_ac_vi(struct wlan_objmgr_psoc *psoc, uint16_t *value);
1657
1658 /**
1659 * wlan_mlme_get_wmm_uapsd_vi_srv_intv() - Get Uapsd service
1660 * interval for video
1661 * @psoc: pointer to psoc object
1662 * @value: pointer to the value which will be filled for the caller
1663 *
1664 * Return: QDF Status
1665 */
1666 QDF_STATUS
1667 wlan_mlme_get_wmm_uapsd_vi_srv_intv(struct wlan_objmgr_psoc *psoc,
1668 uint32_t *value);
1669
1670 /**
1671 * wlan_mlme_get_wmm_uapsd_vi_sus_intv() - Get Uapsd suspension
1672 * interval for video
1673 * @psoc: pointer to psoc object
1674 * @value: pointer to the value which will be filled for the caller
1675 *
1676 * Return: QDF Status
1677 */
1678 QDF_STATUS
1679 wlan_mlme_get_wmm_uapsd_vi_sus_intv(struct wlan_objmgr_psoc *psoc,
1680 uint32_t *value);
1681
1682 /**
1683 * wlan_mlme_get_wmm_dir_ac_be() - Get TSPEC direction
1684 * for BE
1685 * @psoc: pointer to psoc object
1686 * @value: Value that needs to be set from the caller
1687 *
1688 * Return: QDF Status
1689 */
1690 QDF_STATUS
1691 wlan_mlme_get_wmm_dir_ac_be(struct wlan_objmgr_psoc *psoc,
1692 uint8_t *value);
1693
1694 /**
1695 * wlan_mlme_get_wmm_nom_msdu_size_ac_be() - Get normal
1696 * MSDU size for BE
1697 * @psoc: pointer to psoc object
1698 * @value: Value that needs to be set from the caller
1699 *
1700 * Return: QDF Status
1701 */
1702 QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_be(struct wlan_objmgr_psoc *psoc,
1703 uint16_t *value);
1704
1705 /**
1706 * wlan_mlme_get_wmm_mean_data_rate_ac_be() - mean data
1707 * rate for BE
1708 * @psoc: pointer to psoc object
1709 * @value: Value that needs to be set from the caller
1710 *
1711 * Return: QDF Status
1712 */
1713 QDF_STATUS wlan_mlme_get_wmm_mean_data_rate_ac_be(struct wlan_objmgr_psoc *psoc,
1714 uint32_t *value);
1715
1716 /**
1717 * wlan_mlme_get_wmm_min_phy_rate_ac_be() - min PHY
1718 * rate for BE
1719 * @psoc: pointer to psoc object
1720 * @value: Value that needs to be set from the caller
1721 *
1722 * Return: QDF Status
1723 */
1724 QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_be(struct wlan_objmgr_psoc *psoc,
1725 uint32_t *value);
1726
1727 /**
1728 * wlan_mlme_get_wmm_sba_ac_be() - surplus bandwidth
1729 * allowance for BE
1730 * @psoc: pointer to psoc object
1731 * @value: Value that needs to be set from the caller
1732 *
1733 * Return: QDF Status
1734 */
1735 QDF_STATUS
1736 wlan_mlme_get_wmm_sba_ac_be(struct wlan_objmgr_psoc *psoc, uint16_t *value);
1737
1738 /**
1739 * wlan_mlme_get_wmm_uapsd_be_srv_intv() - Get Uapsd service
1740 * interval for BE
1741 * @psoc: pointer to psoc object
1742 * @value: pointer to the value which will be filled for the caller
1743 *
1744 * Return: QDF Status
1745 */
1746 QDF_STATUS
1747 wlan_mlme_get_wmm_uapsd_be_srv_intv(struct wlan_objmgr_psoc *psoc,
1748 uint32_t *value);
1749
1750 /**
1751 * wlan_mlme_get_wmm_uapsd_be_sus_intv() - Get Uapsd suspension
1752 * interval for BE
1753 * @psoc: pointer to psoc object
1754 * @value: pointer to the value which will be filled for the caller
1755 *
1756 * Return: QDF Status
1757 */
1758 QDF_STATUS
1759 wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
1760 uint32_t *value);
1761
1762 /**
1763 * wlan_mlme_get_wmm_dir_ac_bk() - Get TSPEC direction
1764 * for BK
1765 * @psoc: pointer to psoc object
1766 * @value: Value that needs to be set from the caller
1767 *
1768 * Return: QDF Status
1769 */
1770 QDF_STATUS
1771 wlan_mlme_get_wmm_dir_ac_bk(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1772
1773 /**
1774 * wlan_mlme_get_wmm_nom_msdu_size_ac_bk() - Get normal
1775 * MSDU size for BK
1776 * @psoc: pointer to psoc object
1777 * @value: Value that needs to be set from the caller
1778 *
1779 * Return: QDF Status
1780 */
1781 QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_bk(struct wlan_objmgr_psoc *psoc,
1782 uint16_t *value);
1783
1784 /**
1785 * wlan_mlme_get_wmm_mean_data_rate_ac_bk() - mean data
1786 * rate for BK
1787 * @psoc: pointer to psoc object
1788 * @value: Value that needs to be set from the caller
1789 *
1790 * Return: QDF Status
1791 */
1792 QDF_STATUS wlan_mlme_get_wmm_mean_data_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
1793 uint32_t *value);
1794
1795 /**
1796 * wlan_mlme_get_wmm_min_phy_rate_ac_bk() - min PHY
1797 * rate for BK
1798 * @psoc: pointer to psoc object
1799 * @value: Value that needs to be set from the caller
1800 *
1801 * Return: QDF Status
1802 */
1803 QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
1804 uint32_t *value);
1805
1806 /**
1807 * wlan_mlme_get_wmm_sba_ac_bk() - surplus bandwidth
1808 * allowance for BE
1809 * @psoc: pointer to psoc object
1810 * @value: Value that needs to be set from the caller
1811 *
1812 * Return: QDF Status
1813 */
1814 QDF_STATUS
1815 wlan_mlme_get_wmm_sba_ac_bk(struct wlan_objmgr_psoc *psoc, uint16_t *value);
1816
1817 /**
1818 * wlan_mlme_get_wmm_uapsd_bk_srv_intv() - Get Uapsd service
1819 * interval for BK
1820 * @psoc: pointer to psoc object
1821 * @value: pointer to the value which will be filled for the caller
1822 *
1823 * Return: QDF Status
1824 */
1825 QDF_STATUS
1826 wlan_mlme_get_wmm_uapsd_bk_srv_intv(struct wlan_objmgr_psoc *psoc,
1827 uint32_t *value);
1828
1829 /**
1830 * wlan_mlme_get_wmm_uapsd_bk_sus_intv() - Get Uapsd suspension
1831 * interval for BK
1832 * @psoc: pointer to psoc object
1833 * @value: pointer to the value which will be filled for the caller
1834 *
1835 * Return: QDF Status
1836 */
1837 QDF_STATUS
1838 wlan_mlme_get_wmm_uapsd_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
1839 uint32_t *value);
1840
1841 /**
1842 * wlan_mlme_get_wmm_mode() - Enable WMM feature
1843 * @psoc: pointer to psoc object
1844 * @value: pointer to the value which will be filled for the caller
1845 *
1846 * Return: QDF Status
1847 */
1848 QDF_STATUS
1849 wlan_mlme_get_wmm_mode(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1850
1851 /**
1852 * wlan_mlme_get_80211e_is_enabled() - Enable 802.11e feature
1853 * @psoc: pointer to psoc object
1854 * @value: pointer to the value which will be filled for the caller
1855 *
1856 * Return: QDF Status
1857 */
1858 QDF_STATUS
1859 wlan_mlme_get_80211e_is_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
1860
1861 /**
1862 * wlan_mlme_get_wmm_uapsd_mask() - setup U-APSD mask for ACs
1863 * @psoc: pointer to psoc object
1864 * @value: pointer to the value which will be filled for the caller
1865 *
1866 * Return: QDF Status
1867 */
1868 QDF_STATUS
1869 wlan_mlme_get_wmm_uapsd_mask(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1870
1871 #ifdef FEATURE_WLAN_ESE
1872 /**
1873 * wlan_mlme_get_inactivity_interval() - Infra Inactivity Interval
1874 * @psoc: pointer to psoc object
1875 * @value: pointer to the value which will be filled for the caller
1876 *
1877 * Return: None
1878 */
1879 void
1880 wlan_mlme_get_inactivity_interval(struct wlan_objmgr_psoc *psoc,
1881 uint32_t *value);
1882 #endif
1883
1884 /**
1885 * wlan_mlme_get_is_ts_burst_size_enable() - Get TS burst size flag
1886 * @psoc: pointer to psoc object
1887 * @value: pointer to the value which will be filled for the caller
1888 *
1889 * Return: None
1890 */
1891 void wlan_mlme_get_is_ts_burst_size_enable(struct wlan_objmgr_psoc *psoc,
1892 bool *value);
1893
1894 /**
1895 * wlan_mlme_get_ts_info_ack_policy() - Get TS ack policy
1896 * @psoc: pointer to psoc object
1897 * @value: pointer to the value which will be filled for the caller
1898 *
1899 * Return: None
1900 */
1901 void wlan_mlme_get_ts_info_ack_policy(struct wlan_objmgr_psoc *psoc,
1902 enum mlme_ts_info_ack_policy *value);
1903
1904 /**
1905 * wlan_mlme_get_ts_acm_value_for_ac() - Get ACM value for AC
1906 * @psoc: pointer to psoc object
1907 * @value: pointer to the value which will be filled for the caller
1908 *
1909 * Return: QDF Status
1910 */
1911 QDF_STATUS
1912 wlan_mlme_get_ts_acm_value_for_ac(struct wlan_objmgr_psoc *psoc, bool *value);
1913
1914 /**
1915 * wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
1916 * for VO
1917 * @psoc: pointer to psoc object
1918 * @value: Value that needs to be set from the caller
1919 *
1920 * Return: QDF Status
1921 */
1922 QDF_STATUS
1923 wlan_mlme_get_wmm_dir_ac_vo(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1924
1925 /**
1926 * wlan_mlme_get_wmm_nom_msdu_size_ac_vo() - Get normal
1927 * MSDU size for VO
1928 * @psoc: pointer to psoc object
1929 * @value: Value that needs to be set from the caller
1930 *
1931 * Return: QDF Status
1932 */
1933 QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_vo(struct wlan_objmgr_psoc *psoc,
1934 uint16_t *value);
1935
1936 /**
1937 * wlan_mlme_get_wmm_mean_data_rate_ac_vo() - mean data rate for VO
1938 * @psoc: pointer to psoc object
1939 * @value: Value that needs to be set from the caller
1940 *
1941 * Return: QDF Status
1942 */
1943 QDF_STATUS wlan_mlme_get_wmm_mean_data_rate_ac_vo(struct wlan_objmgr_psoc *psoc,
1944 uint32_t *value);
1945 /**
1946 * wlan_mlme_get_wmm_min_phy_rate_ac_vo() - min PHY
1947 * rate for VO
1948 * @psoc: pointer to psoc object
1949 * @value: Value that needs to be set from the caller
1950 *
1951 * Return: QDF Status
1952 */
1953 QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_vo(struct wlan_objmgr_psoc *psoc,
1954 uint32_t *value);
1955 /**
1956 * wlan_mlme_get_wmm_sba_ac_vo() - surplus bandwidth allowance for VO
1957 * @psoc: pointer to psoc object
1958 * @value: Value that needs to be set from the caller
1959 *
1960 * Return: QDF Status
1961 */
1962 QDF_STATUS
1963 wlan_mlme_get_wmm_sba_ac_vo(struct wlan_objmgr_psoc *psoc, uint16_t *value);
1964
1965 /**
1966 * wlan_mlme_set_enable_bcast_probe_rsp() - Set enable bcast probe resp info
1967 * @psoc: pointer to psoc object
1968 * @value: value that needs to be set from the caller
1969 *
1970 * Return: QDF Status
1971 */
1972 QDF_STATUS wlan_mlme_set_enable_bcast_probe_rsp(struct wlan_objmgr_psoc *psoc,
1973 bool value);
1974
1975 /**
1976 * wlan_mlme_get_wmm_uapsd_vo_srv_intv() - Get Uapsd service
1977 * interval for voice
1978 * @psoc: pointer to psoc object
1979 * @value: pointer to the value which will be filled for the caller
1980 *
1981 * Return: QDF Status
1982 */
1983 QDF_STATUS
1984 wlan_mlme_get_wmm_uapsd_vo_srv_intv(struct wlan_objmgr_psoc *psoc,
1985 uint32_t *value);
1986
1987 /**
1988 * wlan_mlme_get_wmm_uapsd_vo_sus_intv() - Get Uapsd suspension
1989 * interval for voice
1990 * @psoc: pointer to psoc object
1991 * @value: pointer to the value which will be filled for the caller
1992 *
1993 * Return: QDF Status
1994 */
1995 QDF_STATUS
1996 wlan_mlme_get_wmm_uapsd_vo_sus_intv(struct wlan_objmgr_psoc *psoc,
1997 uint32_t *value);
1998
1999 /**
2000 * wlan_mlme_cfg_get_vht_max_mpdu_len() - gets vht max mpdu length from cfg item
2001 * @psoc: psoc context
2002 * @value: pointer to get required data
2003 *
2004 * Return: QDF_STATUS
2005 */
2006 QDF_STATUS
2007 wlan_mlme_cfg_get_vht_max_mpdu_len(struct wlan_objmgr_psoc *psoc,
2008 uint8_t *value);
2009
2010 /**
2011 * wlan_mlme_cfg_set_vht_max_mpdu_len() - sets vht max mpdu length into cfg item
2012 * @psoc: psoc context
2013 * @value: data to be set
2014 *
2015 * Return: QDF_STATUS
2016 */
2017 QDF_STATUS
2018 wlan_mlme_cfg_set_vht_max_mpdu_len(struct wlan_objmgr_psoc *psoc,
2019 uint8_t value);
2020
2021 /**
2022 * wlan_mlme_cfg_get_ht_smps() - gets HT SM Power Save mode from cfg item
2023 * @psoc: psoc context
2024 * @value: data to be set
2025 *
2026 * Return: QDF_STATUS
2027 */
2028 QDF_STATUS wlan_mlme_cfg_get_ht_smps(struct wlan_objmgr_psoc *psoc,
2029 uint8_t *value);
2030
2031 /**
2032 * wlan_mlme_cfg_get_vht_chan_width() - gets vht supported channel width from
2033 * cfg item
2034 * @psoc: psoc context
2035 * @value: pointer to get required data
2036 *
2037 * Return: QDF_STATUS
2038 */
2039 QDF_STATUS wlan_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc,
2040 uint8_t *value);
2041
2042 /**
2043 * wlan_mlme_cfg_set_vht_chan_width() - sets vht supported channel width into
2044 * cfg item
2045 * @psoc: psoc context
2046 * @value: data to be set
2047 *
2048 * Return: QDF_STATUS
2049 */
2050 QDF_STATUS wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc,
2051 uint8_t value);
2052
2053 /**
2054 * wlan_mlme_cfg_get_vht_chan_width() - sets vht supported channel width into
2055 * cfg item
2056 * @psoc: psoc context
2057 * @value: data to be set
2058 *
2059 * Return: QDF_STATUS
2060 */
2061 QDF_STATUS wlan_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc,
2062 uint8_t *value);
2063
2064 /**
2065 * wlan_mlme_cfg_get_vht_ldpc_coding_cap() - gets vht ldpc coding cap from
2066 * cfg item
2067 * @psoc: psoc context
2068 * @value: pointer to get required data
2069 *
2070 * Return: QDF_STATUS
2071 */
2072 QDF_STATUS wlan_mlme_cfg_get_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
2073 bool *value);
2074
2075 /**
2076 * wlan_mlme_cfg_set_vht_ldpc_coding_cap() - sets vht ldpc coding cap into
2077 * cfg item
2078 * @psoc: psoc context
2079 * @value: data to be set
2080 *
2081 * Return: QDF_STATUS
2082 */
2083 QDF_STATUS wlan_mlme_cfg_set_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
2084 bool value);
2085
2086 /**
2087 * wlan_mlme_cfg_get_vht_short_gi_80mhz() - gets vht short gi 80MHz from
2088 * cfg item
2089 * @psoc: psoc context
2090 * @value: pointer to get required data
2091 *
2092 * Return: QDF_STATUS
2093 */
2094 QDF_STATUS wlan_mlme_cfg_get_vht_short_gi_80mhz(struct wlan_objmgr_psoc *psoc,
2095 bool *value);
2096
2097 /**
2098 * wlan_mlme_cfg_set_vht_short_gi_80mhz() - sets vht short gi 80MHz into
2099 * cfg item
2100 * @psoc: psoc context
2101 * @value: data to be set
2102 *
2103 * Return: QDF_STATUS
2104 */
2105 QDF_STATUS wlan_mlme_cfg_set_vht_short_gi_80mhz(struct wlan_objmgr_psoc *psoc,
2106 bool value);
2107
2108 /**
2109 * wlan_mlme_cfg_get_short_gi_160_mhz() - gets vht short gi 160MHz from
2110 * cfg item
2111 * @psoc: psoc context
2112 * @value: pointer to get required data
2113 *
2114 * Return: QDF_STATUS
2115 */
2116 QDF_STATUS
2117 wlan_mlme_cfg_get_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc, bool *value);
2118
2119 /**
2120 * wlan_mlme_cfg_set_short_gi_160_mhz() - sets vht short gi 160MHz into
2121 * cfg item
2122 * @psoc: psoc context
2123 * @value: data to be set
2124 *
2125 * Return: QDF_STATUS
2126 */
2127 QDF_STATUS
2128 wlan_mlme_cfg_set_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc, bool value);
2129
2130 /**
2131 * wlan_mlme_cfg_get_vht_tx_stbc() - gets vht tx stbc from
2132 * cfg item
2133 * @psoc: psoc context
2134 * @value: pointer to get required data
2135 *
2136 * Return: QDF_STATUS
2137 */
2138 QDF_STATUS
2139 wlan_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, bool *value);
2140
2141 /**
2142 * wlan_mlme_cfg_get_vht_rx_stbc() - gets vht rx stbc from
2143 * cfg item
2144 * @psoc: psoc context
2145 * @value: pointer to get required data
2146 *
2147 * Return: QDF_STATUS
2148 */
2149 QDF_STATUS
2150 wlan_mlme_cfg_get_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, bool *value);
2151
2152 /**
2153 * wlan_mlme_cfg_set_vht_tx_stbc() - sets vht tx stbc into
2154 * cfg item
2155 * @psoc: psoc context
2156 * @value: data to be set
2157 *
2158 * Return: QDF_STATUS
2159 */
2160 QDF_STATUS
2161 wlan_mlme_cfg_set_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, bool value);
2162
2163 /**
2164 * wlan_mlme_cfg_get_vht_rx_stbc() - gets vht rx stbc from
2165 * cfg item
2166 * @psoc: psoc context
2167 * @value: pointer to get required data
2168 *
2169 * Return: QDF_STATUS
2170 */
2171 QDF_STATUS
2172 wlan_mlme_cfg_get_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, bool *value);
2173
2174 /**
2175 * wlan_mlme_cfg_set_vht_rx_stbc() - sets vht rx stbc into
2176 * cfg item
2177 * @psoc: psoc context
2178 * @value: data to be set
2179 *
2180 * Return: QDF_STATUS
2181 */
2182 QDF_STATUS
2183 wlan_mlme_cfg_set_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, bool value);
2184
2185 /**
2186 * wlan_mlme_cfg_get_vht_su_bformer() - gets vht su beam former cap from
2187 * cfg item
2188 * @psoc: psoc context
2189 * @value: pointer to get required data
2190 *
2191 * Return: QDF_STATUS
2192 */
2193 QDF_STATUS
2194 wlan_mlme_cfg_get_vht_su_bformer(struct wlan_objmgr_psoc *psoc, bool *value);
2195
2196 /**
2197 * wlan_mlme_cfg_set_vht_su_bformer() - sets vht su beam former cap into
2198 * cfg item
2199 * @psoc: psoc context
2200 * @value: data to be set
2201 *
2202 * Return: QDF_STATUS
2203 */
2204 QDF_STATUS
2205 wlan_mlme_cfg_set_vht_su_bformer(struct wlan_objmgr_psoc *psoc, bool value);
2206
2207 /**
2208 * wlan_mlme_cfg_set_vht_su_bformee() - sets vht su beam formee cap into
2209 * cfg item
2210 * @psoc: psoc context
2211 * @value: data to be set
2212 *
2213 * Return: QDF_STATUS
2214 */
2215 QDF_STATUS
2216 wlan_mlme_cfg_set_vht_su_bformee(struct wlan_objmgr_psoc *psoc, bool value);
2217
2218 /**
2219 * wlan_mlme_cfg_set_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna
2220 * support cap
2221 * into cfg item
2222 * @psoc: psoc context
2223 * @value: data to be set
2224 *
2225 * Return: QDF_STATUS
2226 */
2227 QDF_STATUS wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
2228 uint8_t value);
2229
2230 /**
2231 * wlan_mlme_cfg_get_vht_tx_bfee_ant_supp() - Gets vht Beamformee antenna
2232 * support cap into cfg item
2233 *
2234 * @psoc: psoc context
2235 * @value: data to be set
2236 *
2237 * Return: QDF_STATUS
2238 */
2239 QDF_STATUS wlan_mlme_cfg_get_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
2240 uint8_t *value);
2241
2242 /**
2243 * wlan_mlme_cfg_set_vht_num_sounding_dim() - sets vht no of sounding dimensions
2244 * into cfg item
2245 * @psoc: psoc context
2246 * @value: data to be set
2247 *
2248 * Return: QDF_STATUS
2249 */
2250 QDF_STATUS wlan_mlme_cfg_set_vht_num_sounding_dim(struct wlan_objmgr_psoc *psoc,
2251 uint8_t value);
2252
2253 /**
2254 * wlan_mlme_cfg_get_vht_mu_bformer() - gets vht mu beam former cap from
2255 * cfg item
2256 * @psoc: psoc context
2257 * @value: pointer to get required data
2258 *
2259 * Return: QDF_STATUS
2260 */
2261 QDF_STATUS
2262 wlan_mlme_cfg_get_vht_mu_bformer(struct wlan_objmgr_psoc *psoc, bool *value);
2263
2264 /**
2265 * wlan_mlme_cfg_set_vht_mu_bformer() - sets vht mu beam former cap into
2266 * cfg item
2267 * @psoc: psoc context
2268 * @value: data to be set
2269 *
2270 * Return: QDF_STATUS
2271 */
2272 QDF_STATUS
2273 wlan_mlme_cfg_set_vht_mu_bformer(struct wlan_objmgr_psoc *psoc, bool value);
2274
2275 /**
2276 * wlan_mlme_cfg_get_vht_mu_bformee() - gets vht mu beam formee cap from
2277 * cfg item
2278 * @psoc: psoc context
2279 * @value: pointer to get required data
2280 *
2281 * Return: QDF_STATUS
2282 */
2283 QDF_STATUS
2284 wlan_mlme_cfg_get_vht_mu_bformee(struct wlan_objmgr_psoc *psoc, bool *value);
2285
2286 /**
2287 * wlan_mlme_cfg_set_vht_mu_bformee() - sets vht mu beam formee cap into
2288 * cfg item
2289 * @psoc: psoc context
2290 * @value: data to be set
2291 *
2292 * Return: QDF_STATUS
2293 */
2294 QDF_STATUS
2295 wlan_mlme_cfg_set_vht_mu_bformee(struct wlan_objmgr_psoc *psoc, bool value);
2296
2297 /**
2298 * wlan_mlme_cfg_get_vht_txop_ps() - gets vht tx ops ps cap from
2299 * cfg item
2300 * @psoc: psoc context
2301 * @value: pointer to get required data
2302 *
2303 * Return: QDF_STATUS
2304 */
2305 QDF_STATUS
2306 wlan_mlme_cfg_get_vht_txop_ps(struct wlan_objmgr_psoc *psoc, bool *value);
2307
2308 /**
2309 * wlan_mlme_cfg_set_vht_txop_ps() - sets vht tx ops ps cap into
2310 * cfg item
2311 * @psoc: psoc context
2312 * @value: data to be set
2313 *
2314 * Return: QDF_STATUS
2315 */
2316 QDF_STATUS
2317 wlan_mlme_cfg_set_vht_txop_ps(struct wlan_objmgr_psoc *psoc, bool value);
2318
2319 /**
2320 * wlan_mlme_cfg_get_vht_ampdu_len_exp() - gets vht max AMPDU length exponent from
2321 * cfg item
2322 * @psoc: psoc context
2323 * @value: pointer to get required data
2324 *
2325 * Return: QDF_STATUS
2326 */
2327 QDF_STATUS
2328 wlan_mlme_cfg_get_vht_ampdu_len_exp(struct wlan_objmgr_psoc *psoc,
2329 uint8_t *value);
2330
2331 /**
2332 * wlan_mlme_cfg_set_vht_ampdu_len_exp() - sets vht max AMPDU length exponent into
2333 * cfg item
2334 * @psoc: psoc context
2335 * @value: data to be set
2336 *
2337 * Return: QDF_STATUS
2338 */
2339 QDF_STATUS
2340 wlan_mlme_cfg_set_vht_ampdu_len_exp(struct wlan_objmgr_psoc *psoc,
2341 uint8_t value);
2342
2343 /**
2344 * wlan_mlme_cfg_get_vht_rx_mcs_map() - gets vht rx mcs map from
2345 * cfg item
2346 * @psoc: psoc context
2347 * @value: pointer to get required data
2348 *
2349 * Return: QDF_STATUS
2350 */
2351 QDF_STATUS wlan_mlme_cfg_get_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc,
2352 uint32_t *value);
2353
2354 /**
2355 * wlan_mlme_cfg_set_vht_rx_mcs_map() - sets rx mcs map into
2356 * cfg item
2357 * @psoc: psoc context
2358 * @value: data to be set
2359 *
2360 * Return: QDF_STATUS
2361 */
2362 QDF_STATUS
2363 wlan_mlme_cfg_set_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc, uint32_t value);
2364
2365 /**
2366 * wlan_mlme_cfg_get_vht_tx_mcs_map() - gets vht tx mcs map from
2367 * cfg item
2368 * @psoc: psoc context
2369 * @value: pointer to get required data
2370 *
2371 * Return: QDF_STATUS
2372 */
2373 QDF_STATUS wlan_mlme_cfg_get_vht_tx_mcs_map(struct wlan_objmgr_psoc *psoc,
2374 uint32_t *value);
2375
2376 /**
2377 * wlan_mlme_cfg_set_vht_tx_mcs_map() - sets tx mcs map into
2378 * cfg item
2379 * @psoc: psoc context
2380 * @value: data to be set
2381 *
2382 * Return: QDF_STATUS
2383 */
2384 QDF_STATUS wlan_mlme_cfg_set_vht_tx_mcs_map(struct wlan_objmgr_psoc *psoc,
2385 uint32_t value);
2386
2387 /**
2388 * wlan_mlme_cfg_set_vht_rx_supp_data_rate() - sets rx supported data rate into
2389 * cfg item
2390 * @psoc: psoc context
2391 * @value: data to be set
2392 *
2393 * Return: QDF_STATUS
2394 */
2395 QDF_STATUS
2396 wlan_mlme_cfg_set_vht_rx_supp_data_rate(struct wlan_objmgr_psoc *psoc,
2397 uint32_t value);
2398
2399 /**
2400 * wlan_mlme_cfg_set_vht_tx_supp_data_rate() - sets tx supported data rate into
2401 * cfg item
2402 * @psoc: psoc context
2403 * @value: data to be set
2404 *
2405 * Return: QDF_STATUS
2406 */
2407 QDF_STATUS
2408 wlan_mlme_cfg_set_vht_tx_supp_data_rate(struct wlan_objmgr_psoc *psoc,
2409 uint32_t value);
2410
2411 /**
2412 * wlan_mlme_cfg_get_vht_basic_mcs_set() - gets basic mcs set from
2413 * cfg item
2414 * @psoc: psoc context
2415 * @value: data to be set
2416 *
2417 * Return: QDF_STATUS
2418 */
2419 QDF_STATUS
2420 wlan_mlme_cfg_get_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
2421 uint32_t *value);
2422
2423 /**
2424 * wlan_mlme_cfg_set_vht_basic_mcs_set() - sets basic mcs set into
2425 * cfg item
2426 * @psoc: psoc context
2427 * @value: data to be set
2428 *
2429 * Return: QDF_STATUS
2430 */
2431 QDF_STATUS
2432 wlan_mlme_cfg_set_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
2433 uint32_t value);
2434
2435 /**
2436 * wlan_mlme_get_vht_enable_tx_bf() - Get vht enable tx bf
2437 * @psoc: psoc context
2438 * @value: data to be set
2439 *
2440 * Return: QDF_STATUS
2441 */
2442 QDF_STATUS
2443 wlan_mlme_get_vht_enable_tx_bf(struct wlan_objmgr_psoc *psoc, bool *value);
2444
2445 /**
2446 * wlan_mlme_get_vht_tx_su_beamformer() - VHT enable tx su beamformer
2447 * @psoc: psoc context
2448 * @value: data to be set
2449 *
2450 * Return: QDF_STATUS
2451 */
2452 QDF_STATUS
2453 wlan_mlme_get_vht_tx_su_beamformer(struct wlan_objmgr_psoc *psoc, bool *value);
2454
2455 /**
2456 * wlan_mlme_get_vht_channel_width() - gets Channel width capability
2457 * for 11ac
2458 * @psoc: psoc context
2459 * @value: data to be set
2460 *
2461 * Return: QDF_STATUS
2462 */
2463 QDF_STATUS wlan_mlme_get_vht_channel_width(struct wlan_objmgr_psoc *psoc,
2464 uint8_t *value);
2465
2466 /**
2467 * wlan_mlme_get_vht_rx_mcs_8_9() - VHT Rx MCS capability for 1x1 mode
2468 * @psoc: psoc context
2469 * @value: data to be set
2470 *
2471 * Return: QDF_STATUS
2472 */
2473 QDF_STATUS wlan_mlme_get_vht_rx_mcs_8_9(struct wlan_objmgr_psoc *psoc,
2474 uint8_t *value);
2475
2476 /**
2477 * wlan_mlme_get_vht_tx_mcs_8_9() - VHT Tx MCS capability for 1x1 mode
2478 * @psoc: psoc context
2479 * @value: data to be set
2480 *
2481 * Return: QDF_STATUS
2482 */
2483 QDF_STATUS
2484 wlan_mlme_get_vht_tx_mcs_8_9(struct wlan_objmgr_psoc *psoc, uint8_t *value);
2485
2486 /**
2487 * wlan_mlme_get_vht_rx_mcs_2x2() - VHT Rx MCS capability for 2x2 mode
2488 * @psoc: psoc context
2489 * @value: data to be set
2490 *
2491 * Return: QDF_STATUS
2492 */
2493 QDF_STATUS wlan_mlme_get_vht_rx_mcs_2x2(struct wlan_objmgr_psoc *psoc,
2494 uint8_t *value);
2495
2496 /**
2497 * wlan_mlme_get_vht_tx_mcs_2x2() - VHT Tx MCS capability for 2x2 mode
2498 * @psoc: psoc context
2499 * @value: data to be set
2500 *
2501 * Return: QDF_STATUS
2502 */
2503 QDF_STATUS wlan_mlme_get_vht_tx_mcs_2x2(struct wlan_objmgr_psoc *psoc,
2504 uint8_t *value);
2505
2506 /**
2507 * wlan_mlme_get_vht20_mcs9() - Enables VHT MCS9 in 20M BW operation
2508 * @psoc: psoc context
2509 * @value: data to be set
2510 *
2511 * Return: QDF_STATUS
2512 */
2513 QDF_STATUS
2514 wlan_mlme_get_vht20_mcs9(struct wlan_objmgr_psoc *psoc, bool *value);
2515
2516 /**
2517 * wlan_mlme_get_srd_master_mode_for_vdev - Get SRD master mode for vdev
2518 * @psoc: pointer to psoc object
2519 * @vdev_opmode: vdev operating mode
2520 * @value: pointer to the value which will be filled for the caller
2521 *
2522 * Return: QDF Status
2523 */
2524 QDF_STATUS
2525 wlan_mlme_get_srd_master_mode_for_vdev(struct wlan_objmgr_psoc *psoc,
2526 enum QDF_OPMODE vdev_opmode,
2527 bool *value);
2528
2529 /**
2530 * wlan_mlme_get_indoor_support_for_nan - Get indoor channel support for NAN
2531 * @psoc: pointer to psoc object
2532 * @value: pointer to the value which will be filled for the caller
2533 *
2534 * Return: QDF Status
2535 */
2536 QDF_STATUS
2537 wlan_mlme_get_indoor_support_for_nan(struct wlan_objmgr_psoc *psoc,
2538 bool *value);
2539
2540 /**
2541 * wlan_mlme_get_force_sap_enabled() - Get the value of force SAP enabled
2542 * @psoc: psoc context
2543 * @value: data to get
2544 *
2545 * Get the value of force SAP enabled
2546 *
2547 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2548 */
2549 QDF_STATUS
2550 wlan_mlme_get_force_sap_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2551
2552 /**
2553 * wlan_mlme_get_enable_dynamic_nss_chains_cfg() - API to get whether dynamic
2554 * nss and chain config is enabled or not
2555 * @psoc: psoc context
2556 * @value: data to be set
2557 *
2558 * API to get whether dynamic nss and chain config is enabled or not
2559 *
2560 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2561 */
2562 QDF_STATUS
2563 wlan_mlme_get_enable_dynamic_nss_chains_cfg(struct wlan_objmgr_psoc *psoc,
2564 bool *value);
2565
2566 /**
2567 * wlan_mlme_get_restart_sap_on_dynamic_nss_chains_cfg() - API to get whether
2568 * SAP needs to be restarted or not on dynamic nss chain config
2569 * @psoc: psoc context
2570 * @value: data to be set
2571 *
2572 * API to get whether SAP needs to be restarted or not on dynamic nss chain
2573 * config
2574 *
2575 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2576 */
2577 QDF_STATUS
2578 wlan_mlme_get_restart_sap_on_dynamic_nss_chains_cfg(
2579 struct wlan_objmgr_psoc *psoc,
2580 bool *value);
2581
2582 /**
2583 * wlan_mlme_cfg_set_dynamic_nss_chains_support() - API to update
2584 * dynamic_nss_chains_support
2585 *
2586 * @psoc: psoc context
2587 * @value: data to be set
2588 *
2589 * API to update dynamic_nss_chains_support in wlan_mlme_cfg object to
2590 * maintain this value in mlme context
2591 *
2592 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2593 */
2594 QDF_STATUS
2595 wlan_mlme_cfg_set_dynamic_nss_chains_support(struct wlan_objmgr_psoc *psoc,
2596 bool value);
2597
2598 /**
2599 * wlan_mlme_cfg_get_dynamic_nss_chains_support() - API to get current value of
2600 * dynamic_nss_chains_support
2601 *
2602 * @psoc: psoc context
2603 * @value: data to be set
2604 *
2605 * API to get current value of dynamic_nss_chains_support
2606 *
2607 * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2608 */
2609 QDF_STATUS
2610 wlan_mlme_cfg_get_dynamic_nss_chains_support(struct wlan_objmgr_psoc *psoc,
2611 bool *value);
2612
2613 /**
2614 * wlan_mlme_get_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2
2615 * @psoc: psoc context
2616 * @value: data to be set
2617 *
2618 * Return: QDF_STATUS
2619 */
2620 QDF_STATUS
2621 wlan_mlme_get_vht_enable2x2(struct wlan_objmgr_psoc *psoc, bool *value);
2622
2623 /**
2624 * wlan_mlme_set_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2
2625 * @psoc: psoc context
2626 * @value: data to be set
2627 *
2628 * Return: QDF_STATUS
2629 */
2630 QDF_STATUS
2631 wlan_mlme_set_vht_enable2x2(struct wlan_objmgr_psoc *psoc, bool value);
2632
2633 /**
2634 * wlan_mlme_get_vht_enable_paid() - Enables/disables paid feature
2635 * @psoc: psoc context
2636 * @value: data to be set
2637 *
2638 * Return: QDF_STATUS
2639 */
2640 QDF_STATUS
2641 wlan_mlme_get_vht_enable_paid(struct wlan_objmgr_psoc *psoc, bool *value);
2642
2643 /**
2644 * wlan_mlme_get_vht_enable_gid() - Enables/disables VHT GID feature
2645 * @psoc: psoc context
2646 * @value: data to be set
2647 *
2648 * Return: QDF_STATUS
2649 */
2650 QDF_STATUS
2651 wlan_mlme_get_vht_enable_gid(struct wlan_objmgr_psoc *psoc, bool *value);
2652
2653 /**
2654 * wlan_mlme_get_vht_for_24ghz() - Enables/disables VHT for 24 ghz
2655 * @psoc: psoc context
2656 * @value: data to be set
2657 *
2658 * Return: QDF_STATUS
2659 */
2660 QDF_STATUS
2661 wlan_mlme_get_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool *value);
2662
2663 /**
2664 * wlan_mlme_set_vht_for_24ghz() - Enables/disables VHT for 24 ghz
2665 * @psoc: psoc context
2666 * @value: data to be set
2667 *
2668 * Return: QDF_STATUS
2669 */
2670 QDF_STATUS
2671 wlan_mlme_set_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool value);
2672
2673 /**
2674 * wlan_mlme_get_vendor_vht_for_24ghz() - nables/disables vendor VHT for 24 ghz
2675 * @psoc: psoc context
2676 * @value: data to be set
2677 *
2678 * Return: QDF_STATUS
2679 */
2680 QDF_STATUS
2681 wlan_mlme_get_vendor_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool *value);
2682
2683 /**
2684 * mlme_update_vht_cap() - update vht capabilities
2685 * @psoc: psoc context
2686 * @cfg: data to be set
2687 *
2688 * Return: QDF_STATUS
2689 */
2690 QDF_STATUS
2691 mlme_update_vht_cap(struct wlan_objmgr_psoc *psoc, struct wma_tgt_vht_cap *cfg);
2692
2693 /**
2694 * mlme_update_nss_vht_cap() - Update the number of spatial
2695 * streams supported for vht
2696 * @psoc: psoc context
2697 *
2698 * Return: QDF_STATUS
2699 */
2700 QDF_STATUS mlme_update_nss_vht_cap(struct wlan_objmgr_psoc *psoc);
2701
2702 #ifdef WLAN_FEATURE_11BE
2703 /**
2704 * mlme_get_bss_11be_allowed() - Check BSS allowed in 11be mode
2705 * @psoc: psoc context
2706 * @bssid: bssid
2707 * @ie_data: ie data
2708 * @ie_length: ie data length
2709 *
2710 * Return: true if AP in 11be oui allow list
2711 */
2712 bool mlme_get_bss_11be_allowed(struct wlan_objmgr_psoc *psoc,
2713 struct qdf_mac_addr *bssid,
2714 uint8_t *ie_data,
2715 uint32_t ie_length);
2716
2717 /**
2718 * wlan_mlme_get_oem_eht_mlo_config() - Get the OEM EHT configuration.
2719 * @psoc: PSOC object manager.
2720 * @oem_eht_cfg: Pointer to fill OEM cfg
2721 *
2722 * Returns success of retrieving OEM cfg else failure.
2723 *
2724 * Return: QDF_STATUS.
2725 */
2726 QDF_STATUS wlan_mlme_get_oem_eht_mlo_config(struct wlan_objmgr_psoc *psoc,
2727 uint32_t *oem_eht_cfg);
2728 #else
2729 static inline
mlme_get_bss_11be_allowed(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * bssid,uint8_t * ie_data,uint32_t ie_length)2730 bool mlme_get_bss_11be_allowed(struct wlan_objmgr_psoc *psoc,
2731 struct qdf_mac_addr *bssid,
2732 uint8_t *ie_data,
2733 uint32_t ie_length)
2734 {
2735 return false;
2736 }
2737
2738 static inline QDF_STATUS
wlan_mlme_get_oem_eht_mlo_config(struct wlan_objmgr_psoc * psoc,uint32_t * oem_eht_cfg)2739 wlan_mlme_get_oem_eht_mlo_config(struct wlan_objmgr_psoc *psoc,
2740 uint32_t *oem_eht_cfg)
2741 {
2742 *oem_eht_cfg = 0x0;
2743 return QDF_STATUS_SUCCESS;
2744 }
2745 #endif
2746
2747 /**
2748 * wlan_mlme_is_sap_uapsd_enabled() - Get if SAP UAPSD is enabled/disabled
2749 * @psoc: psoc context
2750 * @value: value to be filled for caller
2751 *
2752 * Return: QDF_STATUS
2753 */
2754 QDF_STATUS wlan_mlme_is_sap_uapsd_enabled(struct wlan_objmgr_psoc *psoc,
2755 bool *value);
2756
2757 /**
2758 * wlan_mlme_set_sap_uapsd_flag() - Enable/Disable SAP UAPSD
2759 * @psoc: psoc context
2760 * @value: Enable/Disable control value for sap_uapsd_enabled field
2761 *
2762 * Return: QDF_STATUS
2763 */
2764 QDF_STATUS wlan_mlme_set_sap_uapsd_flag(struct wlan_objmgr_psoc *psoc,
2765 bool value);
2766 /**
2767 * wlan_mlme_is_11h_enabled() - Get the 11h flag
2768 * @psoc: psoc context
2769 * @value: Enable/Disable value ptr.
2770 *
2771 * Return: QDF_STATUS
2772 */
2773 QDF_STATUS
2774 wlan_mlme_is_11h_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2775
2776 /**
2777 * wlan_mlme_set_11h_enabled() - Set the 11h flag
2778 * @psoc: psoc context
2779 * @value: Enable/Disable value
2780 *
2781 * Return: QDF_STATUS
2782 */
2783 QDF_STATUS
2784 wlan_mlme_set_11h_enabled(struct wlan_objmgr_psoc *psoc, bool value);
2785
2786 /**
2787 * wlan_mlme_is_11d_enabled() - Get the 11d flag
2788 * @psoc: psoc context
2789 * @value: Enable/Disable value ptr.
2790 *
2791 * Return: QDF_STATUS
2792 */
2793 QDF_STATUS
2794 wlan_mlme_is_11d_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2795
2796 /**
2797 * wlan_mlme_set_11d_enabled() - Set the 11h flag
2798 * @psoc: psoc context
2799 * @value: Enable/Disable value
2800 *
2801 * Return: QDF_STATUS
2802 */
2803 QDF_STATUS
2804 wlan_mlme_set_11d_enabled(struct wlan_objmgr_psoc *psoc, bool value);
2805
2806 /**
2807 * wlan_mlme_is_rf_test_mode_enabled() - Get the rf test mode flag
2808 * @psoc: psoc context
2809 * @value: Enable/Disable value ptr.
2810 *
2811 * Return: QDF_STATUS
2812 */
2813 QDF_STATUS
2814 wlan_mlme_is_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2815
2816 /**
2817 * wlan_mlme_set_rf_test_mode_enabled() - Set the rf test mode flag
2818 * @psoc: psoc context
2819 * @value: Enable/Disable value.
2820 *
2821 * Return: QDF_STATUS
2822 */
2823 QDF_STATUS
2824 wlan_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
2825
2826 #ifdef CONFIG_BAND_6GHZ
2827 /**
2828 * wlan_mlme_is_disable_vlp_sta_conn_to_sp_ap_enabled() - Get the disable vlp
2829 * STA conn to SP AP flag
2830 * @psoc: psoc context
2831 * @value: Enable/Disable value ptr.
2832 *
2833 * Return: QDF_STATUS
2834 */
2835 QDF_STATUS
2836 wlan_mlme_is_disable_vlp_sta_conn_to_sp_ap_enabled(
2837 struct wlan_objmgr_psoc *psoc,
2838 bool *value);
2839
2840 /**
2841 * wlan_mlme_is_standard_6ghz_conn_policy_enabled() - Get the 6 GHz standard
2842 * connection policy flag
2843 * @psoc: psoc context
2844 * @value: Enable/Disable value ptr.
2845 *
2846 * Return: QDF_STATUS
2847 */
2848 QDF_STATUS
2849 wlan_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
2850 bool *value);
2851
2852 #else
2853 static inline QDF_STATUS
wlan_mlme_is_disable_vlp_sta_conn_to_sp_ap_enabled(struct wlan_objmgr_psoc * psoc,bool * value)2854 wlan_mlme_is_disable_vlp_sta_conn_to_sp_ap_enabled(
2855 struct wlan_objmgr_psoc *psoc,
2856 bool *value)
2857 {
2858 *value = false;
2859 return QDF_STATUS_SUCCESS;
2860 }
2861
2862 static inline QDF_STATUS
wlan_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc * psoc,bool * value)2863 wlan_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
2864 bool *value)
2865 {
2866 *value = false;
2867 return QDF_STATUS_SUCCESS;
2868 }
2869 #endif
2870
2871 #ifdef WLAN_FEATURE_11BE_MLO
2872 /**
2873 * wlan_mlme_get_eht_mode() - Get the EHT mode of operations
2874 * @psoc: psoc context
2875 * @value: EHT mode value ptr
2876 *
2877 * Return: QDF_STATUS
2878 */
2879 QDF_STATUS
2880 wlan_mlme_get_eht_mode(struct wlan_objmgr_psoc *psoc,
2881 enum wlan_eht_mode *value);
2882
2883 /**
2884 * wlan_mlme_set_eht_mode() - Set the EHT mode of operation
2885 * @psoc: psoc context
2886 * @value: EHT mode value
2887 *
2888 * Return: QDF_STATUS
2889 */
2890 QDF_STATUS
2891 wlan_mlme_set_eht_mode(struct wlan_objmgr_psoc *psoc, enum wlan_eht_mode value);
2892
2893 /**
2894 * wlan_mlme_get_emlsr_mode_enabled() - Get the eMLSR mode flag
2895 * @psoc: psoc context
2896 * @value: Enable/Disable value ptr.
2897 *
2898 * Return: QDF_STATUS
2899 */
2900 QDF_STATUS
2901 wlan_mlme_get_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2902
2903 /**
2904 * wlan_mlme_set_emlsr_mode_enabled() - Set the eMLSR mode flag
2905 * @psoc: psoc context
2906 * @value: Enable/Disable value.
2907 *
2908 * Return: QDF_STATUS
2909 */
2910 QDF_STATUS
2911 wlan_mlme_set_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
2912
2913 /**
2914 * wlan_mlme_set_eml_params() - Set EML subfields in psoc mlme obj that
2915 * are received from FW
2916 * @psoc: psoc context
2917 * @cap: psoc mac/phy capability ptr
2918 *
2919 * Return: none
2920 */
2921 void
2922 wlan_mlme_set_eml_params(struct wlan_objmgr_psoc *psoc,
2923 struct wlan_psoc_host_mac_phy_caps_ext2 *cap);
2924
2925 /**
2926 * wlan_mlme_get_eml_params() - Get EML subfields from psoc mlme obj
2927 * @psoc: psoc context
2928 * @cap: EML capability subfield ptr
2929 *
2930 * Return: none
2931 */
2932 void
2933 wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
2934 struct wlan_mlo_eml_cap *cap);
2935
2936 /**
2937 * wlan_mlme_cfg_set_emlsr_pad_delay() - Configure EMLSR padding delay subfield
2938 * @psoc: psoc context
2939 * @val: EMLSR padding delay subfield value
2940 *
2941 * API to configure EMLSR padding delay subfield in psoc mlme obj with user
2942 * requested value if it greater than the value configured by FW during boot-up.
2943 *
2944 * Return: none
2945 */
2946 void
2947 wlan_mlme_cfg_set_emlsr_pad_delay(struct wlan_objmgr_psoc *psoc, uint8_t val);
2948
2949 /**
2950 * wlan_mlme_get_t2lm_negotiation_supported() - Get the T2LM
2951 * negotiation supported value
2952 * @psoc: psoc context
2953 *
2954 * Return: t2lm negotiation supported value
2955 */
2956 enum t2lm_negotiation_support
2957 wlan_mlme_get_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc);
2958
2959 /**
2960 * wlan_mlme_set_t2lm_negotiation_supported() - Set the T2LM
2961 * negotiation supported value
2962 * @psoc: psoc context
2963 * @value: t2lm negotiation supported value
2964 *
2965 * Return: qdf status
2966 */
2967 QDF_STATUS
2968 wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
2969 uint8_t value);
2970
2971 /**
2972 * wlan_mlme_get_eht_mld_id() - Get the MLD ID of the requested BSS
2973 * @psoc: psoc context
2974 *
2975 * Return: MLD ID of the requested BSS
2976 */
2977 uint8_t
2978 wlan_mlme_get_eht_mld_id(struct wlan_objmgr_psoc *psoc);
2979
2980 /**
2981 * wlan_mlme_set_eht_mld_id() - Set MLD ID of the requested BSS information
2982 * within the ML probe request.
2983 * @psoc: psoc context
2984 * @value: MLD ID
2985 *
2986 * Return: qdf status
2987 */
2988 QDF_STATUS
2989 wlan_mlme_set_eht_mld_id(struct wlan_objmgr_psoc *psoc, uint8_t value);
2990
2991 /*
2992 * wlan_mlme_get_mlo_prefer_percentage() - get MLO preference percentage
2993 * @psoc: pointer to psoc object
2994 *
2995 * Return: void
2996 */
2997 void
2998 wlan_mlme_get_mlo_prefer_percentage(
2999 struct wlan_objmgr_psoc *psoc,
3000 int8_t *mlo_prefer_percentage);
3001 #else
3002 static inline QDF_STATUS
wlan_mlme_get_eht_mode(struct wlan_objmgr_psoc * psoc,enum wlan_eht_mode * value)3003 wlan_mlme_get_eht_mode(struct wlan_objmgr_psoc *psoc, enum wlan_eht_mode *value)
3004 {
3005 *value = WLAN_EHT_MODE_DISABLED;
3006 return QDF_STATUS_SUCCESS;
3007 }
3008
3009 static inline QDF_STATUS
wlan_mlme_set_eht_mode(struct wlan_objmgr_psoc * psoc,enum wlan_eht_mode value)3010 wlan_mlme_set_eht_mode(struct wlan_objmgr_psoc *psoc, enum wlan_eht_mode value)
3011 {
3012 return QDF_STATUS_SUCCESS;
3013 }
3014
3015 static inline QDF_STATUS
wlan_mlme_get_emlsr_mode_enabled(struct wlan_objmgr_psoc * psoc,bool * value)3016 wlan_mlme_get_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value)
3017 {
3018 *value = false;
3019 return QDF_STATUS_SUCCESS;
3020 }
3021
3022 static inline QDF_STATUS
wlan_mlme_set_emlsr_mode_enabled(struct wlan_objmgr_psoc * psoc,bool value)3023 wlan_mlme_set_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
3024 {
3025 return QDF_STATUS_SUCCESS;
3026 }
3027
3028 static inline void
wlan_mlme_set_eml_params(struct wlan_objmgr_psoc * psoc,struct wlan_psoc_host_mac_phy_caps_ext2 * cap)3029 wlan_mlme_set_eml_params(struct wlan_objmgr_psoc *psoc,
3030 struct wlan_psoc_host_mac_phy_caps_ext2 *cap)
3031 {
3032 }
3033
3034 static inline void
wlan_mlme_get_eml_params(struct wlan_objmgr_psoc * psoc,struct wlan_mlo_eml_cap * cap)3035 wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
3036 struct wlan_mlo_eml_cap *cap)
3037 {
3038 }
3039
3040 static inline void
wlan_mlme_cfg_set_emlsr_pad_delay(struct wlan_objmgr_psoc * psoc,uint8_t val)3041 wlan_mlme_cfg_set_emlsr_pad_delay(struct wlan_objmgr_psoc *psoc, uint8_t val)
3042 {
3043 }
3044
3045 static inline enum t2lm_negotiation_support
wlan_mlme_get_t2lm_negotiation_supported(struct wlan_objmgr_psoc * psoc)3046 wlan_mlme_get_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc)
3047 {
3048 return T2LM_NEGOTIATION_DISABLED;
3049 }
3050
3051 static inline QDF_STATUS
wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc * psoc,uint8_t value)3052 wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
3053 uint8_t value)
3054 {
3055 return QDF_STATUS_E_NOSUPPORT;
3056 }
3057
3058 static inline void
wlan_mlme_get_mlo_prefer_percentage(struct wlan_objmgr_psoc * psoc,int8_t * mlo_prefer_percentage)3059 wlan_mlme_get_mlo_prefer_percentage(
3060 struct wlan_objmgr_psoc *psoc,
3061 int8_t *mlo_prefer_percentage)
3062 {}
3063 #endif
3064
3065 /**
3066 * wlan_mlme_set_btm_abridge_flag() - Set BTM abridge flag
3067 * @psoc: psoc context
3068 * @value: abridge flag
3069 *
3070 * Return: qdf status
3071 *
3072 * BTM abridge flag indicates whether to select candidates
3073 * for BTM roam based on score.
3074 */
3075 QDF_STATUS
3076 wlan_mlme_set_btm_abridge_flag(struct wlan_objmgr_psoc *psoc, bool value);
3077
3078 /**
3079 * wlan_mlme_get_btm_abridge_flag() - Get BTM abridge flag
3080 * @psoc: psoc context
3081 *
3082 * Return: abridge flag
3083 *
3084 * BTM abridge flag indicates whether to select candidates
3085 * for BTM roam based on score.
3086 */
3087 bool
3088 wlan_mlme_get_btm_abridge_flag(struct wlan_objmgr_psoc *psoc);
3089
3090 /**
3091 * wlan_mlme_get_sta_miracast_mcc_rest_time() - Get STA/MIRACAST MCC rest time
3092 * @psoc: pointer to psoc object
3093 * @value: value which needs to filled by API
3094 *
3095 * This API gives rest time to be used when STA and MIRACAST MCC conc happens
3096 *
3097 * Return: QDF_STATUS
3098 */
3099 QDF_STATUS
3100 wlan_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc,
3101 uint32_t *value);
3102
3103 /**
3104 * wlan_mlme_get_max_modulated_dtim_ms() - get the max modulated dtim in ms
3105 * restart
3106 * @psoc: pointer to psoc object
3107 * @value: Value that needs to be set from the caller
3108 *
3109 * Return: QDF Status
3110 */
3111 QDF_STATUS
3112 wlan_mlme_get_max_modulated_dtim_ms(struct wlan_objmgr_psoc *psoc,
3113 uint16_t *value);
3114
3115 /**
3116 * wlan_mlme_get_scan_probe_unicast_ra() - Get scan probe unicast RA cfg
3117 * @psoc: pointer to psoc object
3118 * @value: value which needs to filled by API
3119 *
3120 * This API gives scan probe request with unicast RA user config
3121 *
3122 * Return: QDF_STATUS
3123 */
3124 QDF_STATUS
3125 wlan_mlme_get_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
3126 bool *value);
3127
3128 /**
3129 * wlan_mlme_set_scan_probe_unicast_ra() - Set scan probe unicast RA cfg
3130 * @psoc: pointer to psoc object
3131 * @value: set value
3132 *
3133 * This API sets scan probe request with unicast RA user config
3134 *
3135 * Return: QDF_STATUS
3136 */
3137 QDF_STATUS
3138 wlan_mlme_set_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
3139 bool value);
3140
3141 /**
3142 * wlan_mlme_get_sap_mcc_chnl_avoid() - Check if SAP MCC needs to be avoided
3143 * @psoc: pointer to psoc object
3144 * @value: value which needs to filled by API
3145 *
3146 * This API fetches the user setting to determine if SAP MCC with other persona
3147 * to be avoided.
3148 *
3149 * Return: QDF_STATUS
3150 */
3151 QDF_STATUS
3152 wlan_mlme_get_sap_mcc_chnl_avoid(struct wlan_objmgr_psoc *psoc,
3153 uint8_t *value);
3154 /**
3155 * wlan_mlme_get_mcc_bcast_prob_resp() - Get broadcast probe rsp in MCC
3156 * @psoc: pointer to psoc object
3157 * @value: value which needs to filled by API
3158 *
3159 * To get INI value which helps to determe whether to enable/disable use of
3160 * broadcast probe response to increase the detectability of SAP in MCC mode.
3161 *
3162 *
3163 * Return: QDF_STATUS
3164 */
3165 QDF_STATUS
3166 wlan_mlme_get_mcc_bcast_prob_resp(struct wlan_objmgr_psoc *psoc,
3167 uint8_t *value);
3168 /**
3169 * wlan_mlme_get_mcc_rts_cts_prot() - To get RTS-CTS protection in MCC.
3170 * @psoc: pointer to psoc object
3171 * @value: value which needs to filled by API
3172 *
3173 * To get INI value which helps to determine whether to enable/disable
3174 * use of long duration RTS-CTS protection when SAP goes off
3175 * channel in MCC mode.
3176 *
3177 * Return: QDF_STATUS
3178 */
3179 QDF_STATUS
3180 wlan_mlme_get_mcc_rts_cts_prot(struct wlan_objmgr_psoc *psoc,
3181 uint8_t *value);
3182 /**
3183 * wlan_mlme_get_mcc_feature() - To find out to enable/disable MCC feature
3184 * @psoc: pointer to psoc object
3185 * @value: value which needs to filled by API
3186 *
3187 * To get INI value which helps to determine whether to enable MCC feature
3188 *
3189 * Return: QDF_STATUS
3190 */
3191 QDF_STATUS
3192 wlan_mlme_get_mcc_feature(struct wlan_objmgr_psoc *psoc,
3193 uint8_t *value);
3194
3195 /**
3196 * wlan_mlme_get_rrm_enabled() - Get the RRM enabled ini
3197 * @psoc: pointer to psoc object
3198 * @value: pointer to the value which will be filled for the caller
3199 *
3200 * Return: QDF Status
3201 */
3202 QDF_STATUS wlan_mlme_get_rrm_enabled(struct wlan_objmgr_psoc *psoc,
3203 bool *value);
3204
3205 /**
3206 * wlan_mlme_get_dtim_selection_diversity() - get dtim selection diversity
3207 * bitmap
3208 * @psoc: pointer to psoc object
3209 * @dtim_selection_div: value that is requested by the caller
3210 * This function gets the dtim selection diversity bitmap to be
3211 * sent to the firmware
3212 *
3213 * Return: QDF_STATUS_SUCCESS - in case of success
3214 */
3215 QDF_STATUS wlan_mlme_get_dtim_selection_diversity(struct wlan_objmgr_psoc *psoc,
3216 uint32_t *dtim_selection_div);
3217
3218 /**
3219 * wlan_mlme_get_bmps_min_listen_interval() - get beacon mode powersave
3220 * minimum listen interval value
3221 * @psoc: pointer to psoc object
3222 * @value: value that is requested by the caller
3223 *
3224 * Return: QDF_STATUS_SUCCESS - in case of success
3225 */
3226 QDF_STATUS wlan_mlme_get_bmps_min_listen_interval(struct wlan_objmgr_psoc *psoc,
3227 uint32_t *value);
3228
3229 /**
3230 * wlan_mlme_get_bmps_max_listen_interval() - get beacon mode powersave
3231 * maximum listen interval value
3232 * @psoc: pointer to psoc object
3233 * @value: value that is requested by the caller
3234 *
3235 * Return: QDF_STATUS_SUCCESS - in case of success
3236 */
3237 QDF_STATUS wlan_mlme_get_bmps_max_listen_interval(struct wlan_objmgr_psoc *psoc,
3238 uint32_t *value);
3239
3240 /**
3241 * wlan_mlme_get_auto_bmps_timer_value() - get bmps timer value
3242 * @psoc: pointer to psoc object
3243 * @value: value that is requested by the caller
3244 *
3245 * Return: QDF_STATUS_SUCCESS - in case of success
3246 */
3247 QDF_STATUS wlan_mlme_get_auto_bmps_timer_value(struct wlan_objmgr_psoc *psoc,
3248 uint32_t *value);
3249
3250 /**
3251 * wlan_mlme_is_bmps_enabled() - check if beacon mode powersave is
3252 * enabled/disabled
3253 * @psoc: pointer to psoc object
3254 * @value: value that is requested by the caller
3255 *
3256 * Return: QDF_STATUS_SUCCESS - in case of success
3257 */
3258 QDF_STATUS wlan_mlme_is_bmps_enabled(struct wlan_objmgr_psoc *psoc,
3259 bool *value);
3260
3261 /**
3262 * wlan_mlme_override_bmps_imps() - disable imps/bmps
3263 * @psoc: pointer to psoc object
3264 *
3265 * Return: QDF_STATUS_SUCCESS - in case of success
3266 */
3267 QDF_STATUS wlan_mlme_override_bmps_imps(struct wlan_objmgr_psoc *psoc);
3268
3269 /**
3270 * wlan_mlme_is_imps_enabled() - check if idle mode powersave is
3271 * enabled/disabled
3272 * @psoc: pointer to psoc object
3273 * @value: value that is requested by the caller
3274 *
3275 * Return: QDF_STATUS_SUCCESS - in case of success
3276 */
3277 QDF_STATUS wlan_mlme_is_imps_enabled(struct wlan_objmgr_psoc *psoc,
3278 bool *value);
3279
3280 /**
3281 * wlan_mlme_get_wps_uuid() - get the wps uuid string
3282 * @wps_params: pointer to mlme wps parameters structure
3283 * @data: data to which the parameter is to be copied
3284 *
3285 * Return None
3286 *
3287 */
3288 void
3289 wlan_mlme_get_wps_uuid(struct wlan_mlme_wps_params *wps_params, uint8_t *data);
3290
3291 /**
3292 * wlan_mlme_get_self_gen_frm_pwr() - get self gen frm pwr
3293 * @psoc: pointer to psoc object
3294 * @value: Pointer to the value which will be filled for the caller
3295 *
3296 * Return: QDF Status
3297 */
3298 QDF_STATUS
3299 wlan_mlme_get_self_gen_frm_pwr(struct wlan_objmgr_psoc *psoc,
3300 uint32_t *value);
3301
3302 /**
3303 * wlan_mlme_get_4way_hs_offload() - get 4-way hs offload to fw cfg
3304 * @psoc: pointer to psoc object
3305 * @value: Pointer to the value which will be filled for the caller
3306 *
3307 * Return: QDF Status
3308 */
3309 QDF_STATUS
3310 wlan_mlme_get_4way_hs_offload(struct wlan_objmgr_psoc *psoc, uint32_t *value);
3311
3312 /**
3313 * wlan_mlme_get_bmiss_skip_full_scan_value() - To get value of
3314 * bmiss_skip_full_scan ini
3315 * @psoc: pointer to psoc object
3316 * @value: Pointer to the value which will be filled for the caller
3317 *
3318 * Return: QDF Status
3319 */
3320 QDF_STATUS
3321 wlan_mlme_get_bmiss_skip_full_scan_value(struct wlan_objmgr_psoc *psoc,
3322 bool *value);
3323
3324 /**
3325 * mlme_get_peer_phymode() - get phymode of peer
3326 * @psoc: pointer to psoc object
3327 * @mac: Pointer to the mac addr of the peer
3328 * @peer_phymode: phymode
3329 *
3330 * Return: QDF Status
3331 */
3332 QDF_STATUS
3333 mlme_get_peer_phymode(struct wlan_objmgr_psoc *psoc, uint8_t *mac,
3334 enum wlan_phymode *peer_phymode);
3335
3336 /**
3337 * mlme_set_tgt_wpa3_roam_cap() - Set the target WPA3 roam support
3338 * to mlme
3339 * @psoc: pointer to PSOC object
3340 * @akm_bitmap: Bitmap of akm suites supported for roaming by the firmware
3341 *
3342 * Return: QDF Status
3343 */
3344 QDF_STATUS mlme_set_tgt_wpa3_roam_cap(struct wlan_objmgr_psoc *psoc,
3345 uint32_t akm_bitmap);
3346 /**
3347 * wlan_mlme_get_ignore_fw_reg_offload_ind() - Get the
3348 * ignore_fw_reg_offload_ind ini
3349 * @psoc: pointer to psoc object
3350 * @disabled: output pointer to hold user config
3351 *
3352 * Return: QDF Status
3353 */
3354 QDF_STATUS
3355 wlan_mlme_get_ignore_fw_reg_offload_ind(struct wlan_objmgr_psoc *psoc,
3356 bool *disabled);
3357
3358 /**
3359 * mlme_get_roam_trigger_str() - Get the string for enum
3360 * WMI_ROAM_TRIGGER_REASON_ID reason.
3361 * @roam_scan_trigger: roam scan trigger ID
3362 *
3363 * Return: Meaningful string from enum WMI_ROAM_TRIGGER_REASON_ID
3364 */
3365 char *mlme_get_roam_trigger_str(uint32_t roam_scan_trigger);
3366
3367 /**
3368 * mlme_get_roam_status_str() - Get the string for roam status
3369 * @roam_status: roam status coming from fw via
3370 * wmi_roam_scan_info tlv
3371 *
3372 * Return: Meaningful string for roam status
3373 */
3374 char *mlme_get_roam_status_str(uint32_t roam_status);
3375
3376 /**
3377 * mlme_get_converted_timestamp() - Return time of the day
3378 * from timestamp
3379 * @timestamp: Timestamp value in milliseconds
3380 * @time: Output buffer to fill time into
3381 *
3382 * Return: Time of the day in [HH:MM:SS.uS]
3383 */
3384 void mlme_get_converted_timestamp(uint32_t timestamp, char *time);
3385
3386 #if defined(WLAN_SAE_SINGLE_PMK) && defined(WLAN_FEATURE_ROAM_OFFLOAD)
3387 /**
3388 * wlan_mlme_set_sae_single_pmk_bss_cap - API to set WPA3 single pmk AP IE
3389 * @psoc: Pointer to psoc object
3390 * @vdev_id: vdev id
3391 * @val: value to be set
3392 *
3393 * Return : None
3394 */
3395 void wlan_mlme_set_sae_single_pmk_bss_cap(struct wlan_objmgr_psoc *psoc,
3396 uint8_t vdev_id, bool val);
3397
3398 /**
3399 * wlan_mlme_update_sae_single_pmk - API to update mlme_pmkid_info
3400 * @vdev: vdev object
3401 * @sae_single_pmk: pointer to sae_single_pmk_info struct
3402 *
3403 * Return : None
3404 */
3405 void
3406 wlan_mlme_update_sae_single_pmk(struct wlan_objmgr_vdev *vdev,
3407 struct mlme_pmk_info *sae_single_pmk);
3408
3409 /**
3410 * wlan_mlme_get_sae_single_pmk_info - API to get mlme_pmkid_info
3411 * @vdev: vdev object
3412 * @pmksa: pointer to PMKSA struct
3413 *
3414 * Return : None
3415 */
3416 void
3417 wlan_mlme_get_sae_single_pmk_info(struct wlan_objmgr_vdev *vdev,
3418 struct wlan_mlme_sae_single_pmk *pmksa);
3419
3420 /**
3421 * wlan_mlme_is_sae_single_pmk_enabled() - Get is SAE single pmk feature enabled
3422 * @psoc: Pointer to Global psoc
3423 *
3424 * Return: True if SAE single PMK is enabled
3425 */
3426 bool wlan_mlme_is_sae_single_pmk_enabled(struct wlan_objmgr_psoc *psoc);
3427
3428 /**
3429 * wlan_mlme_clear_sae_single_pmk_info - API to clear mlme_pmkid_info ap caps
3430 * @vdev: vdev object
3431 * @pmk : pmk info to clear
3432 *
3433 * Return : None
3434 */
3435 void wlan_mlme_clear_sae_single_pmk_info(struct wlan_objmgr_vdev *vdev,
3436 struct mlme_pmk_info *pmk);
3437 #else
3438 static inline void
wlan_mlme_set_sae_single_pmk_bss_cap(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,bool val)3439 wlan_mlme_set_sae_single_pmk_bss_cap(struct wlan_objmgr_psoc *psoc,
3440 uint8_t vdev_id, bool val)
3441 {
3442 }
3443
3444 static inline
wlan_mlme_is_sae_single_pmk_enabled(struct wlan_objmgr_psoc * psoc)3445 bool wlan_mlme_is_sae_single_pmk_enabled(struct wlan_objmgr_psoc *psoc)
3446 {
3447 return false;
3448 }
3449
3450 static inline void
wlan_mlme_update_sae_single_pmk(struct wlan_objmgr_vdev * vdev,struct mlme_pmk_info * sae_single_pmk)3451 wlan_mlme_update_sae_single_pmk(struct wlan_objmgr_vdev *vdev,
3452 struct mlme_pmk_info *sae_single_pmk)
3453 {
3454 }
3455
3456 static inline void
wlan_mlme_get_sae_single_pmk_info(struct wlan_objmgr_vdev * vdev,struct wlan_mlme_sae_single_pmk * pmksa)3457 wlan_mlme_get_sae_single_pmk_info(struct wlan_objmgr_vdev *vdev,
3458 struct wlan_mlme_sae_single_pmk *pmksa)
3459 {
3460 }
3461
3462 static inline
wlan_mlme_clear_sae_single_pmk_info(struct wlan_objmgr_vdev * vdev,struct mlme_pmk_info * pmk)3463 void wlan_mlme_clear_sae_single_pmk_info(struct wlan_objmgr_vdev *vdev,
3464 struct mlme_pmk_info *pmk)
3465 {
3466 }
3467 #endif
3468
3469 /**
3470 * mlme_get_roam_fail_reason_str() - Get fail string from enum
3471 * WMI_ROAM_FAIL_REASON_ID
3472 * @result: Roam fail reason
3473 *
3474 * Return: Meaningful string from enum
3475 */
3476 char *mlme_get_roam_fail_reason_str(uint32_t result);
3477
3478 /**
3479 * mlme_get_sub_reason_str() - Get roam trigger sub reason from enum
3480 * WMI_ROAM_TRIGGER_SUB_REASON_ID
3481 * @sub_reason: Sub reason value
3482 *
3483 * Return: Meaningful string from enum WMI_ROAM_TRIGGER_SUB_REASON_ID
3484 */
3485 char *mlme_get_sub_reason_str(uint32_t sub_reason);
3486
3487 /**
3488 * wlan_mlme_get_mgmt_max_retry() - Get the
3489 * max mgmt retry
3490 * @psoc: pointer to psoc object
3491 * @max_retry: output pointer to hold user config
3492 *
3493 * Return: QDF Status
3494 */
3495 QDF_STATUS
3496 wlan_mlme_get_mgmt_max_retry(struct wlan_objmgr_psoc *psoc,
3497 uint8_t *max_retry);
3498
3499 /**
3500 * wlan_mlme_get_mgmt_6ghz_rate_support() - Get status of HE rates for
3501 * 6GHz mgmt frames
3502 * @psoc: pointer to psoc object
3503 * @enable_he_mcs0_for_6ghz_mgmt: pointer to check for HE rates support
3504 *
3505 * Return: QDF Status
3506 */
3507 QDF_STATUS
3508 wlan_mlme_get_mgmt_6ghz_rate_support(struct wlan_objmgr_psoc *psoc,
3509 bool *enable_he_mcs0_for_6ghz_mgmt);
3510
3511 /**
3512 * wlan_mlme_get_status_ring_buffer() - Get the
3513 * status of ring buffer
3514 * @psoc: pointer to psoc object
3515 * @enable_ring_buffer: output pointer to point the configured value of
3516 * ring buffer
3517 *
3518 * Return: QDF_STATUS
3519 */
3520 QDF_STATUS
3521 wlan_mlme_get_status_ring_buffer(struct wlan_objmgr_psoc *psoc,
3522 bool *enable_ring_buffer);
3523
3524 /**
3525 * wlan_mlme_get_peer_unmap_conf() - Indicate if peer unmap confirmation
3526 * support is enabled or disabled
3527 * @psoc: pointer to psoc object
3528 *
3529 * Return: true if peer unmap confirmation support is enabled, else false
3530 */
3531 bool wlan_mlme_get_peer_unmap_conf(struct wlan_objmgr_psoc *psoc);
3532
3533 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
3534 /**
3535 * wlan_mlme_get_roam_reason_vsie_status() - Indicate if roam reason
3536 * vsie is enabled or disabled
3537 * @psoc: pointer to psoc object
3538 * @roam_reason_vsie_enabled: pointer to hold value of roam reason
3539 * vsie
3540 *
3541 * Return: QDF_STATUS
3542 */
3543 QDF_STATUS
3544 wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
3545 uint8_t *roam_reason_vsie_enabled);
3546
3547 /**
3548 * wlan_mlme_set_roam_reason_vsie_status() - Update roam reason vsie status
3549 * @psoc: pointer to psoc object
3550 * @roam_reason_vsie_enabled: value of roam reason vsie
3551 *
3552 * Return: QDF_STATUS
3553 */
3554 QDF_STATUS
3555 wlan_mlme_set_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
3556 uint8_t roam_reason_vsie_enabled);
3557
3558 /**
3559 * wlan_mlme_get_roaming_triggers - Get the roaming triggers bitmap
3560 * @psoc: Pointer to PSOC object
3561 *
3562 * Return: Roaming triggers value
3563 */
3564 uint32_t wlan_mlme_get_roaming_triggers(struct wlan_objmgr_psoc *psoc);
3565
3566 /**
3567 * wlan_mlme_set_roaming_triggers() - Set the roaming triggers bitmap
3568 * @psoc: Pointer to PSOC object
3569 * @trigger_bitmap: Roaming triggers bitmap to set
3570 *
3571 * Return: void
3572 */
3573 void wlan_mlme_set_roaming_triggers(struct wlan_objmgr_psoc *psoc,
3574 uint32_t trigger_bitmap);
3575
3576 /**
3577 * wlan_mlme_get_roaming_offload() - Get roaming offload setting
3578 * @psoc: pointer to psoc object
3579 * @val: Pointer to enable/disable roaming offload
3580 *
3581 * Return: QDF Status
3582 */
3583 QDF_STATUS
3584 wlan_mlme_get_roaming_offload(struct wlan_objmgr_psoc *psoc,
3585 bool *val);
3586
3587 /**
3588 * wlan_mlme_get_enable_disconnect_roam_offload() - Get emergency roaming
3589 * Enable/Disable status during deauth/disassoc
3590 * @psoc: pointer to psoc object
3591 * @val: Pointer to emergency roaming Enable/Disable status
3592 * during deauth/disassoc
3593 *
3594 * Return: QDF Status
3595 */
3596 QDF_STATUS
3597 wlan_mlme_get_enable_disconnect_roam_offload(struct wlan_objmgr_psoc *psoc,
3598 bool *val);
3599
3600 /**
3601 * wlan_mlme_get_enable_idle_roam() - Get Enable/Disable idle roaming status
3602 * @psoc: pointer to psoc object
3603 * @val: Pointer to Enable/Disable idle roaming status
3604 *
3605 * Return: QDF Status
3606 */
3607 QDF_STATUS
3608 wlan_mlme_get_enable_idle_roam(struct wlan_objmgr_psoc *psoc, bool *val);
3609
3610 /**
3611 * wlan_mlme_get_idle_roam_rssi_delta() - Get idle roam rssi delta
3612 * @psoc: pointer to psoc object
3613 * @val: Pointer to idle roam rssi delta
3614 *
3615 * Return: QDF Status
3616 */
3617 QDF_STATUS
3618 wlan_mlme_get_idle_roam_rssi_delta(struct wlan_objmgr_psoc *psoc,
3619 uint32_t *val);
3620
3621 /**
3622 * wlan_mlme_get_roam_info_stats_num() - Get roam information statistics number
3623 * @psoc: pointer to psoc object
3624 * @val: Pointer to roam_info_stats_num
3625 *
3626 * Return: QDF Status
3627 */
3628 QDF_STATUS
3629 wlan_mlme_get_roam_info_stats_num(struct wlan_objmgr_psoc *psoc, uint32_t *val);
3630
3631 /**
3632 * wlan_mlme_get_idle_roam_inactive_time() - Get idle roam inactive time
3633 * @psoc: pointer to psoc object
3634 * @val: Pointer to idle roam inactive time
3635 *
3636 * Return: QDF Status
3637 */
3638 QDF_STATUS
3639 wlan_mlme_get_idle_roam_inactive_time(struct wlan_objmgr_psoc *psoc,
3640 uint32_t *val);
3641 /**
3642 * wlan_mlme_get_idle_data_packet_count() - Get idle data packet count
3643 * @psoc: pointer to psoc object
3644 * @val: Pointer to idle data packet count
3645 *
3646 * Return: QDF Status
3647 */
3648 QDF_STATUS
3649 wlan_mlme_get_idle_data_packet_count(struct wlan_objmgr_psoc *psoc,
3650 uint32_t *val);
3651
3652 /**
3653 * wlan_mlme_get_idle_roam_min_rssi() - Get idle roam min rssi
3654 * @psoc: pointer to psoc object
3655 * @val: Pointer to idle roam min rssi
3656 *
3657 * Return: QDF Status
3658 */
3659 QDF_STATUS
3660 wlan_mlme_get_idle_roam_min_rssi(struct wlan_objmgr_psoc *psoc, uint32_t *val);
3661
3662 /**
3663 * wlan_mlme_get_idle_roam_band() - Get idle roam band
3664 * @psoc: pointer to psoc object
3665 * @val: Pointer to idle roam band
3666 *
3667 * Return: QDF Status
3668 */
3669 QDF_STATUS
3670 wlan_mlme_get_idle_roam_band(struct wlan_objmgr_psoc *psoc, uint32_t *val);
3671
3672 /**
3673 * wlan_mlme_get_self_bss_roam() - Get self bss roam enable status
3674 * @psoc: pointer to psoc object
3675 * @enable_self_bss_roam: Pointer to self bss roam enable status
3676 *
3677 * Return: QDF Status
3678 */
3679 QDF_STATUS
3680 wlan_mlme_get_self_bss_roam(struct wlan_objmgr_psoc *psoc,
3681 uint8_t *enable_self_bss_roam);
3682 #else
3683 static inline QDF_STATUS
wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc * psoc,uint8_t * roam_reason_vsie_enable)3684 wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
3685 uint8_t *roam_reason_vsie_enable)
3686 {
3687 return QDF_STATUS_E_FAILURE;
3688 }
3689
3690 static inline QDF_STATUS
wlan_mlme_set_roam_reason_vsie_status(struct wlan_objmgr_psoc * psoc,uint8_t roam_reason_vsie_enable)3691 wlan_mlme_set_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
3692 uint8_t roam_reason_vsie_enable)
3693 {
3694 return QDF_STATUS_E_FAILURE;
3695 }
3696
3697 static inline
wlan_mlme_get_roaming_triggers(struct wlan_objmgr_psoc * psoc)3698 uint32_t wlan_mlme_get_roaming_triggers(struct wlan_objmgr_psoc *psoc)
3699 {
3700 return 0xFFFF;
3701 }
3702
3703 static inline
wlan_mlme_set_roaming_triggers(struct wlan_objmgr_psoc * psoc,uint32_t trigger_bitmap)3704 void wlan_mlme_set_roaming_triggers(struct wlan_objmgr_psoc *psoc,
3705 uint32_t trigger_bitmap)
3706 {
3707 }
3708
3709 static inline QDF_STATUS
wlan_mlme_get_roaming_offload(struct wlan_objmgr_psoc * psoc,bool * val)3710 wlan_mlme_get_roaming_offload(struct wlan_objmgr_psoc *psoc,
3711 bool *val)
3712 {
3713 *val = false;
3714
3715 return QDF_STATUS_SUCCESS;
3716 }
3717 #endif
3718
3719 /**
3720 * wlan_mlme_set_peer_indicated_ch_width() - Set peer indicated channel width
3721 * @psoc: pointer to psoc object
3722 * @data: Pointer to peer operating mode change event status
3723 *
3724 * Return: QDF Status
3725 */
3726 QDF_STATUS
3727 wlan_mlme_set_peer_indicated_ch_width(struct wlan_objmgr_psoc *psoc,
3728 struct peer_oper_mode_event *data);
3729
3730 /**
3731 * wlan_mlme_get_peer_indicated_ch_width() - Get peer indicated channel width
3732 * @psoc: pointer to psoc object
3733 * @data: Pointer to peer operating mode change event status
3734 *
3735 * Return: QDF Status
3736 */
3737 QDF_STATUS
3738 wlan_mlme_get_peer_indicated_ch_width(struct wlan_objmgr_psoc *psoc,
3739 struct peer_oper_mode_event *data);
3740
3741 /**
3742 * wlan_mlme_set_ft_over_ds() - Update ft_over_ds
3743 * @psoc: pointer to psoc object
3744 * @ft_over_ds_enable: value of ft_over_ds
3745 *
3746 * Return: QDF_STATUS
3747 */
3748 QDF_STATUS wlan_mlme_set_ft_over_ds(struct wlan_objmgr_psoc *psoc,
3749 uint8_t ft_over_ds_enable);
3750 /**
3751 * wlan_mlme_get_dfs_chan_ageout_time() - Get the DFS Channel ageout time
3752 * @psoc: pointer to psoc object
3753 * @dfs_chan_ageout_time: output pointer to hold configured value of DFS
3754 * Channel ageout time
3755 *
3756 * Return: QDF Status
3757 */
3758 QDF_STATUS
3759 wlan_mlme_get_dfs_chan_ageout_time(struct wlan_objmgr_psoc *psoc,
3760 uint8_t *dfs_chan_ageout_time);
3761
3762 #ifdef WLAN_FEATURE_SAE
3763 /**
3764 * wlan_mlme_get_sae_assoc_retry_count() - Get the sae assoc retry count
3765 * @psoc: pointer to psoc object
3766 * @retry_count: assoc retry count
3767 *
3768 * Return: QDF Status
3769 */
3770 QDF_STATUS
3771 wlan_mlme_get_sae_assoc_retry_count(struct wlan_objmgr_psoc *psoc,
3772 uint8_t *retry_count);
3773 /**
3774 * wlan_mlme_get_sae_auth_retry_count() - Get the sae auth retry count
3775 * @psoc: pointer to psoc object
3776 * @retry_count: auth retry count
3777 *
3778 * Return: QDF Status
3779 */
3780 QDF_STATUS
3781 wlan_mlme_get_sae_auth_retry_count(struct wlan_objmgr_psoc *psoc,
3782 uint8_t *retry_count);
3783
3784 /**
3785 * wlan_mlme_get_sae_roam_auth_retry_count() - Get the sae roam auth retry count
3786 * @psoc: pointer to psoc object
3787 * @retry_count: auth retry count
3788 *
3789 * Return: QDF Status
3790 */
3791 QDF_STATUS
3792 wlan_mlme_get_sae_roam_auth_retry_count(struct wlan_objmgr_psoc *psoc,
3793 uint8_t *retry_count);
3794
3795 #else
3796 static inline QDF_STATUS
wlan_mlme_get_sae_assoc_retry_count(struct wlan_objmgr_psoc * psoc,uint8_t * retry_count)3797 wlan_mlme_get_sae_assoc_retry_count(struct wlan_objmgr_psoc *psoc,
3798 uint8_t *retry_count)
3799 {
3800 *retry_count = 0;
3801 return QDF_STATUS_SUCCESS;
3802 }
3803
3804 static inline QDF_STATUS
wlan_mlme_get_sae_auth_retry_count(struct wlan_objmgr_psoc * psoc,uint8_t * retry_count)3805 wlan_mlme_get_sae_auth_retry_count(struct wlan_objmgr_psoc *psoc,
3806 uint8_t *retry_count)
3807 {
3808 *retry_count = 0;
3809 return QDF_STATUS_SUCCESS;
3810 }
3811
3812 static inline QDF_STATUS
wlan_mlme_get_sae_roam_auth_retry_count(struct wlan_objmgr_psoc * psoc,uint8_t * retry_count)3813 wlan_mlme_get_sae_roam_auth_retry_count(struct wlan_objmgr_psoc *psoc,
3814 uint8_t *retry_count)
3815 {
3816 *retry_count = 0;
3817 return QDF_STATUS_SUCCESS;
3818 }
3819 #endif
3820
3821 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
3822 /**
3823 * wlan_mlme_get_dual_sta_roaming_enabled - API to get if the dual sta
3824 * roaming support is enabled.
3825 * @psoc: Pointer to global psoc object
3826 *
3827 * Return: True if dual sta roaming feature is enabled else return false
3828 */
3829 bool
3830 wlan_mlme_get_dual_sta_roaming_enabled(struct wlan_objmgr_psoc *psoc);
3831 #else
3832 static inline bool
wlan_mlme_get_dual_sta_roaming_enabled(struct wlan_objmgr_psoc * psoc)3833 wlan_mlme_get_dual_sta_roaming_enabled(struct wlan_objmgr_psoc *psoc)
3834 {
3835 return false;
3836 }
3837 #endif
3838
3839 /**
3840 * mlme_store_fw_scan_channels - Update the valid channel list to mlme.
3841 * @psoc: Pointer to global psoc object
3842 * @chan_list: Source channel list pointer
3843 *
3844 * Currently the channel list is saved to wma_handle to be updated in the
3845 * PCL command. This cannot be accessed at target_if while sending vdev
3846 * set pcl command. So save the channel list to mlme.
3847 *
3848 * Return: QDF_STATUS
3849 */
3850 QDF_STATUS
3851 mlme_store_fw_scan_channels(struct wlan_objmgr_psoc *psoc,
3852 tSirUpdateChanList *chan_list);
3853
3854 /**
3855 * mlme_get_fw_scan_channels - Copy the saved valid channel
3856 * list to the provided buffer
3857 * @psoc: Pointer to global psoc object
3858 * @freq_list: Pointer to the frequency list buffer to be filled
3859 * @saved_num_chan: Number of channels filled
3860 *
3861 * Return: QDF_STATUS
3862 */
3863 QDF_STATUS mlme_get_fw_scan_channels(struct wlan_objmgr_psoc *psoc,
3864 uint32_t *freq_list,
3865 uint8_t *saved_num_chan);
3866 /**
3867 * wlan_mlme_get_roam_scan_offload_enabled() - Roam scan offload enable or not
3868 * @psoc: pointer to psoc object
3869 * @val: Pointer to the value which will be filled for the caller
3870 *
3871 * Return: QDF Status
3872 */
3873 QDF_STATUS
3874 wlan_mlme_get_roam_scan_offload_enabled(struct wlan_objmgr_psoc *psoc,
3875 bool *val);
3876
3877 /**
3878 * wlan_mlme_get_roam_bmiss_final_bcnt() - Get roam bmiss final count
3879 * @psoc: pointer to psoc object
3880 * @val: Pointer to the value which will be filled for the caller
3881 *
3882 * Return: QDF Status
3883 */
3884 QDF_STATUS
3885 wlan_mlme_get_roam_bmiss_final_bcnt(struct wlan_objmgr_psoc *psoc,
3886 uint8_t *val);
3887
3888 /**
3889 * wlan_mlme_get_roam_bmiss_first_bcnt() - Get roam bmiss first count
3890 * @psoc: pointer to psoc object
3891 * @val: Pointer to the value which will be filled for the caller
3892 *
3893 * Return: QDF Status
3894 */
3895 QDF_STATUS
3896 wlan_mlme_get_roam_bmiss_first_bcnt(struct wlan_objmgr_psoc *psoc,
3897 uint8_t *val);
3898
3899 /**
3900 * wlan_mlme_get_bmiss_timeout_on_wakeup() - Get bmiss timeout
3901 * @psoc: pointer to psoc object
3902 * @val: Pointer to the value which will be filled for the caller
3903 *
3904 * Return: QDF Status
3905 */
3906 QDF_STATUS
3907 wlan_mlme_get_bmiss_timeout_on_wakeup(struct wlan_objmgr_psoc *psoc,
3908 uint8_t *val);
3909
3910 /**
3911 * wlan_mlme_get_bmiss_timeout_on_sleep() - Get roam conbmiss timeout
3912 * @psoc: pointer to psoc object
3913 * @val: Pointer to the value which will be filled for the caller
3914 *
3915 * Return: QDF Status
3916 */
3917 QDF_STATUS
3918 wlan_mlme_get_bmiss_timeout_on_sleep(struct wlan_objmgr_psoc *psoc,
3919 uint8_t *val);
3920
3921 /**
3922 * wlan_mlme_adaptive_11r_enabled() - check if adaptive 11r feature is enaled
3923 * or not
3924 * @psoc: pointer to psoc object
3925 *
3926 * Return: bool
3927 */
3928 #ifdef WLAN_ADAPTIVE_11R
3929 bool wlan_mlme_adaptive_11r_enabled(struct wlan_objmgr_psoc *psoc);
3930 #else
wlan_mlme_adaptive_11r_enabled(struct wlan_objmgr_psoc * psoc)3931 static inline bool wlan_mlme_adaptive_11r_enabled(struct wlan_objmgr_psoc *psoc)
3932 {
3933 return false;
3934 }
3935 #endif
3936
3937 /**
3938 * wlan_mlme_get_mawc_enabled() - Get mawc enabled status
3939 * @psoc: pointer to psoc object
3940 * @val: Pointer to the value which will be filled for the caller
3941 *
3942 * Return: QDF Status
3943 */
3944 QDF_STATUS
3945 wlan_mlme_get_mawc_enabled(struct wlan_objmgr_psoc *psoc, bool *val);
3946
3947 /**
3948 * wlan_mlme_get_mawc_roam_enabled() - Get mawc roam enabled status
3949 * @psoc: pointer to psoc object
3950 * @val: Pointer to the value which will be filled for the caller
3951 *
3952 * Return: QDF Status
3953 */
3954 QDF_STATUS
3955 wlan_mlme_get_mawc_roam_enabled(struct wlan_objmgr_psoc *psoc, bool *val);
3956
3957 /**
3958 * wlan_mlme_get_mawc_roam_traffic_threshold() - Get mawc traffic threshold
3959 * @psoc: pointer to psoc object
3960 * @val: Pointer to the value which will be filled for the caller
3961 *
3962 * Return: QDF Status
3963 */
3964 QDF_STATUS
3965 wlan_mlme_get_mawc_roam_traffic_threshold(struct wlan_objmgr_psoc *psoc,
3966 uint32_t *val);
3967
3968 /**
3969 * wlan_mlme_get_mawc_roam_ap_rssi_threshold() - Get AP RSSI threshold for
3970 * MAWC roaming
3971 * @psoc: pointer to psoc object
3972 * @val: Pointer to the value which will be filled for the caller
3973 *
3974 * Return: QDF Status
3975 */
3976 QDF_STATUS
3977 wlan_mlme_get_mawc_roam_ap_rssi_threshold(struct wlan_objmgr_psoc *psoc,
3978 uint32_t *val);
3979
3980 /**
3981 * wlan_mlme_get_mawc_roam_rssi_high_adjust() - Get high adjustment value
3982 * for suppressing scan
3983 * @psoc: pointer to psoc object
3984 * @val: Pointer to the value which will be filled for the caller
3985 *
3986 * Return: QDF Status
3987 */
3988 QDF_STATUS
3989 wlan_mlme_get_mawc_roam_rssi_high_adjust(struct wlan_objmgr_psoc *psoc,
3990 uint8_t *val);
3991
3992 /**
3993 * wlan_mlme_get_mawc_roam_rssi_low_adjust() - Get low adjustment value
3994 * for suppressing scan
3995 * @psoc: pointer to psoc object
3996 * @val: Pointer to the value which will be filled for the caller
3997 *
3998 * Return: QDF Status
3999 */
4000 QDF_STATUS
4001 wlan_mlme_get_mawc_roam_rssi_low_adjust(struct wlan_objmgr_psoc *psoc,
4002 uint8_t *val);
4003
4004 /**
4005 * wlan_mlme_get_bss_load_enabled() - Get bss load based roam trigger
4006 * enabled status
4007 * @psoc: pointer to psoc object
4008 * @val: Pointer to the value which will be filled for the caller
4009 *
4010 * Return: QDF Status
4011 */
4012 QDF_STATUS
4013 wlan_mlme_get_bss_load_enabled(struct wlan_objmgr_psoc *psoc, bool *val);
4014
4015 /**
4016 * wlan_mlme_get_bss_load_threshold() - Get bss load threshold
4017 * @psoc: pointer to psoc object
4018 * @val: Pointer to the value which will be filled for the caller
4019 *
4020 * Return: QDF Status
4021 */
4022 QDF_STATUS
4023 wlan_mlme_get_bss_load_threshold(struct wlan_objmgr_psoc *psoc, uint32_t *val);
4024
4025 /**
4026 * wlan_mlme_get_bss_load_sample_time() - Get bss load sample time
4027 * @psoc: pointer to psoc object
4028 * @val: Pointer to the value which will be filled for the caller
4029 *
4030 * Return: QDF Status
4031 */
4032 QDF_STATUS
4033 wlan_mlme_get_bss_load_sample_time(struct wlan_objmgr_psoc *psoc,
4034 uint32_t *val);
4035
4036 /**
4037 * wlan_mlme_get_bss_load_rssi_threshold_6ghz() - Get bss load RSSI
4038 * threshold on 6G
4039 * @psoc: pointer to psoc object
4040 * @val: Pointer to the value which will be filled for the caller
4041 *
4042 * Return: QDF Status
4043 */
4044 QDF_STATUS
4045 wlan_mlme_get_bss_load_rssi_threshold_6ghz(struct wlan_objmgr_psoc *psoc,
4046 int32_t *val);
4047
4048 /**
4049 * wlan_mlme_get_bss_load_rssi_threshold_5ghz() - Get bss load RSSI
4050 * threshold on 5G
4051 * @psoc: pointer to psoc object
4052 * @val: Pointer to the value which will be filled for the caller
4053 *
4054 * Return: QDF Status
4055 */
4056 QDF_STATUS
4057 wlan_mlme_get_bss_load_rssi_threshold_5ghz(struct wlan_objmgr_psoc *psoc,
4058 int32_t *val);
4059
4060 /**
4061 * wlan_mlme_get_bss_load_rssi_threshold_24ghz() - Get bss load RSSI
4062 * threshold on 2.4G
4063 * @psoc: pointer to psoc object
4064 * @val: Pointer to the value which will be filled for the caller
4065 *
4066 * Return: QDF Status
4067 */
4068 QDF_STATUS
4069 wlan_mlme_get_bss_load_rssi_threshold_24ghz(struct wlan_objmgr_psoc *psoc,
4070 int32_t *val);
4071 /**
4072 * wlan_mlme_check_chan_param_has_dfs() - Get dfs flag based on
4073 * channel & channel parameters
4074 * @pdev: pdev object
4075 * @ch_params: channel parameters
4076 * @chan_freq: channel frequency in MHz
4077 *
4078 * Return: True for dfs
4079 */
4080 bool
4081 wlan_mlme_check_chan_param_has_dfs(struct wlan_objmgr_pdev *pdev,
4082 struct ch_params *ch_params,
4083 uint32_t chan_freq);
4084
4085 /**
4086 * wlan_mlme_set_usr_disabled_roaming() - Set user config for roaming disable
4087 * @psoc: pointer to psoc object
4088 * @val: user config for roaming disable
4089 *
4090 * Return: QDF_STATUS
4091 */
4092 QDF_STATUS
4093 wlan_mlme_set_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool val);
4094
4095 /**
4096 * wlan_mlme_get_usr_disabled_roaming() - Get user config for roaming disable
4097 * @psoc: pointer to psoc object
4098 * @val: user config for roaming disable
4099 *
4100 * Return: QDF_STATUS
4101 */
4102 QDF_STATUS
4103 wlan_mlme_get_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool *val);
4104
4105 /**
4106 * mlme_get_opr_rate() - get operational rate
4107 * @vdev: vdev pointer
4108 * @dst: buffer to get rates set
4109 * @len: length of the buffer
4110 *
4111 * Return: length of the rates set
4112 */
4113 qdf_size_t mlme_get_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
4114 qdf_size_t len);
4115
4116 /**
4117 * mlme_set_opr_rate() - set operational rate
4118 * @vdev: vdev pointer
4119 * @src: pointer to set operational rate
4120 * @len: length of operational rate
4121 *
4122 * Return: QDF_SUCCESS if success
4123 */
4124 QDF_STATUS mlme_set_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
4125 qdf_size_t len);
4126
4127 /**
4128 * mlme_get_ext_opr_rate() - get extended operational rate
4129 * @vdev: vdev pointer
4130 * @dst: buffer to get rates set
4131 * @len: length of the buffer
4132 *
4133 * Return: length of the rates set
4134 */
4135 qdf_size_t mlme_get_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
4136 qdf_size_t len);
4137
4138 /**
4139 * mlme_set_ext_opr_rate() - set extended operational rate
4140 * @vdev: vdev pointer
4141 * @src: pointer to set extended operational rate
4142 * @len: length of extended operational rate
4143 *
4144 * Return: QDF_SUCCESS if success
4145 */
4146 QDF_STATUS mlme_set_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
4147 qdf_size_t len);
4148
4149 /**
4150 * mlme_clear_ext_opr_rate() - clear extended operational rate
4151 * @vdev: vdev pointer
4152 *
4153 * Return: QDF_SUCCESS if success
4154 */
4155 QDF_STATUS mlme_clear_ext_opr_rate(struct wlan_objmgr_vdev *vdev);
4156
4157 /**
4158 * mlme_get_mcs_rate() - get MCS based rate
4159 * @vdev: vdev pointer
4160 * @dst: buffer to get rates set
4161 * @len: length of the buffer
4162 *
4163 * Return: length of the rates set
4164 */
4165 qdf_size_t mlme_get_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
4166 qdf_size_t len);
4167
4168 /**
4169 * mlme_set_mcs_rate() - set MCS based rate
4170 * @vdev: vdev pointer
4171 * @src: pointer to set MCS based rate
4172 * @len: length of MCS based rate
4173 *
4174 * Return: QDF_SUCCESS if success
4175 */
4176 QDF_STATUS mlme_set_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
4177 qdf_size_t len);
4178
4179 /**
4180 * mlme_clear_mcs_rate() - clear MCS based rate
4181 * @vdev: vdev pointer
4182 *
4183 * Return: QDF_SUCCESS if success
4184 */
4185 QDF_STATUS mlme_clear_mcs_rate(struct wlan_objmgr_vdev *vdev);
4186
4187 /**
4188 * wlan_mlme_is_sta_mon_conc_supported() - Check if STA + Monitor mode
4189 * concurrency is supported
4190 * @psoc: pointer to psoc object
4191 *
4192 * Return: True if supported
4193 */
4194 bool wlan_mlme_is_sta_mon_conc_supported(struct wlan_objmgr_psoc *psoc);
4195
4196 /**
4197 * wlan_mlme_get_phy_max_freq_range() - Get phy supported max channel
4198 * frequency range
4199 * @psoc: psoc for country information
4200 * @low_2ghz_chan: 2.4 GHz low channel frequency
4201 * @high_2ghz_chan: 2.4 GHz high channel frequency
4202 * @low_5ghz_chan: 5 GHz low channel frequency
4203 * @high_5ghz_chan: 5 GHz high channel frequency
4204 *
4205 * Return: QDF status
4206 */
4207 QDF_STATUS wlan_mlme_get_phy_max_freq_range(struct wlan_objmgr_psoc *psoc,
4208 uint32_t *low_2ghz_chan,
4209 uint32_t *high_2ghz_chan,
4210 uint32_t *low_5ghz_chan,
4211 uint32_t *high_5ghz_chan);
4212
4213 /**
4214 * wlan_mlme_is_multipass_sap() -Get multipass sap support
4215 * @psoc: psoc pointer
4216 *
4217 * Return: True, if FW support multipass support.
4218 */
4219 bool wlan_mlme_is_multipass_sap(struct wlan_objmgr_psoc *psoc);
4220
4221 #ifdef FEATURE_WDS
4222 /**
4223 * wlan_mlme_get_wds_mode() - Check wds mode supported
4224 * @psoc: pointer to psoc object
4225 *
4226 * Return: supported wds mode
4227 */
4228 enum wlan_wds_mode
4229 wlan_mlme_get_wds_mode(struct wlan_objmgr_psoc *psoc);
4230
4231 /**
4232 * wlan_mlme_set_wds_mode() - Set wds mode
4233 * @psoc: pointer to psoc object
4234 * @mode: wds mode to set
4235 *
4236 * Return: void
4237 */
4238 void wlan_mlme_set_wds_mode(struct wlan_objmgr_psoc *psoc,
4239 enum wlan_wds_mode mode);
4240 #else
4241 static inline enum wlan_wds_mode
wlan_mlme_get_wds_mode(struct wlan_objmgr_psoc * psoc)4242 wlan_mlme_get_wds_mode(struct wlan_objmgr_psoc *psoc)
4243 {
4244 return WLAN_WDS_MODE_DISABLED;
4245 }
4246
wlan_mlme_set_wds_mode(struct wlan_objmgr_psoc * psoc,enum wlan_wds_mode mode)4247 static inline void wlan_mlme_set_wds_mode(struct wlan_objmgr_psoc *psoc,
4248 enum wlan_wds_mode mode)
4249 {
4250 }
4251 #endif
4252
4253 #ifdef WLAN_SUPPORT_TWT
4254 /**
4255 * mlme_is_twt_enabled() - Get if TWT is enabled via ini.
4256 * @psoc: pointer to psoc object
4257 *
4258 * Return: True if TWT is enabled else false.
4259 */
4260 bool
4261 mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc);
4262 #else
4263 static inline bool
mlme_is_twt_enabled(struct wlan_objmgr_psoc * psoc)4264 mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc)
4265 {
4266 return false;
4267 }
4268 #endif /* WLAN_SUPPORT_TWT */
4269
4270 /**
4271 * wlan_mlme_skip_tpe() - Get preference to not consider TPE in 2G/5G case
4272 *
4273 * @psoc: pointer to psoc object
4274 *
4275 * Return: True if host should not consider TPE IE in TX power calculation when
4276 * operating in 2G/5G bands, false if host should always consider TPE IE values
4277 */
4278 bool wlan_mlme_skip_tpe(struct wlan_objmgr_psoc *psoc);
4279
4280 /**
4281 * wlan_mlme_is_data_stall_recovery_fw_supported() - Check if data stall
4282 * recovery is supported by fw
4283 * @psoc: pointer to psoc object
4284 *
4285 * Return: True if supported
4286 */
4287 bool
4288 wlan_mlme_is_data_stall_recovery_fw_supported(struct wlan_objmgr_psoc *psoc);
4289
4290 /**
4291 * mlme_cfg_get_orig_eht_caps() - Get the original EHT capability info
4292 * @psoc: pointer to psoc object
4293 * @eht_cap: Caps that needs to be filled.
4294 *
4295 * Return: QDF Status
4296 */
4297 QDF_STATUS mlme_cfg_get_orig_eht_caps(struct wlan_objmgr_psoc *psoc,
4298 tDot11fIEeht_cap *eht_cap);
4299
4300 /**
4301 * mlme_cfg_get_eht_caps() - Get the EHT capability info
4302 * @psoc: pointer to psoc object
4303 * @eht_cap: Caps that needs to be filled.
4304 *
4305 * Return: QDF Status
4306 */
4307 QDF_STATUS mlme_cfg_get_eht_caps(struct wlan_objmgr_psoc *psoc,
4308 tDot11fIEeht_cap *eht_cap);
4309
4310 /**
4311 * wlan_mlme_set_bt_profile_con() - Set bluetooth connection profile
4312 * @psoc: pointer to psoc object
4313 * @bt_profile_con: Bluetooth connection profile bit
4314 *
4315 * Return: None
4316 */
4317 void
4318 wlan_mlme_set_bt_profile_con(struct wlan_objmgr_psoc *psoc,
4319 bool bt_profile_con);
4320
4321 /**
4322 * wlan_mlme_get_bt_profile_con() - Get Bluetooth connection profile
4323 * @psoc: pointer to psoc object
4324 *
4325 * Return: Bluetooth connection profile
4326 */
4327 bool
4328 wlan_mlme_get_bt_profile_con(struct wlan_objmgr_psoc *psoc);
4329
4330 #ifdef WLAN_FEATURE_11BE_MLO
4331 /**
4332 * wlan_mlme_get_sta_mlo_conn_max_num() - get max number of links that sta mlo
4333 * connection can support
4334 * @psoc: pointer to psoc object
4335 *
4336 * Return: max number of links that sta mlo connection can support
4337 */
4338 uint8_t wlan_mlme_get_sta_mlo_conn_max_num(struct wlan_objmgr_psoc *psoc);
4339
4340 /**
4341 * wlan_mlme_is_5gl_5gh_mlsr_supported() - check 5GH_5GL MLSR supported
4342 * @psoc: pointer to psoc object
4343 *
4344 * Return: true if 5GH_5GL MLSR supported otherwise false
4345 */
4346 bool wlan_mlme_is_5gl_5gh_mlsr_supported(struct wlan_objmgr_psoc *psoc);
4347
4348 /**
4349 * wlan_mlme_set_sta_mlo_conn_max_num() - set max number of links that sta mlo
4350 * connection can support
4351 * @psoc: pointer to psoc object
4352 * @value: value to set
4353 *
4354 * Return: QDF Status
4355 */
4356 QDF_STATUS wlan_mlme_set_sta_mlo_conn_max_num(struct wlan_objmgr_psoc *psoc,
4357 uint8_t value);
4358
4359 /**
4360 * wlan_mlme_set_user_set_link_num() - set number of links that config by user
4361 * @psoc: pointer to psoc object
4362 * @value: value to set
4363 *
4364 * Return: QDF Status
4365 */
4366 QDF_STATUS wlan_mlme_set_user_set_link_num(struct wlan_objmgr_psoc *psoc,
4367 uint8_t value);
4368
4369 /**
4370 * wlan_mlme_set_ml_link_control_mode() - set ml_link_control_mode
4371 * @psoc: pointer to psoc object
4372 * @vdev_id: vdev id
4373 * @value: value to set
4374 *
4375 * API get call when host receives vendor command
4376 * QCA_NL80211_VENDOR_SUBCMD_MLO_LINK_STATE to configure link control mode.
4377 *
4378 * Return: none
4379 */
4380 void wlan_mlme_set_ml_link_control_mode(struct wlan_objmgr_psoc *psoc,
4381 uint8_t vdev_id, uint8_t value);
4382
4383 /**
4384 * wlan_mlme_get_ml_link_control_mode() - get ml_link_control_mode
4385 * @psoc: pointer to psoc object
4386 * @vdev_id: vdev id
4387 *
4388 * Return: value of ml_link_control_mode in success
4389 */
4390 uint8_t wlan_mlme_get_ml_link_control_mode(struct wlan_objmgr_psoc *psoc,
4391 uint8_t vdev_id);
4392
4393 /**
4394 * wlan_mlme_restore_user_set_link_num() - restore link num when SSR happens
4395 * @psoc: pointer to psoc object
4396 *
4397 * Return: void
4398 */
4399 void wlan_mlme_restore_user_set_link_num(struct wlan_objmgr_psoc *psoc);
4400
4401 /**
4402 * wlan_mlme_clear_user_set_link_num() - clear user set link num
4403 * @psoc: pointer to psoc object
4404 *
4405 * Return: void
4406 */
4407 void wlan_mlme_clear_user_set_link_num(struct wlan_objmgr_psoc *psoc);
4408
4409 /**
4410 * wlan_mlme_get_sta_mlo_conn_band_bmp() - get band bitmap that sta mlo
4411 * connection can support
4412 * @psoc: pointer to psoc object
4413 *
4414 * Return: band bitmap that sta mlo connection can support
4415 */
4416 uint8_t wlan_mlme_get_sta_mlo_conn_band_bmp(struct wlan_objmgr_psoc *psoc);
4417
4418 /**
4419 * wlan_mlme_set_sta_mlo_simultaneous_links() - set mlo simultaneous links
4420 * @psoc: pointer to psoc object
4421 * @value: value to set
4422 *
4423 * Return: QDF Status
4424 */
4425 QDF_STATUS
4426 wlan_mlme_set_sta_mlo_simultaneous_links(struct wlan_objmgr_psoc *psoc,
4427 uint8_t value);
4428
4429 /**
4430 * wlan_mlme_get_sta_mlo_simultaneous_links() - get mlo simultaneous links
4431 * @psoc: pointer to psoc object
4432 *
4433 * Return: number of links
4434 */
4435 uint8_t wlan_mlme_get_sta_mlo_simultaneous_links(struct wlan_objmgr_psoc *psoc);
4436
4437 /**
4438 * wlan_mlme_set_sta_mlo_conn_band_bmp() - set band bitmap that sta mlo
4439 * connection can support
4440 * @psoc: pointer to psoc object
4441 * @value: value to set
4442 *
4443 * Return: QDF Status
4444 */
4445 QDF_STATUS wlan_mlme_set_sta_mlo_conn_band_bmp(struct wlan_objmgr_psoc *psoc,
4446 uint8_t value);
4447
4448 /**
4449 * wlan_mlme_get_sta_same_link_mld_addr() - check if mld/link use same address
4450 * @psoc: pointer to psoc object
4451 *
4452 * Return: bool to check if the mld/link use same mac address
4453 */
4454 bool wlan_mlme_get_sta_same_link_mld_addr(struct wlan_objmgr_psoc *psoc);
4455 #else
4456 static inline
wlan_mlme_set_ml_link_control_mode(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,uint8_t value)4457 void wlan_mlme_set_ml_link_control_mode(struct wlan_objmgr_psoc *psoc,
4458 uint8_t vdev_id, uint8_t value)
4459 {
4460 }
4461
4462 static inline
wlan_mlme_get_ml_link_control_mode(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)4463 uint8_t wlan_mlme_get_ml_link_control_mode(struct wlan_objmgr_psoc *psoc,
4464 uint8_t vdev_id)
4465 {
4466 return 0;
4467 }
4468
4469 static inline QDF_STATUS
wlan_mlme_set_user_set_link_num(struct wlan_objmgr_psoc * psoc,uint8_t value)4470 wlan_mlme_set_user_set_link_num(struct wlan_objmgr_psoc *psoc,
4471 uint8_t value)
4472 {
4473 return QDF_STATUS_SUCCESS;
4474 }
4475
4476 static inline
wlan_mlme_restore_user_set_link_num(struct wlan_objmgr_psoc * psoc)4477 void wlan_mlme_restore_user_set_link_num(struct wlan_objmgr_psoc *psoc)
4478 {
4479 }
4480
4481 static inline
wlan_mlme_clear_user_set_link_num(struct wlan_objmgr_psoc * psoc)4482 void wlan_mlme_clear_user_set_link_num(struct wlan_objmgr_psoc *psoc)
4483 {
4484 }
4485
4486 static inline QDF_STATUS
wlan_mlme_set_sta_mlo_conn_max_num(struct wlan_objmgr_psoc * psoc,uint8_t value)4487 wlan_mlme_set_sta_mlo_conn_max_num(struct wlan_objmgr_psoc *psoc,
4488 uint8_t value)
4489 {
4490 return QDF_STATUS_SUCCESS;
4491 }
4492
4493 static inline uint8_t
wlan_mlme_get_sta_mlo_conn_max_num(struct wlan_objmgr_psoc * psoc)4494 wlan_mlme_get_sta_mlo_conn_max_num(struct wlan_objmgr_psoc *psoc)
4495 {
4496 return 0;
4497 }
4498
4499 static inline bool
wlan_mlme_is_5gl_5gh_mlsr_supported(struct wlan_objmgr_psoc * psoc)4500 wlan_mlme_is_5gl_5gh_mlsr_supported(struct wlan_objmgr_psoc *psoc)
4501 {
4502 return 0;
4503 }
4504
4505 static inline QDF_STATUS
wlan_mlme_set_sta_mlo_simultaneous_links(struct wlan_objmgr_psoc * psoc,uint8_t value)4506 wlan_mlme_set_sta_mlo_simultaneous_links(struct wlan_objmgr_psoc *psoc,
4507 uint8_t value)
4508 {
4509 return QDF_STATUS_SUCCESS;
4510 }
4511
4512 static inline QDF_STATUS
wlan_mlme_set_sta_mlo_conn_band_bmp(struct wlan_objmgr_psoc * psoc,uint8_t value)4513 wlan_mlme_set_sta_mlo_conn_band_bmp(struct wlan_objmgr_psoc *psoc,
4514 uint8_t value)
4515 {
4516 return QDF_STATUS_SUCCESS;
4517 }
4518 #endif
4519
4520 /**
4521 * wlan_mlme_set_ba_2k_jump_iot_ap() - Set a flag if ba 2k jump IOT AP is found
4522 * @vdev: vdev pointer
4523 * @found: Carries the value true if ba 2k jump IOT AP is found
4524 *
4525 * Return: QDF Status
4526 */
4527 QDF_STATUS
4528 wlan_mlme_set_ba_2k_jump_iot_ap(struct wlan_objmgr_vdev *vdev, bool found);
4529
4530 /**
4531 * wlan_mlme_is_ba_2k_jump_iot_ap() - Check if ba 2k jump IOT AP is found
4532 * @vdev: vdev pointer
4533 *
4534 * Return: true if ba 2k jump IOT AP is found
4535 */
4536 bool
4537 wlan_mlme_is_ba_2k_jump_iot_ap(struct wlan_objmgr_vdev *vdev);
4538
4539 /**
4540 * wlan_mlme_set_last_delba_sent_time() - Cache the last delba sent ts
4541 * @vdev: vdev pointer
4542 * @delba_sent_time: Last delba sent timestamp
4543 *
4544 * Return: QDF Status
4545 */
4546 QDF_STATUS
4547 wlan_mlme_set_last_delba_sent_time(struct wlan_objmgr_vdev *vdev,
4548 qdf_time_t delba_sent_time);
4549
4550 /**
4551 * wlan_mlme_get_last_delba_sent_time() - Get the last delba sent ts
4552 * @vdev: vdev pointer
4553 *
4554 * Return: Last delba timestamp if cached, 0 otherwise
4555 */
4556 qdf_time_t
4557 wlan_mlme_get_last_delba_sent_time(struct wlan_objmgr_vdev *vdev);
4558
4559 /**
4560 * mlme_set_user_ps() - Set the PS user config
4561 * @psoc: Pointer to psoc object
4562 * @vdev_id: vdev id
4563 * @ps_enable: User PS enable
4564 *
4565 * Return: QDF_STATUS
4566 */
4567 QDF_STATUS mlme_set_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
4568 bool ps_enable);
4569
4570 /**
4571 * mlme_get_user_ps() - Set the user ps flag
4572 * @psoc: Pointer to psoc object
4573 * @vdev_id: vdev id
4574 *
4575 * Return: True if user_ps flag is set
4576 */
4577 bool mlme_get_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
4578
4579 #ifdef WLAN_FEATURE_P2P_P2P_STA
4580 /**
4581 * wlan_mlme_get_p2p_p2p_conc_support() - Get p2p+p2p conc support
4582 * @psoc: pointer to psoc object
4583 *
4584 * Return: Success/failure
4585 */
4586 bool
4587 wlan_mlme_get_p2p_p2p_conc_support(struct wlan_objmgr_psoc *psoc);
4588 #else
4589 static inline bool
wlan_mlme_get_p2p_p2p_conc_support(struct wlan_objmgr_psoc * psoc)4590 wlan_mlme_get_p2p_p2p_conc_support(struct wlan_objmgr_psoc *psoc)
4591 {
4592 return false;
4593 }
4594 #endif
4595
4596 /**
4597 * mlme_get_vht_ch_width() - get vht channel width of fw capability
4598 *
4599 * Return: vht channel width
4600 */
4601 enum phy_ch_width mlme_get_vht_ch_width(void);
4602
4603 /**
4604 * wlan_mlme_get_mgmt_hw_tx_retry_count() - Get mgmt frame hw tx retry count
4605 * @psoc: pointer to psoc object
4606 * @frm_type: frame type of the query
4607 *
4608 * Return: hw tx retry count
4609 */
4610 uint8_t
4611 wlan_mlme_get_mgmt_hw_tx_retry_count(struct wlan_objmgr_psoc *psoc,
4612 enum mlme_cfg_frame_type frm_type);
4613
4614 /**
4615 * wlan_mlme_get_tx_retry_multiplier() - Get the tx retry multiplier percentage
4616 * @psoc: pointer to psoc object
4617 * @tx_retry_multiplier: pointer to hold user config value of
4618 * tx_retry_multiplier
4619 *
4620 * Return: QDF Status
4621 */
4622 QDF_STATUS
4623 wlan_mlme_get_tx_retry_multiplier(struct wlan_objmgr_psoc *psoc,
4624 uint32_t *tx_retry_multiplier);
4625
4626 /**
4627 * wlan_mlme_get_update_chan_width_allowed - Get value of INI
4628 * is_update_chan_width_allowed
4629 * @psoc: pointer to psoc object
4630 * @value: pointer to the value which will be filled for the caller
4631 *
4632 * Return: QDF Status
4633 */
4634 QDF_STATUS
4635 wlan_mlme_get_update_chan_width_allowed(struct wlan_objmgr_psoc *psoc,
4636 bool *value);
4637
4638 /**
4639 * wlan_mlme_get_channel_bonding_5ghz - Get the channel bonding
4640 * val for 5ghz freq
4641 * @psoc: pointer to psoc object
4642 * @value: pointer to the value which will be filled for the caller
4643 *
4644 * Return: QDF Status
4645 */
4646 QDF_STATUS
4647 wlan_mlme_get_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc,
4648 uint32_t *value);
4649
4650 /**
4651 * wlan_mlme_update_ratemask_params() - Update ratemask params
4652 *
4653 * @vdev: pointer to vdev object
4654 * @num_ratemask: number of rate masks
4655 * @rate_params: pointer to ratemask structure
4656 *
4657 * Return: QDF Status
4658 */
4659 QDF_STATUS
4660 wlan_mlme_update_ratemask_params(struct wlan_objmgr_vdev *vdev,
4661 uint8_t num_ratemask,
4662 struct config_ratemask_params *rate_params);
4663
4664 /**
4665 * wlan_mlme_is_channel_valid() - validate channel frequency
4666 * @psoc: psoc object manager
4667 * @chan_freq: channel frequency
4668 *
4669 * This function validates channel frequency present in valid channel
4670 * list or not.
4671 *
4672 * Return: true or false
4673 */
4674 bool wlan_mlme_is_channel_valid(struct wlan_objmgr_psoc *psoc,
4675 uint32_t chan_freq);
4676 #ifdef WLAN_FEATURE_MCC_QUOTA
4677 /**
4678 * wlan_mlme_set_user_mcc_quota() - set the user mcc quota in mlme
4679 * @psoc: pointer to psoc object
4680 * @quota: pointer to user set mcc quota object
4681 *
4682 * Return: QDF Status
4683 */
4684 QDF_STATUS wlan_mlme_set_user_mcc_quota(struct wlan_objmgr_psoc *psoc,
4685 struct wlan_user_mcc_quota *quota);
4686
4687 /**
4688 * wlan_mlme_get_user_mcc_quota() - Get the user mcc quota from mlme
4689 * @psoc: pointer to psoc object
4690 * @quota: pointer to user set mcc quota object
4691 *
4692 * Return: QDF Status
4693 */
4694 QDF_STATUS wlan_mlme_get_user_mcc_quota(struct wlan_objmgr_psoc *psoc,
4695 struct wlan_user_mcc_quota *quota);
4696
4697 /**
4698 * wlan_mlme_get_user_mcc_duty_cycle_percentage() - Get user mcc duty cycle
4699 * @psoc: pointer to psoc object
4700 *
4701 * Return: MCC duty cycle if MCC exists for the user MCC quota, else 0
4702 */
4703 uint32_t
4704 wlan_mlme_get_user_mcc_duty_cycle_percentage(struct wlan_objmgr_psoc *psoc);
4705 #else
4706 static inline QDF_STATUS
wlan_mlme_set_user_mcc_quota(struct wlan_objmgr_psoc * psoc,struct wlan_user_mcc_quota * quota)4707 wlan_mlme_set_user_mcc_quota(struct wlan_objmgr_psoc *psoc,
4708 struct wlan_user_mcc_quota *quota)
4709 {
4710 return QDF_STATUS_SUCCESS;
4711 }
4712
4713 static inline QDF_STATUS
wlan_mlme_get_user_mcc_quota(struct wlan_objmgr_psoc * psoc,struct wlan_user_mcc_quota * quota)4714 wlan_mlme_get_user_mcc_quota(struct wlan_objmgr_psoc *psoc,
4715 struct wlan_user_mcc_quota *quota)
4716 {
4717 return QDF_STATUS_E_NOSUPPORT;
4718 }
4719
4720 static inline uint32_t
wlan_mlme_get_user_mcc_duty_cycle_percentage(struct wlan_objmgr_psoc * psoc)4721 wlan_mlme_get_user_mcc_duty_cycle_percentage(struct wlan_objmgr_psoc *psoc)
4722 {
4723 return 0;
4724 }
4725 #endif /* WLAN_FEATURE_MCC_QUOTA */
4726
4727 /**
4728 * mlme_get_max_he_mcs_idx() - get max mcs index from he cap information
4729 * @mcs_ch_width: channel width
4730 * @hecap_rxmcsnssmap: rx mcs map from he cap
4731 * @hecap_txmcsnssmap: tx mcs map from he cap
4732 *
4733 * Return: the maximum MCS supported
4734 */
4735 uint8_t mlme_get_max_he_mcs_idx(enum phy_ch_width mcs_ch_width,
4736 u_int16_t *hecap_rxmcsnssmap,
4737 u_int16_t *hecap_txmcsnssmap);
4738
4739 /**
4740 * mlme_get_max_vht_mcs_idx() - get max mcs index from vht cap information
4741 * @rx_vht_mcs_map: rx mcs map from vht cap
4742 * @tx_vht_mcs_map: tx mcs map from vht cap
4743 *
4744 * Return: the maximum MCS supported
4745 */
4746 uint8_t mlme_get_max_vht_mcs_idx(u_int16_t rx_vht_mcs_map,
4747 u_int16_t tx_vht_mcs_map);
4748
4749 #ifdef WLAN_FEATURE_SON
4750 /**
4751 * mlme_save_vdev_max_mcs_idx() - Save max mcs index of vdev
4752 * @vdev: pointer to vdev object
4753 * @max_mcs_idx: max_mcs_idx to save
4754 *
4755 * Return: QDF Status
4756 */
4757 QDF_STATUS mlme_save_vdev_max_mcs_idx(struct wlan_objmgr_vdev *vdev,
4758 uint8_t max_mcs_idx);
4759
4760 /**
4761 * mlme_get_vdev_max_mcs_idx() - Get max mcs index of vdev
4762 * @vdev: pointer to vdev object
4763 *
4764 * Return max mcs index of vdev
4765 */
4766 uint8_t mlme_get_vdev_max_mcs_idx(struct wlan_objmgr_vdev *vdev);
4767 #endif /* WLAN_FEATURE_SON */
4768 /**
4769 * wlan_mlme_set_safe_mode_enable() - set safe_mode_enable flag
4770 * based on value set by user space.
4771 *
4772 * @psoc: psoc context
4773 * @safe_mode_enable: safe mode enabled or not
4774 *
4775 * Return: none
4776 */
4777 void wlan_mlme_set_safe_mode_enable(struct wlan_objmgr_psoc *psoc,
4778 bool safe_mode_enable);
4779
4780 /**
4781 * wlan_mlme_get_safe_mode_enable() - get safe_mode_enable set by user
4782 * space
4783 *
4784 * @psoc: psoc context
4785 * @safe_mode_enable: safe mode enabled or not
4786 *
4787 * Return: none
4788 */
4789 void wlan_mlme_get_safe_mode_enable(struct wlan_objmgr_psoc *psoc,
4790 bool *safe_mode_enable);
4791
4792 /**
4793 * wlan_mlme_get_6g_ap_power_type() - get the power type of the
4794 * vdev operating on 6GHz.
4795 *
4796 * @vdev: vdev context
4797 *
4798 * Return: 6g_power_type
4799 */
4800 uint32_t wlan_mlme_get_6g_ap_power_type(struct wlan_objmgr_vdev *vdev);
4801
4802 QDF_STATUS wlan_connect_hw_mode_change_resp(struct wlan_objmgr_pdev *pdev,
4803 uint8_t vdev_id,
4804 wlan_cm_id cm_id,
4805 QDF_STATUS status);
4806
4807 /**
4808 * wlan_mlme_get_ch_width_from_phymode() - Convert phymode to ch_width
4809 * @phy_mode: Phy mode
4810 *
4811 * Return: enum phy_ch_width
4812 */
4813 enum phy_ch_width
4814 wlan_mlme_get_ch_width_from_phymode(enum wlan_phymode phy_mode);
4815
4816 /**
4817 * wlan_mlme_get_peer_ch_width() - get ch_width of the given peer
4818 * @psoc: psoc context
4819 * @mac: peer mac
4820 *
4821 * Return: enum phy_ch_width
4822 */
4823 enum phy_ch_width
4824 wlan_mlme_get_peer_ch_width(struct wlan_objmgr_psoc *psoc, uint8_t *mac);
4825
4826 #if defined(WLAN_FEATURE_SR)
4827 /**
4828 * wlan_mlme_get_sr_enable_modes() - get mode for which SR is enabled
4829 *
4830 * @psoc: psoc context
4831 * @val: pointer to hold the value of SR(Spatial Reuse) enable modes
4832 *
4833 * Return: void
4834 */
4835 void
4836 wlan_mlme_get_sr_enable_modes(struct wlan_objmgr_psoc *psoc, uint8_t *val);
4837 #endif
4838
4839 /**
4840 * wlan_mlme_set_edca_pifs_param() - set edca/pifs param for ll sap
4841 * @ep: pointer to wlan_edca_pifs_param_ie
4842 * @type: edca_param_type
4843 *
4844 * Return: None
4845 */
4846 void
4847 wlan_mlme_set_edca_pifs_param(struct wlan_edca_pifs_param_ie *ep,
4848 enum host_edca_param_type type);
4849 /**
4850 * wlan_mlme_stats_get_periodic_display_time() - get display time
4851 * @psoc: pointer to psoc object
4852 * @periodic_display_time: buffer to hold value
4853 *
4854 * Return: QDF Status
4855 */
4856 QDF_STATUS
4857 wlan_mlme_stats_get_periodic_display_time(struct wlan_objmgr_psoc *psoc,
4858 uint32_t *periodic_display_time);
4859
4860 /**
4861 * wlan_mlme_is_bcn_prot_disabled_for_sap() - Is beacon protection config
4862 * disabled for SAP interface
4863 *
4864 * @psoc: pointer to psoc object
4865 *
4866 * Return: is beacon protection disabled
4867 */
4868 bool
4869 wlan_mlme_is_bcn_prot_disabled_for_sap(struct wlan_objmgr_psoc *psoc);
4870
4871 /**
4872 * wlan_mlme_get_src_addr_from_frame() - Get source address of the frame
4873 * @frame: frame ptr
4874 *
4875 * Extract source mac address of the frame
4876 *
4877 * Return: Ptr for extracted src mac address
4878 *
4879 */
4880 uint8_t *
4881 wlan_mlme_get_src_addr_from_frame(struct element_info *frame);
4882
4883 /*
4884 * wlan_mlme_get_sap_ps_with_twt() - power save with twt config enabled/disabled
4885 * for SAP interface
4886 *
4887 * @psoc: pointer to psoc object
4888 *
4889 * Return: power save enabled/disabled
4890 */
4891 bool
4892 wlan_mlme_get_sap_ps_with_twt(struct wlan_objmgr_psoc *psoc);
4893
4894 /**
4895 * wlan_mlme_get_max_bw() - Get max supported bandwidth
4896 *
4897 * Extract max supported bandwidth
4898 *
4899 * Return: enum phy_ch_width
4900 *
4901 */
4902 enum phy_ch_width wlan_mlme_get_max_bw(void);
4903
4904 /**
4905 * wlan_mlme_get_sta_ch_width() - Get current operating
4906 * channel width for STA / P2P-CLI mode
4907 *
4908 * @vdev: STA / P2P-CLI vdev
4909 * @ch_width: Returned channel width
4910 *
4911 * Return: QDF_STATUS_SUCCESS for success otherwise QDF_STATUS_E_INVAL
4912 *
4913 */
4914 QDF_STATUS wlan_mlme_get_sta_ch_width(struct wlan_objmgr_vdev *vdev,
4915 enum phy_ch_width *ch_width);
4916
4917 /**
4918 * wlan_mlme_set_ul_mu_config() - set ul mu config
4919 *
4920 * @psoc: pointer to psoc object
4921 * @vdev_id : vdev_id
4922 * @ulmu_disable : ulmu_disable value
4923 *
4924 * Return: QDF Status
4925 */
4926 QDF_STATUS
4927 wlan_mlme_set_ul_mu_config(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
4928 uint8_t ulmu_disable);
4929
4930 /**
4931 * wlan_mlme_assemble_rate_code() - assemble rate code to be sent to FW
4932 *
4933 * @preamble: rate preamble
4934 * @nss: number of spatial streams
4935 * @rate: rate index
4936 *
4937 * Rate code assembling is different for targets which are 11ax capable.
4938 * Check for the target support and assemble the rate code accordingly.
4939 *
4940 * Return: assembled rate code
4941 */
4942 uint32_t
4943 wlan_mlme_assemble_rate_code(uint8_t preamble, uint8_t nss, uint8_t rate);
4944
4945 /**
4946 * wlan_mlme_set_ap_oper_ch_width() - set SAP current operating ch_width
4947 *
4948 * @vdev: SAP VDEV object
4949 * @ch_width: ch_width to be cached
4950 *
4951 * Return: QDF Status
4952 */
4953 QDF_STATUS
4954 wlan_mlme_set_ap_oper_ch_width(struct wlan_objmgr_vdev *vdev,
4955 enum phy_ch_width ch_width);
4956
4957 /**
4958 * wlan_mlme_get_ap_oper_ch_width() - get SAP current operating ch_width
4959 *
4960 * @vdev: SAP VDEV object
4961 *
4962 * Return: Current SAP operating ch_width
4963 */
4964 enum phy_ch_width
4965 wlan_mlme_get_ap_oper_ch_width(struct wlan_objmgr_vdev *vdev);
4966
4967 /**
4968 * wlan_mlme_send_csa_event_status_ind() - send csa event status ind
4969 * @vdev: vdev obj
4970 * @csa_status: csa status
4971 *
4972 * Return: QDF_STATUS
4973 */
4974 QDF_STATUS
4975 wlan_mlme_send_csa_event_status_ind(struct wlan_objmgr_vdev *vdev,
4976 uint8_t csa_status);
4977
4978 /**
4979 * wlan_mlme_is_hs_20_btm_offload_disabled() - Get BTM offload is enable/disable
4980 * @psoc: pointer to psoc object
4981 * @val: Pointer to the value which will be filled for the caller
4982 *
4983 * Return: QDF Status
4984 */
4985 QDF_STATUS
4986 wlan_mlme_is_hs_20_btm_offload_disabled(struct wlan_objmgr_psoc *psoc,
4987 bool *val);
4988 /**
4989 * wlan_mlme_set_keepalive_period() - Save keep alive period
4990 * @vdev: VDEV object
4991 * @keep_alive_period: Keep alive period
4992 *
4993 * Return: None
4994 */
4995 void wlan_mlme_set_keepalive_period(struct wlan_objmgr_vdev *vdev,
4996 uint16_t keep_alive_period);
4997
4998 /**
4999 * wlan_mlme_get_keepalive_period() - Get keep alive period
5000 * @vdev: VDEV object
5001 *
5002 * Return: Keep alive period.
5003 */
5004 uint16_t wlan_mlme_get_keepalive_period(struct wlan_objmgr_vdev *vdev);
5005 #endif /* _WLAN_MLME_API_H_ */
5006