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