xref: /wlan-dirver/qcacld-3.0/components/mlme/dispatcher/inc/wlan_mlme_api.h (revision 283bc5d0a54ddd1cd54de553e3c2b14b84b3b957)
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 
1322 /**
1323  * wlan_mlme_get_eht_disable_punct_in_us_lpi() - Get disable eht punct in us
1324  * lpi mode flag.
1325  * @psoc: psoc object
1326  *
1327  * Return: true if eht punct disabled in us lpi mode
1328  */
1329 bool wlan_mlme_get_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc *psoc);
1330 
1331 /**
1332  * wlan_mlme_set_eht_disable_punct_in_us_lpi() - Set disable eht punct in us
1333  * lpi mode flag.
1334  * @psoc: psoc object
1335  * @flag: true if eht punct disabled in us lpi mode
1336  *
1337  * Return: void
1338  */
1339 void wlan_mlme_set_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc *psoc,
1340 					       bool flag);
1341 /**
1342  * wlan_mlme_update_bw_no_punct() - update connected VDEV
1343  * channel bandwidth without puncture bitmap for FCC requirement
1344  * @psoc: pointer to SOC object
1345  * @vdev_id: vdev id
1346  *
1347  * Return: none
1348  */
1349 QDF_STATUS
1350 wlan_mlme_update_bw_no_punct(struct wlan_objmgr_psoc *psoc,
1351 			     uint8_t vdev_id);
1352 
1353 /**
1354  * wlan_mlme_get_bw_no_punct() - Get connected VDEV
1355  * channel bandwidth without puncture bitmap for FCC requirement
1356  * @psoc: pointer to SOC object
1357  * @vdev: pointer to vdev
1358  * @bss_chan: bss chan with puncture
1359  * @new_ch_width: pointer to new channel bandwidth without puncture
1360  * Return: none
1361  */
1362 QDF_STATUS
1363 wlan_mlme_get_bw_no_punct(struct wlan_objmgr_psoc *psoc,
1364 			  struct wlan_objmgr_vdev *vdev,
1365 			  struct wlan_channel *bss_chan,
1366 			  enum phy_ch_width *new_ch_width);
1367 #else
1368 static inline
1369 bool wlan_mlme_get_epcs_capability(struct wlan_objmgr_psoc *psoc)
1370 {
1371 	return false;
1372 }
1373 
1374 static inline
1375 void wlan_mlme_set_epcs_capability(struct wlan_objmgr_psoc *psoc, bool flag)
1376 {
1377 }
1378 
1379 static inline
1380 bool wlan_mlme_get_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc)
1381 {
1382 	return true;
1383 }
1384 
1385 static inline
1386 void wlan_mlme_set_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc,
1387 				       bool disable)
1388 {
1389 }
1390 
1391 static inline
1392 bool wlan_mlme_get_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc *psoc)
1393 {
1394 	return false;
1395 }
1396 
1397 static inline
1398 void wlan_mlme_set_eht_disable_punct_in_us_lpi(struct wlan_objmgr_psoc *psoc,
1399 					       bool flag)
1400 {
1401 }
1402 
1403 static inline QDF_STATUS
1404 wlan_mlme_update_bw_no_punct(struct wlan_objmgr_psoc *psoc,
1405 			     uint8_t vdev_id)
1406 {
1407 	return QDF_STATUS_E_INVAL;
1408 }
1409 
1410 static inline QDF_STATUS
1411 wlan_mlme_get_bw_no_punct(struct wlan_objmgr_psoc *psoc,
1412 			  struct wlan_objmgr_vdev *vdev,
1413 			  struct wlan_channel *bss_chan,
1414 			  enum phy_ch_width *new_ch_width)
1415 {
1416 	return QDF_STATUS_E_INVAL;
1417 }
1418 #endif
1419 
1420 /**
1421  * wlan_mlme_is_ap_prot_enabled() - check if sap protection is enabled
1422  * @psoc: pointer to psoc object
1423  *
1424  * Return: is_ap_prot_enabled flag
1425  */
1426 bool wlan_mlme_is_ap_prot_enabled(struct wlan_objmgr_psoc *psoc);
1427 
1428 /**
1429  * wlan_mlme_get_ap_protection_mode() - Get ap_protection_mode value
1430  * @psoc: pointer to psoc object
1431  * @value: pointer to the value which needs to be filled for the caller
1432  *
1433  * Return: QDF Status
1434  */
1435 QDF_STATUS wlan_mlme_get_ap_protection_mode(struct wlan_objmgr_psoc *psoc,
1436 					    uint16_t *value);
1437 
1438 /**
1439  * wlan_mlme_is_ap_obss_prot_enabled() - Get ap_obss_protection is
1440  * enabled/disabled
1441  * @psoc: pointer to psoc object
1442  * @value: pointer to the value which needs to be filled for the caller
1443  *
1444  * Return: QDF Status
1445  */
1446 QDF_STATUS wlan_mlme_is_ap_obss_prot_enabled(struct wlan_objmgr_psoc *psoc,
1447 					     bool *value);
1448 
1449 /**
1450  * wlan_mlme_get_rts_threshold() - Get the RTS threshold config
1451  * @psoc: pointer to psoc object
1452  * @value: pointer to the value which will be filled for the caller
1453  *
1454  * Return: QDF Status
1455  */
1456 QDF_STATUS wlan_mlme_get_rts_threshold(struct wlan_objmgr_psoc *psoc,
1457 				       uint32_t *value);
1458 
1459 /**
1460  * wlan_mlme_set_rts_threshold() - Set the RTS threshold config
1461  * @psoc: pointer to psoc object
1462  * @value: Value that needs to be set from the caller
1463  *
1464  * Return: QDF Status
1465  */
1466 QDF_STATUS wlan_mlme_set_rts_threshold(struct wlan_objmgr_psoc *psoc,
1467 				       uint32_t value);
1468 
1469 /**
1470  * wlan_mlme_get_frag_threshold() - Get the Fragmentation threshold
1471  *                                  config
1472  * @psoc: pointer to psoc object
1473  * @value: pointer to the value which will be filled for the caller
1474  *
1475  * Return: QDF Status
1476  */
1477 QDF_STATUS wlan_mlme_get_frag_threshold(struct wlan_objmgr_psoc *psoc,
1478 					uint32_t *value);
1479 
1480 /**
1481  * wlan_mlme_set_frag_threshold() - Set the Fragmentation threshold
1482  *                                  config
1483  * @psoc: pointer to psoc object
1484  * @value: Value that needs to be set from the caller
1485  *
1486  * Return: QDF Status
1487  */
1488 QDF_STATUS wlan_mlme_set_frag_threshold(struct wlan_objmgr_psoc *psoc,
1489 					uint32_t value);
1490 
1491 /**
1492  * wlan_mlme_get_fils_enabled_info() - Get the fils enable info for driver
1493  * @psoc: pointer to psoc object
1494  * @value: pointer to the value which will be filled for the caller
1495  *
1496  * Return: QDF Status
1497  */
1498 QDF_STATUS wlan_mlme_get_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
1499 					   bool *value);
1500 /**
1501  * wlan_mlme_set_fils_enabled_info() - Set the fils enable info for driver
1502  * @psoc: pointer to psoc object
1503  * @value: value that needs to be set from the caller
1504  *
1505  * Return: QDF Status
1506  */
1507 QDF_STATUS wlan_mlme_set_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
1508 					   bool value);
1509 
1510 /**
1511  * wlan_mlme_set_primary_interface() - Set the primary iface id for driver
1512  * @psoc: pointer to psoc object
1513  * @value: value that needs to be set from the caller
1514  *
1515  * When a vdev is set as primary then based on the dual sta policy
1516  * "qca_wlan_concurrent_sta_policy_config" mcc preference and roaming has
1517  * to be enabled on the primary vdev
1518  *
1519  * Return: QDF Status
1520  */
1521 QDF_STATUS wlan_mlme_set_primary_interface(struct wlan_objmgr_psoc *psoc,
1522 					   uint8_t value);
1523 
1524 /**
1525  * wlan_mlme_set_default_primary_iface() - Set the default primary iface id
1526  * for driver
1527  * @psoc: pointer to psoc object
1528  *
1529  * Return: QDF Status
1530  */
1531 QDF_STATUS wlan_mlme_set_default_primary_iface(struct wlan_objmgr_psoc *psoc);
1532 
1533 /**
1534  * wlan_mlme_is_primary_interface_configured() - Check if primary iface is set
1535  * @psoc: pointer to psoc object
1536  *
1537  * Check if primary iface is configured from userspace through vendor command.
1538  * Return true if it's configured. If it's not configured, default value would
1539  * be 0xFF and return false then.
1540  *
1541  * Return: True or False
1542  */
1543 bool wlan_mlme_is_primary_interface_configured(struct wlan_objmgr_psoc *psoc);
1544 
1545 /**
1546  * wlan_mlme_peer_get_assoc_rsp_ies() - Get the assoc response IEs of peer
1547  * @peer: WLAN peer objmgr
1548  * @ie_buf: Pointer to IE buffer
1549  * @ie_len: Length of the IE buffer
1550  *
1551  * Get the pointer to assoc response IEs of the peer from MLME
1552  * and length of the IE buffer.
1553  *
1554  * Return: QDF_STATUS
1555  */
1556 QDF_STATUS wlan_mlme_peer_get_assoc_rsp_ies(struct wlan_objmgr_peer *peer,
1557 					    const uint8_t **ie_buf,
1558 					    size_t *ie_len);
1559 
1560 /**
1561  * wlan_mlme_get_mcc_duty_cycle_percentage() - Get primary STA iface duty
1562  * cycle percentage
1563  * @pdev: pointer to pdev object
1564  *
1565  * API to get the MCC duty cycle for primary and secondary STA's
1566  *
1567  * Return: primary iface quota on success
1568  */
1569 int wlan_mlme_get_mcc_duty_cycle_percentage(struct wlan_objmgr_pdev *pdev);
1570 
1571 /**
1572  * wlan_mlme_get_tl_delayed_trgr_frm_int() - Get delay interval(in ms)
1573  * of UAPSD auto trigger
1574  * @psoc: pointer to psoc object
1575  * @value: Value that needs to be set from the caller
1576  *
1577  * Return: None
1578  */
1579 void wlan_mlme_get_tl_delayed_trgr_frm_int(struct wlan_objmgr_psoc *psoc,
1580 					   uint32_t *value);
1581 
1582 /**
1583  * wlan_mlme_get_wmm_dir_ac_vi() - Get TSPEC direction
1584  * for VI
1585  * @psoc: pointer to psoc object
1586  * @value: Value that needs to be set from the caller
1587  *
1588  * Return: QDF Status
1589  */
1590 QDF_STATUS
1591 wlan_mlme_get_wmm_dir_ac_vi(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1592 
1593 /**
1594  * wlan_mlme_get_wmm_nom_msdu_size_ac_vi() - Get normal
1595  * MSDU size for VI
1596  * @psoc: pointer to psoc object
1597  * @value: Value that needs to be set from the caller
1598  *
1599  * Return: QDF Status
1600  */
1601 QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_vi(struct wlan_objmgr_psoc *psoc,
1602 						 uint16_t *value);
1603 
1604 /**
1605  * wlan_mlme_get_wmm_mean_data_rate_ac_vi() - mean data
1606  * rate for VI
1607  * @psoc: pointer to psoc object
1608  * @value: Value that needs to be set from the caller
1609  *
1610  * Return: QDF Status
1611  */
1612 QDF_STATUS
1613 wlan_mlme_get_wmm_mean_data_rate_ac_vi(struct wlan_objmgr_psoc *psoc,
1614 					uint32_t *value);
1615 
1616 /**
1617  * wlan_mlme_get_wmm_min_phy_rate_ac_vi() - min PHY
1618  * rate for VI
1619  * @psoc: pointer to psoc object
1620  * @value: Value that needs to be set from the caller
1621  *
1622  * Return: QDF Status
1623  */
1624 QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_vi(struct wlan_objmgr_psoc *psoc,
1625 						uint32_t *value);
1626 
1627 /**
1628  * wlan_mlme_get_wmm_sba_ac_vi() - surplus bandwidth
1629  * allowance for VI
1630  * @psoc: pointer to psoc object
1631  * @value: Value that needs to be set from the caller
1632  *
1633  * Return: QDF Status
1634  */
1635 QDF_STATUS
1636 wlan_mlme_get_wmm_sba_ac_vi(struct wlan_objmgr_psoc *psoc, uint16_t *value);
1637 
1638 /**
1639  * wlan_mlme_get_wmm_uapsd_vi_srv_intv() - Get Uapsd service
1640  * interval for video
1641  * @psoc: pointer to psoc object
1642  * @value: pointer to the value which will be filled for the caller
1643  *
1644  * Return: QDF Status
1645  */
1646 QDF_STATUS
1647 wlan_mlme_get_wmm_uapsd_vi_srv_intv(struct wlan_objmgr_psoc *psoc,
1648 				    uint32_t *value);
1649 
1650 /**
1651  * wlan_mlme_get_wmm_uapsd_vi_sus_intv() - Get Uapsd suspension
1652  * interval for video
1653  * @psoc: pointer to psoc object
1654  * @value: pointer to the value which will be filled for the caller
1655  *
1656  * Return: QDF Status
1657  */
1658 QDF_STATUS
1659 wlan_mlme_get_wmm_uapsd_vi_sus_intv(struct wlan_objmgr_psoc *psoc,
1660 				    uint32_t *value);
1661 
1662 /**
1663  * wlan_mlme_get_wmm_dir_ac_be() - Get TSPEC direction
1664  * for BE
1665  * @psoc: pointer to psoc object
1666  * @value: Value that needs to be set from the caller
1667  *
1668  * Return: QDF Status
1669  */
1670 QDF_STATUS
1671 wlan_mlme_get_wmm_dir_ac_be(struct wlan_objmgr_psoc *psoc,
1672 			    uint8_t *value);
1673 
1674 /**
1675  * wlan_mlme_get_wmm_nom_msdu_size_ac_be() - Get normal
1676  * MSDU size for BE
1677  * @psoc: pointer to psoc object
1678  * @value: Value that needs to be set from the caller
1679  *
1680  * Return: QDF Status
1681  */
1682 QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_be(struct wlan_objmgr_psoc *psoc,
1683 						 uint16_t *value);
1684 
1685 /**
1686  * wlan_mlme_get_wmm_mean_data_rate_ac_be() - mean data
1687  * rate for BE
1688  * @psoc: pointer to psoc object
1689  * @value: Value that needs to be set from the caller
1690  *
1691  * Return: QDF Status
1692  */
1693 QDF_STATUS wlan_mlme_get_wmm_mean_data_rate_ac_be(struct wlan_objmgr_psoc *psoc,
1694 						  uint32_t *value);
1695 
1696 /**
1697  * wlan_mlme_get_wmm_min_phy_rate_ac_be() - min PHY
1698  * rate for BE
1699  * @psoc: pointer to psoc object
1700  * @value: Value that needs to be set from the caller
1701  *
1702  * Return: QDF Status
1703  */
1704 QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_be(struct wlan_objmgr_psoc *psoc,
1705 						uint32_t *value);
1706 
1707 /**
1708  * wlan_mlme_get_wmm_sba_ac_be() - surplus bandwidth
1709  * allowance for BE
1710  * @psoc: pointer to psoc object
1711  * @value: Value that needs to be set from the caller
1712  *
1713  * Return: QDF Status
1714  */
1715 QDF_STATUS
1716 wlan_mlme_get_wmm_sba_ac_be(struct wlan_objmgr_psoc *psoc, uint16_t *value);
1717 
1718 /**
1719  * wlan_mlme_get_wmm_uapsd_be_srv_intv() - Get Uapsd service
1720  * interval for BE
1721  * @psoc: pointer to psoc object
1722  * @value: pointer to the value which will be filled for the caller
1723  *
1724  * Return: QDF Status
1725  */
1726 QDF_STATUS
1727 wlan_mlme_get_wmm_uapsd_be_srv_intv(struct wlan_objmgr_psoc *psoc,
1728 				    uint32_t *value);
1729 
1730 /**
1731  * wlan_mlme_get_wmm_uapsd_be_sus_intv() - Get Uapsd suspension
1732  * interval for BE
1733  * @psoc: pointer to psoc object
1734  * @value: pointer to the value which will be filled for the caller
1735  *
1736  * Return: QDF Status
1737  */
1738 QDF_STATUS
1739 wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
1740 				    uint32_t *value);
1741 
1742 /**
1743  * wlan_mlme_get_wmm_dir_ac_bk() - Get TSPEC direction
1744  * for BK
1745  * @psoc: pointer to psoc object
1746  * @value: Value that needs to be set from the caller
1747  *
1748  * Return: QDF Status
1749  */
1750 QDF_STATUS
1751 wlan_mlme_get_wmm_dir_ac_bk(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1752 
1753 /**
1754  * wlan_mlme_get_wmm_nom_msdu_size_ac_bk() - Get normal
1755  * MSDU size for BK
1756  * @psoc: pointer to psoc object
1757  * @value: Value that needs to be set from the caller
1758  *
1759  * Return: QDF Status
1760  */
1761 QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_bk(struct wlan_objmgr_psoc *psoc,
1762 						 uint16_t *value);
1763 
1764 /**
1765  * wlan_mlme_get_wmm_mean_data_rate_ac_bk() - mean data
1766  * rate for BK
1767  * @psoc: pointer to psoc object
1768  * @value: Value that needs to be set from the caller
1769  *
1770  * Return: QDF Status
1771  */
1772 QDF_STATUS wlan_mlme_get_wmm_mean_data_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
1773 						  uint32_t *value);
1774 
1775 /**
1776  * wlan_mlme_get_wmm_min_phy_rate_ac_bk() - min PHY
1777  * rate for BK
1778  * @psoc: pointer to psoc object
1779  * @value: Value that needs to be set from the caller
1780  *
1781  * Return: QDF Status
1782  */
1783 QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
1784 						uint32_t *value);
1785 
1786 /**
1787  * wlan_mlme_get_wmm_sba_ac_bk() - surplus bandwidth
1788  * allowance for BE
1789  * @psoc: pointer to psoc object
1790  * @value: Value that needs to be set from the caller
1791  *
1792  * Return: QDF Status
1793  */
1794 QDF_STATUS
1795 wlan_mlme_get_wmm_sba_ac_bk(struct wlan_objmgr_psoc *psoc, uint16_t *value);
1796 
1797 /**
1798  * wlan_mlme_get_wmm_uapsd_bk_srv_intv() - Get Uapsd service
1799  * interval for BK
1800  * @psoc: pointer to psoc object
1801  * @value: pointer to the value which will be filled for the caller
1802  *
1803  * Return: QDF Status
1804  */
1805 QDF_STATUS
1806 wlan_mlme_get_wmm_uapsd_bk_srv_intv(struct wlan_objmgr_psoc *psoc,
1807 				    uint32_t *value);
1808 
1809 /**
1810  * wlan_mlme_get_wmm_uapsd_bk_sus_intv() - Get Uapsd suspension
1811  * interval for BK
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_wmm_uapsd_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
1819 				    uint32_t *value);
1820 
1821 /**
1822  * wlan_mlme_get_wmm_mode() - Enable WMM feature
1823  * @psoc: pointer to psoc object
1824  * @value: pointer to the value which will be filled for the caller
1825  *
1826  * Return: QDF Status
1827  */
1828 QDF_STATUS
1829 wlan_mlme_get_wmm_mode(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1830 
1831 /**
1832  * wlan_mlme_get_80211e_is_enabled() - Enable 802.11e feature
1833  * @psoc: pointer to psoc object
1834  * @value: pointer to the value which will be filled for the caller
1835  *
1836  * Return: QDF Status
1837  */
1838 QDF_STATUS
1839 wlan_mlme_get_80211e_is_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
1840 
1841 /**
1842  * wlan_mlme_get_wmm_uapsd_mask() - setup U-APSD mask for ACs
1843  * @psoc: pointer to psoc object
1844  * @value: pointer to the value which will be filled for the caller
1845  *
1846  * Return: QDF Status
1847  */
1848 QDF_STATUS
1849 wlan_mlme_get_wmm_uapsd_mask(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1850 
1851 #ifdef FEATURE_WLAN_ESE
1852 /**
1853  * wlan_mlme_get_inactivity_interval() - Infra Inactivity Interval
1854  * @psoc: pointer to psoc object
1855  * @value: pointer to the value which will be filled for the caller
1856  *
1857  * Return: None
1858  */
1859 void
1860 wlan_mlme_get_inactivity_interval(struct wlan_objmgr_psoc *psoc,
1861 				  uint32_t *value);
1862 #endif
1863 
1864 /**
1865  * wlan_mlme_get_is_ts_burst_size_enable() - Get TS burst size flag
1866  * @psoc: pointer to psoc object
1867  * @value: pointer to the value which will be filled for the caller
1868  *
1869  * Return: None
1870  */
1871 void wlan_mlme_get_is_ts_burst_size_enable(struct wlan_objmgr_psoc *psoc,
1872 					   bool *value);
1873 
1874 /**
1875  * wlan_mlme_get_ts_info_ack_policy() - Get TS ack policy
1876  * @psoc: pointer to psoc object
1877  * @value: pointer to the value which will be filled for the caller
1878  *
1879  * Return: None
1880  */
1881 void wlan_mlme_get_ts_info_ack_policy(struct wlan_objmgr_psoc *psoc,
1882 				      enum mlme_ts_info_ack_policy *value);
1883 
1884 /**
1885  * wlan_mlme_get_ts_acm_value_for_ac() - Get ACM value for AC
1886  * @psoc: pointer to psoc object
1887  * @value: pointer to the value which will be filled for the caller
1888  *
1889  * Return: QDF Status
1890  */
1891 QDF_STATUS
1892 wlan_mlme_get_ts_acm_value_for_ac(struct wlan_objmgr_psoc *psoc, bool *value);
1893 
1894 /**
1895  * wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
1896  * for VO
1897  * @psoc: pointer to psoc object
1898  * @value: Value that needs to be set from the caller
1899  *
1900  * Return: QDF Status
1901  */
1902 QDF_STATUS
1903 wlan_mlme_get_wmm_dir_ac_vo(struct wlan_objmgr_psoc *psoc, uint8_t *value);
1904 
1905 /**
1906  * wlan_mlme_get_wmm_nom_msdu_size_ac_vo() - Get normal
1907  * MSDU size for VO
1908  * @psoc: pointer to psoc object
1909  * @value: Value that needs to be set from the caller
1910  *
1911  * Return: QDF Status
1912  */
1913 QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_vo(struct wlan_objmgr_psoc *psoc,
1914 						 uint16_t *value);
1915 
1916 /**
1917  * wlan_mlme_get_wmm_mean_data_rate_ac_vo() - mean data rate for VO
1918  * @psoc: pointer to psoc object
1919  * @value: Value that needs to be set from the caller
1920  *
1921  * Return: QDF Status
1922  */
1923 QDF_STATUS wlan_mlme_get_wmm_mean_data_rate_ac_vo(struct wlan_objmgr_psoc *psoc,
1924 						  uint32_t *value);
1925 /**
1926  * wlan_mlme_get_wmm_min_phy_rate_ac_vo() - min PHY
1927  * rate for VO
1928  * @psoc: pointer to psoc object
1929  * @value: Value that needs to be set from the caller
1930  *
1931  * Return: QDF Status
1932  */
1933 QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_vo(struct wlan_objmgr_psoc *psoc,
1934 						uint32_t *value);
1935 /**
1936  * wlan_mlme_get_wmm_sba_ac_vo() - surplus bandwidth allowance for VO
1937  * @psoc: pointer to psoc object
1938  * @value: Value that needs to be set from the caller
1939  *
1940  *  Return: QDF Status
1941  */
1942 QDF_STATUS
1943 wlan_mlme_get_wmm_sba_ac_vo(struct wlan_objmgr_psoc *psoc, uint16_t *value);
1944 
1945 /**
1946  * wlan_mlme_set_enable_bcast_probe_rsp() - Set enable bcast probe resp info
1947  * @psoc: pointer to psoc object
1948  * @value: value that needs to be set from the caller
1949  *
1950  * Return: QDF Status
1951  */
1952 QDF_STATUS wlan_mlme_set_enable_bcast_probe_rsp(struct wlan_objmgr_psoc *psoc,
1953 						bool value);
1954 
1955 /**
1956  * wlan_mlme_get_wmm_uapsd_vo_srv_intv() - Get Uapsd service
1957  * interval for voice
1958  * @psoc: pointer to psoc object
1959  * @value: pointer to the value which will be filled for the caller
1960  *
1961  * Return: QDF Status
1962  */
1963 QDF_STATUS
1964 wlan_mlme_get_wmm_uapsd_vo_srv_intv(struct wlan_objmgr_psoc *psoc,
1965 				    uint32_t *value);
1966 
1967 /**
1968  * wlan_mlme_get_wmm_uapsd_vo_sus_intv() - Get Uapsd suspension
1969  * interval for voice
1970  * @psoc: pointer to psoc object
1971  * @value: pointer to the value which will be filled for the caller
1972  *
1973  * Return: QDF Status
1974  */
1975 QDF_STATUS
1976 wlan_mlme_get_wmm_uapsd_vo_sus_intv(struct wlan_objmgr_psoc *psoc,
1977 				    uint32_t *value);
1978 
1979 /**
1980  * wlan_mlme_cfg_get_vht_max_mpdu_len() - gets vht max mpdu length from cfg item
1981  * @psoc: psoc context
1982  * @value: pointer to get required data
1983  *
1984  * Return: QDF_STATUS
1985  */
1986 QDF_STATUS
1987 wlan_mlme_cfg_get_vht_max_mpdu_len(struct wlan_objmgr_psoc *psoc,
1988 				   uint8_t *value);
1989 
1990 /**
1991  * wlan_mlme_cfg_set_vht_max_mpdu_len() - sets vht max mpdu length into cfg item
1992  * @psoc: psoc context
1993  * @value: data to be set
1994  *
1995  * Return: QDF_STATUS
1996  */
1997 QDF_STATUS
1998 wlan_mlme_cfg_set_vht_max_mpdu_len(struct wlan_objmgr_psoc *psoc,
1999 				   uint8_t value);
2000 
2001 /**
2002  * wlan_mlme_cfg_get_ht_smps() - gets HT SM Power Save mode from cfg item
2003  * @psoc: psoc context
2004  * @value: data to be set
2005  *
2006  * Return: QDF_STATUS
2007  */
2008 QDF_STATUS wlan_mlme_cfg_get_ht_smps(struct wlan_objmgr_psoc *psoc,
2009 				     uint8_t *value);
2010 
2011 /**
2012  * wlan_mlme_cfg_get_vht_chan_width() - gets vht supported channel width from
2013  * cfg item
2014  * @psoc: psoc context
2015  * @value: pointer to get required data
2016  *
2017  * Return: QDF_STATUS
2018  */
2019 QDF_STATUS wlan_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc,
2020 					    uint8_t *value);
2021 
2022 /**
2023  * wlan_mlme_cfg_set_vht_chan_width() - sets vht supported channel width into
2024  * cfg item
2025  * @psoc: psoc context
2026  * @value: data to be set
2027  *
2028  * Return: QDF_STATUS
2029  */
2030 QDF_STATUS wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc,
2031 					    uint8_t value);
2032 
2033 /**
2034  * wlan_mlme_cfg_get_vht_chan_width() - sets vht supported channel width into
2035  * cfg item
2036  * @psoc: psoc context
2037  * @value: data to be set
2038  *
2039  * Return: QDF_STATUS
2040  */
2041 QDF_STATUS wlan_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc,
2042 					    uint8_t *value);
2043 
2044 /**
2045  * wlan_mlme_cfg_get_vht_ldpc_coding_cap() - gets vht ldpc coding cap from
2046  * cfg item
2047  * @psoc: psoc context
2048  * @value: pointer to get required data
2049  *
2050  * Return: QDF_STATUS
2051  */
2052 QDF_STATUS wlan_mlme_cfg_get_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
2053 						 bool *value);
2054 
2055 /**
2056  * wlan_mlme_cfg_set_vht_ldpc_coding_cap() - sets vht ldpc coding cap into
2057  * cfg item
2058  * @psoc: psoc context
2059  * @value: data to be set
2060  *
2061  * Return: QDF_STATUS
2062  */
2063 QDF_STATUS wlan_mlme_cfg_set_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
2064 						 bool value);
2065 
2066 /**
2067  * wlan_mlme_cfg_get_vht_short_gi_80mhz() - gets vht short gi 80MHz from
2068  * cfg item
2069  * @psoc: psoc context
2070  * @value: pointer to get required data
2071  *
2072  * Return: QDF_STATUS
2073  */
2074 QDF_STATUS wlan_mlme_cfg_get_vht_short_gi_80mhz(struct wlan_objmgr_psoc *psoc,
2075 						bool *value);
2076 
2077 /**
2078  * wlan_mlme_cfg_set_vht_short_gi_80mhz() - sets vht short gi 80MHz into
2079  * cfg item
2080  * @psoc: psoc context
2081  * @value: data to be set
2082  *
2083  * Return: QDF_STATUS
2084  */
2085 QDF_STATUS wlan_mlme_cfg_set_vht_short_gi_80mhz(struct wlan_objmgr_psoc *psoc,
2086 						bool value);
2087 
2088 /**
2089  * wlan_mlme_cfg_get_short_gi_160_mhz() - gets vht short gi 160MHz from
2090  * cfg item
2091  * @psoc: psoc context
2092  * @value: pointer to get required data
2093  *
2094  * Return: QDF_STATUS
2095  */
2096 QDF_STATUS
2097 wlan_mlme_cfg_get_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc, bool *value);
2098 
2099 /**
2100  * wlan_mlme_cfg_set_short_gi_160_mhz() - sets vht short gi 160MHz into
2101  * cfg item
2102  * @psoc: psoc context
2103  * @value: data to be set
2104  *
2105  * Return: QDF_STATUS
2106  */
2107 QDF_STATUS
2108 wlan_mlme_cfg_set_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc, bool value);
2109 
2110 /**
2111  * wlan_mlme_cfg_get_vht_tx_stbc() - gets vht tx stbc from
2112  * cfg item
2113  * @psoc: psoc context
2114  * @value: pointer to get required data
2115  *
2116  * Return: QDF_STATUS
2117  */
2118 QDF_STATUS
2119 wlan_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, bool *value);
2120 
2121 /**
2122  * wlan_mlme_cfg_get_vht_rx_stbc() - gets vht rx stbc from
2123  * cfg item
2124  * @psoc: psoc context
2125  * @value: pointer to get required data
2126  *
2127  * Return: QDF_STATUS
2128  */
2129 QDF_STATUS
2130 wlan_mlme_cfg_get_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, bool *value);
2131 
2132 /**
2133  * wlan_mlme_cfg_set_vht_tx_stbc() - sets vht tx stbc into
2134  * cfg item
2135  * @psoc: psoc context
2136  * @value: data to be set
2137  *
2138  * Return: QDF_STATUS
2139  */
2140 QDF_STATUS
2141 wlan_mlme_cfg_set_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, bool value);
2142 
2143 /**
2144  * wlan_mlme_cfg_get_vht_rx_stbc() - gets vht rx stbc from
2145  * cfg item
2146  * @psoc: psoc context
2147  * @value: pointer to get required data
2148  *
2149  * Return: QDF_STATUS
2150  */
2151 QDF_STATUS
2152 wlan_mlme_cfg_get_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, bool *value);
2153 
2154 /**
2155  * wlan_mlme_cfg_set_vht_rx_stbc() - sets vht rx stbc into
2156  * cfg item
2157  * @psoc: psoc context
2158  * @value: data to be set
2159  *
2160  * Return: QDF_STATUS
2161  */
2162 QDF_STATUS
2163 wlan_mlme_cfg_set_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, bool value);
2164 
2165 /**
2166  * wlan_mlme_cfg_get_vht_su_bformer() - gets vht su beam former cap from
2167  * cfg item
2168  * @psoc: psoc context
2169  * @value: pointer to get required data
2170  *
2171  * Return: QDF_STATUS
2172  */
2173 QDF_STATUS
2174 wlan_mlme_cfg_get_vht_su_bformer(struct wlan_objmgr_psoc *psoc, bool *value);
2175 
2176 /**
2177  * wlan_mlme_cfg_set_vht_su_bformer() - sets vht su beam former cap into
2178  * cfg item
2179  * @psoc: psoc context
2180  * @value: data to be set
2181  *
2182  * Return: QDF_STATUS
2183  */
2184 QDF_STATUS
2185 wlan_mlme_cfg_set_vht_su_bformer(struct wlan_objmgr_psoc *psoc, bool value);
2186 
2187 /**
2188  * wlan_mlme_cfg_set_vht_su_bformee() - sets vht su beam formee cap into
2189  * cfg item
2190  * @psoc: psoc context
2191  * @value: data to be set
2192  *
2193  * Return: QDF_STATUS
2194  */
2195 QDF_STATUS
2196 wlan_mlme_cfg_set_vht_su_bformee(struct wlan_objmgr_psoc *psoc, bool value);
2197 
2198 /**
2199  * wlan_mlme_cfg_set_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna
2200  * support cap
2201  * into cfg item
2202  * @psoc: psoc context
2203  * @value: data to be set
2204  *
2205  * Return: QDF_STATUS
2206  */
2207 QDF_STATUS wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
2208 						  uint8_t value);
2209 
2210 /**
2211  * wlan_mlme_cfg_get_vht_tx_bfee_ant_supp() - Gets vht Beamformee antenna
2212  * support cap into cfg item
2213  *
2214  * @psoc: psoc context
2215  * @value: data to be set
2216  *
2217  * Return: QDF_STATUS
2218  */
2219 QDF_STATUS wlan_mlme_cfg_get_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
2220 						  uint8_t *value);
2221 
2222 /**
2223  * wlan_mlme_cfg_set_vht_num_sounding_dim() - sets vht no of sounding dimensions
2224  * into cfg item
2225  * @psoc: psoc context
2226  * @value: data to be set
2227  *
2228  * Return: QDF_STATUS
2229  */
2230 QDF_STATUS wlan_mlme_cfg_set_vht_num_sounding_dim(struct wlan_objmgr_psoc *psoc,
2231 						  uint8_t value);
2232 
2233 /**
2234  * wlan_mlme_cfg_get_vht_mu_bformer() - gets vht mu beam former cap from
2235  * cfg item
2236  * @psoc: psoc context
2237  * @value: pointer to get required data
2238  *
2239  * Return: QDF_STATUS
2240  */
2241 QDF_STATUS
2242 wlan_mlme_cfg_get_vht_mu_bformer(struct wlan_objmgr_psoc *psoc, bool *value);
2243 
2244 /**
2245  * wlan_mlme_cfg_set_vht_mu_bformer() - sets vht mu beam former cap into
2246  * cfg item
2247  * @psoc: psoc context
2248  * @value: data to be set
2249  *
2250  * Return: QDF_STATUS
2251  */
2252 QDF_STATUS
2253 wlan_mlme_cfg_set_vht_mu_bformer(struct wlan_objmgr_psoc *psoc, bool value);
2254 
2255 /**
2256  * wlan_mlme_cfg_get_vht_mu_bformee() - gets vht mu beam formee cap from
2257  * cfg item
2258  * @psoc: psoc context
2259  * @value: pointer to get required data
2260  *
2261  * Return: QDF_STATUS
2262  */
2263 QDF_STATUS
2264 wlan_mlme_cfg_get_vht_mu_bformee(struct wlan_objmgr_psoc *psoc, bool *value);
2265 
2266 /**
2267  * wlan_mlme_cfg_set_vht_mu_bformee() - sets vht mu beam formee cap into
2268  * cfg item
2269  * @psoc: psoc context
2270  * @value: data to be set
2271  *
2272  * Return: QDF_STATUS
2273  */
2274 QDF_STATUS
2275 wlan_mlme_cfg_set_vht_mu_bformee(struct wlan_objmgr_psoc *psoc, bool value);
2276 
2277 /**
2278  * wlan_mlme_cfg_get_vht_txop_ps() - gets vht tx ops ps cap from
2279  * cfg item
2280  * @psoc: psoc context
2281  * @value: pointer to get required data
2282  *
2283  * Return: QDF_STATUS
2284  */
2285 QDF_STATUS
2286 wlan_mlme_cfg_get_vht_txop_ps(struct wlan_objmgr_psoc *psoc, bool *value);
2287 
2288 /**
2289  * wlan_mlme_cfg_set_vht_txop_ps() - sets vht tx ops ps cap into
2290  * cfg item
2291  * @psoc: psoc context
2292  * @value: data to be set
2293  *
2294  * Return: QDF_STATUS
2295  */
2296 QDF_STATUS
2297 wlan_mlme_cfg_set_vht_txop_ps(struct wlan_objmgr_psoc *psoc, bool value);
2298 
2299 /**
2300  * wlan_mlme_cfg_get_vht_ampdu_len_exp() - gets vht max AMPDU length exponent from
2301  * cfg item
2302  * @psoc: psoc context
2303  * @value: pointer to get required data
2304  *
2305  * Return: QDF_STATUS
2306  */
2307 QDF_STATUS
2308 wlan_mlme_cfg_get_vht_ampdu_len_exp(struct wlan_objmgr_psoc *psoc,
2309 				    uint8_t *value);
2310 
2311 /**
2312  * wlan_mlme_cfg_set_vht_ampdu_len_exp() - sets vht max AMPDU length exponent into
2313  * cfg item
2314  * @psoc: psoc context
2315  * @value: data to be set
2316  *
2317  * Return: QDF_STATUS
2318  */
2319 QDF_STATUS
2320 wlan_mlme_cfg_set_vht_ampdu_len_exp(struct wlan_objmgr_psoc *psoc,
2321 				    uint8_t value);
2322 
2323 /**
2324  * wlan_mlme_cfg_get_vht_rx_mcs_map() - gets vht rx mcs map from
2325  * cfg item
2326  * @psoc: psoc context
2327  * @value: pointer to get required data
2328  *
2329  * Return: QDF_STATUS
2330  */
2331 QDF_STATUS wlan_mlme_cfg_get_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc,
2332 					    uint32_t *value);
2333 
2334 /**
2335  * wlan_mlme_cfg_set_vht_rx_mcs_map() - sets rx mcs map into
2336  * cfg item
2337  * @psoc: psoc context
2338  * @value: data to be set
2339  *
2340  * Return: QDF_STATUS
2341  */
2342 QDF_STATUS
2343 wlan_mlme_cfg_set_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc, uint32_t value);
2344 
2345 /**
2346  * wlan_mlme_cfg_get_vht_tx_mcs_map() - gets vht tx mcs map from
2347  * cfg item
2348  * @psoc: psoc context
2349  * @value: pointer to get required data
2350  *
2351  * Return: QDF_STATUS
2352  */
2353 QDF_STATUS wlan_mlme_cfg_get_vht_tx_mcs_map(struct wlan_objmgr_psoc *psoc,
2354 					    uint32_t *value);
2355 
2356 /**
2357  * wlan_mlme_cfg_set_vht_tx_mcs_map() - sets tx mcs map into
2358  * cfg item
2359  * @psoc: psoc context
2360  * @value: data to be set
2361  *
2362  * Return: QDF_STATUS
2363  */
2364 QDF_STATUS wlan_mlme_cfg_set_vht_tx_mcs_map(struct wlan_objmgr_psoc *psoc,
2365 					    uint32_t value);
2366 
2367 /**
2368  * wlan_mlme_cfg_set_vht_rx_supp_data_rate() - sets rx supported data rate into
2369  * cfg item
2370  * @psoc: psoc context
2371  * @value: data to be set
2372  *
2373  * Return: QDF_STATUS
2374  */
2375 QDF_STATUS
2376 wlan_mlme_cfg_set_vht_rx_supp_data_rate(struct wlan_objmgr_psoc *psoc,
2377 					uint32_t value);
2378 
2379 /**
2380  * wlan_mlme_cfg_set_vht_tx_supp_data_rate() - sets tx supported data rate into
2381  * cfg item
2382  * @psoc: psoc context
2383  * @value: data to be set
2384  *
2385  * Return: QDF_STATUS
2386  */
2387 QDF_STATUS
2388 wlan_mlme_cfg_set_vht_tx_supp_data_rate(struct wlan_objmgr_psoc *psoc,
2389 					uint32_t value);
2390 
2391 /**
2392  * wlan_mlme_cfg_get_vht_basic_mcs_set() - gets basic mcs set from
2393  * cfg item
2394  * @psoc: psoc context
2395  * @value: data to be set
2396  *
2397  * Return: QDF_STATUS
2398  */
2399 QDF_STATUS
2400 wlan_mlme_cfg_get_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
2401 				    uint32_t *value);
2402 
2403 /**
2404  * wlan_mlme_cfg_set_vht_basic_mcs_set() - sets basic mcs set into
2405  * cfg item
2406  * @psoc: psoc context
2407  * @value: data to be set
2408  *
2409  * Return: QDF_STATUS
2410  */
2411 QDF_STATUS
2412 wlan_mlme_cfg_set_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
2413 				    uint32_t value);
2414 
2415 /**
2416  * wlan_mlme_get_vht_enable_tx_bf() - Get vht enable tx bf
2417  * @psoc: psoc context
2418  * @value: data to be set
2419  *
2420  * Return: QDF_STATUS
2421  */
2422 QDF_STATUS
2423 wlan_mlme_get_vht_enable_tx_bf(struct wlan_objmgr_psoc *psoc, bool *value);
2424 
2425 /**
2426  * wlan_mlme_get_vht_tx_su_beamformer() - VHT enable tx su beamformer
2427  * @psoc: psoc context
2428  * @value: data to be set
2429  *
2430  * Return: QDF_STATUS
2431  */
2432 QDF_STATUS
2433 wlan_mlme_get_vht_tx_su_beamformer(struct wlan_objmgr_psoc *psoc, bool *value);
2434 
2435 /**
2436  * wlan_mlme_get_vht_channel_width() - gets Channel width capability
2437  * for 11ac
2438  * @psoc: psoc context
2439  * @value: data to be set
2440  *
2441  * Return: QDF_STATUS
2442  */
2443 QDF_STATUS wlan_mlme_get_vht_channel_width(struct wlan_objmgr_psoc *psoc,
2444 					   uint8_t *value);
2445 
2446 /**
2447  * wlan_mlme_get_vht_rx_mcs_8_9() - VHT Rx MCS capability for 1x1 mode
2448  * @psoc: psoc context
2449  * @value: data to be set
2450  *
2451  * Return: QDF_STATUS
2452  */
2453 QDF_STATUS wlan_mlme_get_vht_rx_mcs_8_9(struct wlan_objmgr_psoc *psoc,
2454 					uint8_t *value);
2455 
2456 /**
2457  * wlan_mlme_get_vht_tx_mcs_8_9() - VHT Tx MCS capability for 1x1 mode
2458  * @psoc: psoc context
2459  * @value: data to be set
2460  *
2461  * Return: QDF_STATUS
2462  */
2463 QDF_STATUS
2464 wlan_mlme_get_vht_tx_mcs_8_9(struct wlan_objmgr_psoc *psoc, uint8_t *value);
2465 
2466 /**
2467  * wlan_mlme_get_vht_rx_mcs_2x2() - VHT Rx MCS capability for 2x2 mode
2468  * @psoc: psoc context
2469  * @value: data to be set
2470  *
2471  * Return: QDF_STATUS
2472  */
2473 QDF_STATUS wlan_mlme_get_vht_rx_mcs_2x2(struct wlan_objmgr_psoc *psoc,
2474 					uint8_t *value);
2475 
2476 /**
2477  * wlan_mlme_get_vht_tx_mcs_2x2() - VHT Tx MCS capability for 2x2 mode
2478  * @psoc: psoc context
2479  * @value: data to be set
2480  *
2481  * Return: QDF_STATUS
2482  */
2483 QDF_STATUS wlan_mlme_get_vht_tx_mcs_2x2(struct wlan_objmgr_psoc *psoc,
2484 					uint8_t *value);
2485 
2486 /**
2487  * wlan_mlme_get_vht20_mcs9() - Enables VHT MCS9 in 20M BW operation
2488  * @psoc: psoc context
2489  * @value: data to be set
2490  *
2491  * Return: QDF_STATUS
2492  */
2493 QDF_STATUS
2494 wlan_mlme_get_vht20_mcs9(struct wlan_objmgr_psoc *psoc, bool *value);
2495 
2496 /**
2497  * wlan_mlme_get_srd_master_mode_for_vdev  - Get SRD master mode for vdev
2498  * @psoc:          pointer to psoc object
2499  * @vdev_opmode:   vdev operating mode
2500  * @value:  pointer to the value which will be filled for the caller
2501  *
2502  * Return: QDF Status
2503  */
2504 QDF_STATUS
2505 wlan_mlme_get_srd_master_mode_for_vdev(struct wlan_objmgr_psoc *psoc,
2506 				       enum QDF_OPMODE vdev_opmode,
2507 				       bool *value);
2508 
2509 /**
2510  * wlan_mlme_get_indoor_support_for_nan  - Get indoor channel support for NAN
2511  * @psoc: pointer to psoc object
2512  * @value: pointer to the value which will be filled for the caller
2513  *
2514  * Return: QDF Status
2515  */
2516 QDF_STATUS
2517 wlan_mlme_get_indoor_support_for_nan(struct wlan_objmgr_psoc *psoc,
2518 				     bool *value);
2519 
2520 /**
2521  * wlan_mlme_get_force_sap_enabled() - Get the value of force SAP enabled
2522  * @psoc: psoc context
2523  * @value: data to get
2524  *
2525  * Get the value of force SAP enabled
2526  *
2527  * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2528  */
2529 QDF_STATUS
2530 wlan_mlme_get_force_sap_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2531 
2532 /**
2533  * wlan_mlme_get_enable_dynamic_nss_chains_cfg() - API to get whether dynamic
2534  * nss and chain config is enabled or not
2535  * @psoc: psoc context
2536  * @value: data to be set
2537  *
2538  * API to get whether dynamic nss and chain config is enabled or not
2539  *
2540  * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2541  */
2542 QDF_STATUS
2543 wlan_mlme_get_enable_dynamic_nss_chains_cfg(struct wlan_objmgr_psoc *psoc,
2544 					    bool *value);
2545 
2546 /**
2547  * wlan_mlme_get_restart_sap_on_dynamic_nss_chains_cfg() - API to get whether
2548  * SAP needs to be restarted or not on dynamic nss chain config
2549  * @psoc: psoc context
2550  * @value: data to be set
2551  *
2552  * API to get whether SAP needs to be restarted or not on dynamic nss chain
2553  * config
2554  *
2555  * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2556  */
2557 QDF_STATUS
2558 wlan_mlme_get_restart_sap_on_dynamic_nss_chains_cfg(
2559 						struct wlan_objmgr_psoc *psoc,
2560 						bool *value);
2561 
2562 /**
2563  * wlan_mlme_cfg_set_dynamic_nss_chains_support() - API to update
2564  * dynamic_nss_chains_support
2565  *
2566  * @psoc: psoc context
2567  * @value: data to be set
2568  *
2569  * API to update dynamic_nss_chains_support in wlan_mlme_cfg object to
2570  * maintain this value in mlme context
2571  *
2572  * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2573  */
2574 QDF_STATUS
2575 wlan_mlme_cfg_set_dynamic_nss_chains_support(struct wlan_objmgr_psoc *psoc,
2576 					     bool value);
2577 
2578 /**
2579  * wlan_mlme_cfg_get_dynamic_nss_chains_support() - API to get current value of
2580  * dynamic_nss_chains_support
2581  *
2582  * @psoc: psoc context
2583  * @value: data to be set
2584  *
2585  * API to get current value of dynamic_nss_chains_support
2586  *
2587  * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
2588  */
2589 QDF_STATUS
2590 wlan_mlme_cfg_get_dynamic_nss_chains_support(struct wlan_objmgr_psoc *psoc,
2591 					     bool *value);
2592 
2593 /**
2594  * wlan_mlme_get_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2
2595  * @psoc: psoc context
2596  * @value: data to be set
2597  *
2598  * Return: QDF_STATUS
2599  */
2600 QDF_STATUS
2601 wlan_mlme_get_vht_enable2x2(struct wlan_objmgr_psoc *psoc, bool *value);
2602 
2603 /**
2604  * wlan_mlme_set_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2
2605  * @psoc: psoc context
2606  * @value: data to be set
2607  *
2608  * Return: QDF_STATUS
2609  */
2610 QDF_STATUS
2611 wlan_mlme_set_vht_enable2x2(struct wlan_objmgr_psoc *psoc, bool value);
2612 
2613 /**
2614  * wlan_mlme_get_vht_enable_paid() - Enables/disables paid feature
2615  * @psoc: psoc context
2616  * @value: data to be set
2617  *
2618  * Return: QDF_STATUS
2619  */
2620 QDF_STATUS
2621 wlan_mlme_get_vht_enable_paid(struct wlan_objmgr_psoc *psoc, bool *value);
2622 
2623 /**
2624  * wlan_mlme_get_vht_enable_gid() - Enables/disables VHT GID feature
2625  * @psoc: psoc context
2626  * @value: data to be set
2627  *
2628  * Return: QDF_STATUS
2629  */
2630 QDF_STATUS
2631 wlan_mlme_get_vht_enable_gid(struct wlan_objmgr_psoc *psoc, bool *value);
2632 
2633 /**
2634  * wlan_mlme_get_vht_for_24ghz() - Enables/disables VHT for 24 ghz
2635  * @psoc: psoc context
2636  * @value: data to be set
2637  *
2638  * Return: QDF_STATUS
2639  */
2640 QDF_STATUS
2641 wlan_mlme_get_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool *value);
2642 
2643 /**
2644  * wlan_mlme_set_vht_for_24ghz() - Enables/disables VHT for 24 ghz
2645  * @psoc: psoc context
2646  * @value: data to be set
2647  *
2648  * Return: QDF_STATUS
2649  */
2650 QDF_STATUS
2651 wlan_mlme_set_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool value);
2652 
2653 /**
2654  * wlan_mlme_get_vendor_vht_for_24ghz() - nables/disables vendor VHT for 24 ghz
2655  * @psoc: psoc context
2656  * @value: data to be set
2657  *
2658  * Return: QDF_STATUS
2659  */
2660 QDF_STATUS
2661 wlan_mlme_get_vendor_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool *value);
2662 
2663 /**
2664  * mlme_update_vht_cap() - update vht capabilities
2665  * @psoc: psoc context
2666  * @cfg: data to be set
2667  *
2668  * Return: QDF_STATUS
2669  */
2670 QDF_STATUS
2671 mlme_update_vht_cap(struct wlan_objmgr_psoc *psoc, struct wma_tgt_vht_cap *cfg);
2672 
2673 /**
2674  * mlme_update_nss_vht_cap() - Update the number of spatial
2675  * streams supported for vht
2676  * @psoc: psoc context
2677  *
2678  * Return: QDF_STATUS
2679  */
2680 QDF_STATUS mlme_update_nss_vht_cap(struct wlan_objmgr_psoc *psoc);
2681 
2682 #ifdef WLAN_FEATURE_11BE
2683 /**
2684  * mlme_get_bss_11be_allowed() - Check BSS allowed in 11be mode
2685  * @psoc: psoc context
2686  * @bssid: bssid
2687  * @ie_data: ie data
2688  * @ie_length: ie data length
2689  *
2690  * Return: true if AP in 11be oui allow list
2691  */
2692 bool mlme_get_bss_11be_allowed(struct wlan_objmgr_psoc *psoc,
2693 			       struct qdf_mac_addr *bssid,
2694 			       uint8_t *ie_data,
2695 			       uint32_t ie_length);
2696 #else
2697 static inline
2698 bool mlme_get_bss_11be_allowed(struct wlan_objmgr_psoc *psoc,
2699 			       struct qdf_mac_addr *bssid,
2700 			       uint8_t *ie_data,
2701 			       uint32_t ie_length)
2702 {
2703 	return false;
2704 }
2705 #endif
2706 
2707 /**
2708  * wlan_mlme_is_sap_uapsd_enabled() - Get if SAP UAPSD is enabled/disabled
2709  * @psoc: psoc context
2710  * @value: value to be filled for caller
2711  *
2712  * Return: QDF_STATUS
2713  */
2714 QDF_STATUS wlan_mlme_is_sap_uapsd_enabled(struct wlan_objmgr_psoc *psoc,
2715 					  bool *value);
2716 
2717 /**
2718  * wlan_mlme_set_sap_uapsd_flag() - Enable/Disable SAP UAPSD
2719  * @psoc:  psoc context
2720  * @value: Enable/Disable control value for sap_uapsd_enabled field
2721  *
2722  * Return: QDF_STATUS
2723  */
2724 QDF_STATUS wlan_mlme_set_sap_uapsd_flag(struct wlan_objmgr_psoc *psoc,
2725 					bool value);
2726 /**
2727  * wlan_mlme_is_11h_enabled() - Get the 11h flag
2728  * @psoc: psoc context
2729  * @value: Enable/Disable value ptr.
2730  *
2731  * Return: QDF_STATUS
2732  */
2733 QDF_STATUS
2734 wlan_mlme_is_11h_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2735 
2736 /**
2737  * wlan_mlme_set_11h_enabled() - Set the 11h flag
2738  * @psoc: psoc context
2739  * @value: Enable/Disable value
2740  *
2741  * Return: QDF_STATUS
2742  */
2743 QDF_STATUS
2744 wlan_mlme_set_11h_enabled(struct wlan_objmgr_psoc *psoc, bool value);
2745 
2746 /**
2747  * wlan_mlme_is_11d_enabled() - Get the 11d flag
2748  * @psoc: psoc context
2749  * @value: Enable/Disable value ptr.
2750  *
2751  * Return: QDF_STATUS
2752  */
2753 QDF_STATUS
2754 wlan_mlme_is_11d_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2755 
2756 /**
2757  * wlan_mlme_set_11d_enabled() - Set the 11h flag
2758  * @psoc: psoc context
2759  * @value: Enable/Disable value
2760  *
2761  * Return: QDF_STATUS
2762  */
2763 QDF_STATUS
2764 wlan_mlme_set_11d_enabled(struct wlan_objmgr_psoc *psoc, bool value);
2765 
2766 /**
2767  * wlan_mlme_is_rf_test_mode_enabled() - Get the rf test mode flag
2768  * @psoc: psoc context
2769  * @value: Enable/Disable value ptr.
2770  *
2771  * Return: QDF_STATUS
2772  */
2773 QDF_STATUS
2774 wlan_mlme_is_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2775 
2776 /**
2777  * wlan_mlme_set_rf_test_mode_enabled() - Set the rf test mode flag
2778  * @psoc: psoc context
2779  * @value: Enable/Disable value.
2780  *
2781  * Return: QDF_STATUS
2782  */
2783 QDF_STATUS
2784 wlan_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
2785 
2786 #ifdef CONFIG_BAND_6GHZ
2787 /**
2788  * wlan_mlme_is_disable_vlp_sta_conn_to_sp_ap_enabled() - Get the disable vlp
2789  *                                                       STA conn to SP AP flag
2790  * @psoc: psoc context
2791  * @value: Enable/Disable value ptr.
2792  *
2793  * Return: QDF_STATUS
2794  */
2795 QDF_STATUS
2796 wlan_mlme_is_disable_vlp_sta_conn_to_sp_ap_enabled(
2797 						struct wlan_objmgr_psoc *psoc,
2798 						bool *value);
2799 
2800 /**
2801  * wlan_mlme_is_standard_6ghz_conn_policy_enabled() - Get the 6 GHz standard
2802  *                                                    connection policy flag
2803  * @psoc: psoc context
2804  * @value: Enable/Disable value ptr.
2805  *
2806  * Return: QDF_STATUS
2807  */
2808 QDF_STATUS
2809 wlan_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
2810 					       bool *value);
2811 
2812 #else
2813 static inline QDF_STATUS
2814 wlan_mlme_is_disable_vlp_sta_conn_to_sp_ap_enabled(
2815 						struct wlan_objmgr_psoc *psoc,
2816 						bool *value)
2817 {
2818 	*value = false;
2819 	return QDF_STATUS_SUCCESS;
2820 }
2821 
2822 static inline QDF_STATUS
2823 wlan_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
2824 					       bool *value)
2825 {
2826 	*value = false;
2827 	return QDF_STATUS_SUCCESS;
2828 }
2829 #endif
2830 
2831 #ifdef WLAN_FEATURE_11BE_MLO
2832 /**
2833  * wlan_mlme_get_eht_mode() - Get the EHT mode of operations
2834  * @psoc: psoc context
2835  * @value: EHT mode value ptr
2836  *
2837  * Return: QDF_STATUS
2838  */
2839 QDF_STATUS
2840 wlan_mlme_get_eht_mode(struct wlan_objmgr_psoc *psoc,
2841 		       enum wlan_eht_mode *value);
2842 
2843 /**
2844  * wlan_mlme_set_eht_mode() - Set the EHT mode of operation
2845  * @psoc: psoc context
2846  * @value: EHT mode value
2847  *
2848  * Return: QDF_STATUS
2849  */
2850 QDF_STATUS
2851 wlan_mlme_set_eht_mode(struct wlan_objmgr_psoc *psoc, enum wlan_eht_mode value);
2852 
2853 /**
2854  * wlan_mlme_get_emlsr_mode_enabled() - Get the eMLSR mode flag
2855  * @psoc: psoc context
2856  * @value: Enable/Disable value ptr.
2857  *
2858  * Return: QDF_STATUS
2859  */
2860 QDF_STATUS
2861 wlan_mlme_get_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
2862 
2863 /**
2864  * wlan_mlme_set_emlsr_mode_enabled() - Set the eMLSR mode flag
2865  * @psoc: psoc context
2866  * @value: Enable/Disable value.
2867  *
2868  * Return: QDF_STATUS
2869  */
2870 QDF_STATUS
2871 wlan_mlme_set_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
2872 
2873 /**
2874  * wlan_mlme_set_eml_params() - Set EML subfields in psoc mlme obj that
2875  * are received from FW
2876  * @psoc: psoc context
2877  * @cap: psoc mac/phy capability ptr
2878  *
2879  * Return: none
2880  */
2881 void
2882 wlan_mlme_set_eml_params(struct wlan_objmgr_psoc *psoc,
2883 			 struct wlan_psoc_host_mac_phy_caps_ext2 *cap);
2884 
2885 /**
2886  * wlan_mlme_get_eml_params() - Get EML subfields from psoc mlme obj
2887  * @psoc: psoc context
2888  * @cap: EML capability subfield ptr
2889  *
2890  * Return: none
2891  */
2892 void
2893 wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
2894 			 struct wlan_mlo_eml_cap *cap);
2895 
2896 /**
2897  * wlan_mlme_cfg_set_emlsr_pad_delay() - Configure EMLSR padding delay subfield
2898  * @psoc: psoc context
2899  * @val: EMLSR padding delay subfield value
2900  *
2901  * API to configure EMLSR padding delay subfield in psoc mlme obj with user
2902  * requested value if it greater than the value configured by FW during boot-up.
2903  *
2904  * Return: none
2905  */
2906 void
2907 wlan_mlme_cfg_set_emlsr_pad_delay(struct wlan_objmgr_psoc *psoc, uint8_t val);
2908 
2909 /**
2910  * wlan_mlme_get_t2lm_negotiation_supported() - Get the T2LM
2911  * negotiation supported value
2912  * @psoc: psoc context
2913  *
2914  * Return: t2lm negotiation supported value
2915  */
2916 enum t2lm_negotiation_support
2917 wlan_mlme_get_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc);
2918 
2919 /**
2920  * wlan_mlme_set_t2lm_negotiation_supported() - Set the T2LM
2921  * negotiation supported value
2922  * @psoc: psoc context
2923  * @value: t2lm negotiation supported value
2924  *
2925  * Return: qdf status
2926  */
2927 QDF_STATUS
2928 wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
2929 					 uint8_t value);
2930 
2931 /**
2932  * wlan_mlme_get_eht_mld_id() - Get the MLD ID of the requested BSS
2933  * @psoc: psoc context
2934  *
2935  * Return: MLD ID of the requested BSS
2936  */
2937 uint8_t
2938 wlan_mlme_get_eht_mld_id(struct wlan_objmgr_psoc *psoc);
2939 
2940 /**
2941  * wlan_mlme_set_eht_mld_id() - Set MLD ID of the requested BSS information
2942  * within the ML probe request.
2943  * @psoc: psoc context
2944  * @value: MLD ID
2945  *
2946  * Return: qdf status
2947  */
2948 QDF_STATUS
2949 wlan_mlme_set_eht_mld_id(struct wlan_objmgr_psoc *psoc, uint8_t value);
2950 
2951 /*
2952  * wlan_mlme_get_mlo_prefer_percentage() - get MLO preference percentage
2953  * @psoc: pointer to psoc object
2954  *
2955  * Return: void
2956  */
2957 void
2958 wlan_mlme_get_mlo_prefer_percentage(
2959 				struct wlan_objmgr_psoc *psoc,
2960 				int8_t *mlo_prefer_percentage);
2961 #else
2962 static inline QDF_STATUS
2963 wlan_mlme_get_eht_mode(struct wlan_objmgr_psoc *psoc, enum wlan_eht_mode *value)
2964 {
2965 	*value = WLAN_EHT_MODE_DISABLED;
2966 	return QDF_STATUS_SUCCESS;
2967 }
2968 
2969 static inline QDF_STATUS
2970 wlan_mlme_set_eht_mode(struct wlan_objmgr_psoc *psoc, enum wlan_eht_mode value)
2971 {
2972 	return QDF_STATUS_SUCCESS;
2973 }
2974 
2975 static inline QDF_STATUS
2976 wlan_mlme_get_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value)
2977 {
2978 	*value = false;
2979 	return QDF_STATUS_SUCCESS;
2980 }
2981 
2982 static inline QDF_STATUS
2983 wlan_mlme_set_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
2984 {
2985 	return QDF_STATUS_SUCCESS;
2986 }
2987 
2988 static inline void
2989 wlan_mlme_set_eml_params(struct wlan_objmgr_psoc *psoc,
2990 			 struct wlan_psoc_host_mac_phy_caps_ext2 *cap)
2991 {
2992 }
2993 
2994 static inline void
2995 wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
2996 			 struct wlan_mlo_eml_cap *cap)
2997 {
2998 }
2999 
3000 static inline void
3001 wlan_mlme_cfg_set_emlsr_pad_delay(struct wlan_objmgr_psoc *psoc, uint8_t val)
3002 {
3003 }
3004 
3005 static inline enum t2lm_negotiation_support
3006 wlan_mlme_get_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc)
3007 {
3008 	return T2LM_NEGOTIATION_DISABLED;
3009 }
3010 
3011 static inline QDF_STATUS
3012 wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
3013 					 uint8_t value)
3014 {
3015 	return QDF_STATUS_E_NOSUPPORT;
3016 }
3017 
3018 static inline void
3019 wlan_mlme_get_mlo_prefer_percentage(
3020 				struct wlan_objmgr_psoc *psoc,
3021 				int8_t *mlo_prefer_percentage)
3022 {}
3023 #endif
3024 
3025 /**
3026  * wlan_mlme_set_btm_abridge_flag() - Set BTM abridge flag
3027  * @psoc: psoc context
3028  * @value: abridge flag
3029  *
3030  * Return: qdf status
3031  *
3032  * BTM abridge flag indicates whether to select candidates
3033  * for BTM roam based on score.
3034  */
3035 QDF_STATUS
3036 wlan_mlme_set_btm_abridge_flag(struct wlan_objmgr_psoc *psoc, bool value);
3037 
3038 /**
3039  * wlan_mlme_get_btm_abridge_flag() - Get BTM abridge flag
3040  * @psoc: psoc context
3041  *
3042  * Return: abridge flag
3043  *
3044  * BTM abridge flag indicates whether to select candidates
3045  * for BTM roam based on score.
3046  */
3047 bool
3048 wlan_mlme_get_btm_abridge_flag(struct wlan_objmgr_psoc *psoc);
3049 
3050 /**
3051  * wlan_mlme_get_sta_miracast_mcc_rest_time() - Get STA/MIRACAST MCC rest time
3052  * @psoc: pointer to psoc object
3053  * @value: value which needs to filled by API
3054  *
3055  * This API gives rest time to be used when STA and MIRACAST MCC conc happens
3056  *
3057  * Return: QDF_STATUS
3058  */
3059 QDF_STATUS
3060 wlan_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc,
3061 					 uint32_t *value);
3062 
3063 /**
3064  * wlan_mlme_get_max_modulated_dtim_ms() - get the max modulated dtim in ms
3065  * restart
3066  * @psoc: pointer to psoc object
3067  * @value: Value that needs to be set from the caller
3068  *
3069  * Return: QDF Status
3070  */
3071 QDF_STATUS
3072 wlan_mlme_get_max_modulated_dtim_ms(struct wlan_objmgr_psoc *psoc,
3073 				    uint16_t *value);
3074 
3075 /**
3076  * wlan_mlme_get_scan_probe_unicast_ra() - Get scan probe unicast RA cfg
3077  * @psoc: pointer to psoc object
3078  * @value: value which needs to filled by API
3079  *
3080  * This API gives scan probe request with unicast RA user config
3081  *
3082  * Return: QDF_STATUS
3083  */
3084 QDF_STATUS
3085 wlan_mlme_get_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
3086 				    bool *value);
3087 
3088 /**
3089  * wlan_mlme_set_scan_probe_unicast_ra() - Set scan probe unicast RA cfg
3090  * @psoc: pointer to psoc object
3091  * @value: set value
3092  *
3093  * This API sets scan probe request with unicast RA user config
3094  *
3095  * Return: QDF_STATUS
3096  */
3097 QDF_STATUS
3098 wlan_mlme_set_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
3099 				    bool value);
3100 
3101 /**
3102  * wlan_mlme_get_sap_mcc_chnl_avoid() - Check if SAP MCC needs to be avoided
3103  * @psoc: pointer to psoc object
3104  * @value: value which needs to filled by API
3105  *
3106  * This API fetches the user setting to determine if SAP MCC with other persona
3107  * to be avoided.
3108  *
3109  * Return: QDF_STATUS
3110  */
3111 QDF_STATUS
3112 wlan_mlme_get_sap_mcc_chnl_avoid(struct wlan_objmgr_psoc *psoc,
3113 				 uint8_t *value);
3114 /**
3115  * wlan_mlme_get_mcc_bcast_prob_resp() - Get broadcast probe rsp in MCC
3116  * @psoc: pointer to psoc object
3117  * @value: value which needs to filled by API
3118  *
3119  * To get INI value which helps to determe whether to enable/disable use of
3120  * broadcast probe response to increase the detectability of SAP in MCC mode.
3121  *
3122  *
3123  * Return: QDF_STATUS
3124  */
3125 QDF_STATUS
3126 wlan_mlme_get_mcc_bcast_prob_resp(struct wlan_objmgr_psoc *psoc,
3127 				  uint8_t *value);
3128 /**
3129  * wlan_mlme_get_mcc_rts_cts_prot() - To get RTS-CTS protection in MCC.
3130  * @psoc: pointer to psoc object
3131  * @value: value which needs to filled by API
3132  *
3133  * To get INI value which helps to determine whether to enable/disable
3134  * use of long duration RTS-CTS protection when SAP goes off
3135  * channel in MCC mode.
3136  *
3137  * Return: QDF_STATUS
3138  */
3139 QDF_STATUS
3140 wlan_mlme_get_mcc_rts_cts_prot(struct wlan_objmgr_psoc *psoc,
3141 			       uint8_t *value);
3142 /**
3143  * wlan_mlme_get_mcc_feature() - To find out to enable/disable MCC feature
3144  * @psoc: pointer to psoc object
3145  * @value: value which needs to filled by API
3146  *
3147  * To get INI value which helps to determine whether to enable MCC feature
3148  *
3149  * Return: QDF_STATUS
3150  */
3151 QDF_STATUS
3152 wlan_mlme_get_mcc_feature(struct wlan_objmgr_psoc *psoc,
3153 			  uint8_t *value);
3154 
3155 /**
3156  * wlan_mlme_get_rrm_enabled() - Get the RRM enabled ini
3157  * @psoc: pointer to psoc object
3158  * @value: pointer to the value which will be filled for the caller
3159  *
3160  * Return: QDF Status
3161  */
3162 QDF_STATUS wlan_mlme_get_rrm_enabled(struct wlan_objmgr_psoc *psoc,
3163 				     bool *value);
3164 
3165 /**
3166  * wlan_mlme_get_dtim_selection_diversity() - get dtim selection diversity
3167  * bitmap
3168  * @psoc: pointer to psoc object
3169  * @dtim_selection_div: value that is requested by the caller
3170  * This function gets the dtim selection diversity bitmap to be
3171  * sent to the firmware
3172  *
3173  * Return: QDF_STATUS_SUCCESS - in case of success
3174  */
3175 QDF_STATUS wlan_mlme_get_dtim_selection_diversity(struct wlan_objmgr_psoc *psoc,
3176 						  uint32_t *dtim_selection_div);
3177 
3178 /**
3179  * wlan_mlme_get_bmps_min_listen_interval() - get beacon mode powersave
3180  * minimum listen interval value
3181  * @psoc: pointer to psoc object
3182  * @value: value that is requested by the caller
3183  *
3184  * Return: QDF_STATUS_SUCCESS - in case of success
3185  */
3186 QDF_STATUS wlan_mlme_get_bmps_min_listen_interval(struct wlan_objmgr_psoc *psoc,
3187 						  uint32_t *value);
3188 
3189 /**
3190  * wlan_mlme_get_bmps_max_listen_interval() - get beacon mode powersave
3191  * maximum listen interval value
3192  * @psoc: pointer to psoc object
3193  * @value: value that is requested by the caller
3194  *
3195  * Return: QDF_STATUS_SUCCESS - in case of success
3196  */
3197 QDF_STATUS wlan_mlme_get_bmps_max_listen_interval(struct wlan_objmgr_psoc *psoc,
3198 						  uint32_t *value);
3199 
3200 /**
3201  * wlan_mlme_get_auto_bmps_timer_value() - get bmps timer value
3202  * @psoc: pointer to psoc object
3203  * @value: value that is requested by the caller
3204  *
3205  * Return: QDF_STATUS_SUCCESS - in case of success
3206  */
3207 QDF_STATUS wlan_mlme_get_auto_bmps_timer_value(struct wlan_objmgr_psoc *psoc,
3208 					       uint32_t *value);
3209 
3210 /**
3211  * wlan_mlme_is_bmps_enabled() - check if beacon mode powersave is
3212  * enabled/disabled
3213  * @psoc: pointer to psoc object
3214  * @value: value that is requested by the caller
3215  *
3216  * Return: QDF_STATUS_SUCCESS - in case of success
3217  */
3218 QDF_STATUS wlan_mlme_is_bmps_enabled(struct wlan_objmgr_psoc *psoc,
3219 				     bool *value);
3220 
3221 /**
3222  * wlan_mlme_override_bmps_imps() - disable imps/bmps
3223  * @psoc: pointer to psoc object
3224  *
3225  * Return: QDF_STATUS_SUCCESS - in case of success
3226  */
3227 QDF_STATUS wlan_mlme_override_bmps_imps(struct wlan_objmgr_psoc *psoc);
3228 
3229 /**
3230  * wlan_mlme_is_imps_enabled() - check if idle mode powersave is
3231  * enabled/disabled
3232  * @psoc: pointer to psoc object
3233  * @value: value that is requested by the caller
3234  *
3235  * Return: QDF_STATUS_SUCCESS - in case of success
3236  */
3237 QDF_STATUS wlan_mlme_is_imps_enabled(struct wlan_objmgr_psoc *psoc,
3238 				     bool *value);
3239 
3240 /**
3241  * wlan_mlme_get_wps_uuid() - get the wps uuid string
3242  * @wps_params:   pointer to mlme wps parameters structure
3243  * @data:          data to which the parameter is to be copied
3244  *
3245  * Return None
3246  *
3247  */
3248 void
3249 wlan_mlme_get_wps_uuid(struct wlan_mlme_wps_params *wps_params, uint8_t *data);
3250 
3251 /**
3252  * wlan_mlme_get_self_gen_frm_pwr() - get self gen frm pwr
3253  * @psoc: pointer to psoc object
3254  * @value:  Pointer to the value which will be filled for the caller
3255  *
3256  * Return: QDF Status
3257  */
3258 QDF_STATUS
3259 wlan_mlme_get_self_gen_frm_pwr(struct wlan_objmgr_psoc *psoc,
3260 			       uint32_t *value);
3261 
3262 /**
3263  * wlan_mlme_get_4way_hs_offload() - get 4-way hs offload to fw cfg
3264  * @psoc: pointer to psoc object
3265  * @value:  Pointer to the value which will be filled for the caller
3266  *
3267  * Return: QDF Status
3268  */
3269 QDF_STATUS
3270 wlan_mlme_get_4way_hs_offload(struct wlan_objmgr_psoc *psoc, uint32_t *value);
3271 
3272 /**
3273  * wlan_mlme_get_bmiss_skip_full_scan_value() - To get value of
3274  * bmiss_skip_full_scan ini
3275  * @psoc: pointer to psoc object
3276  * @value:  Pointer to the value which will be filled for the caller
3277  *
3278  * Return: QDF Status
3279  */
3280 QDF_STATUS
3281 wlan_mlme_get_bmiss_skip_full_scan_value(struct wlan_objmgr_psoc *psoc,
3282 					 bool *value);
3283 
3284 /**
3285  * mlme_get_peer_phymode() - get phymode of peer
3286  * @psoc: pointer to psoc object
3287  * @mac:  Pointer to the mac addr of the peer
3288  * @peer_phymode: phymode
3289  *
3290  * Return: QDF Status
3291  */
3292 QDF_STATUS
3293 mlme_get_peer_phymode(struct wlan_objmgr_psoc *psoc, uint8_t *mac,
3294 		      enum wlan_phymode *peer_phymode);
3295 
3296 /**
3297  * mlme_set_tgt_wpa3_roam_cap() - Set the target WPA3 roam support
3298  * to mlme
3299  * @psoc: pointer to PSOC object
3300  * @akm_bitmap: Bitmap of akm suites supported for roaming by the firmware
3301  *
3302  * Return: QDF Status
3303  */
3304 QDF_STATUS mlme_set_tgt_wpa3_roam_cap(struct wlan_objmgr_psoc *psoc,
3305 				      uint32_t akm_bitmap);
3306 /**
3307  * wlan_mlme_get_ignore_fw_reg_offload_ind() - Get the
3308  * ignore_fw_reg_offload_ind ini
3309  * @psoc: pointer to psoc object
3310  * @disabled: output pointer to hold user config
3311  *
3312  * Return: QDF Status
3313  */
3314 QDF_STATUS
3315 wlan_mlme_get_ignore_fw_reg_offload_ind(struct wlan_objmgr_psoc *psoc,
3316 					bool *disabled);
3317 
3318 /**
3319  * mlme_get_roam_trigger_str() - Get the string for enum
3320  * WMI_ROAM_TRIGGER_REASON_ID reason.
3321  * @roam_scan_trigger: roam scan trigger ID
3322  *
3323  *  Return: Meaningful string from enum WMI_ROAM_TRIGGER_REASON_ID
3324  */
3325 char *mlme_get_roam_trigger_str(uint32_t roam_scan_trigger);
3326 
3327 /**
3328  * mlme_get_roam_status_str() - Get the string for roam status
3329  * @roam_status: roam status coming from fw via
3330  * wmi_roam_scan_info tlv
3331  *
3332  *  Return: Meaningful string for roam status
3333  */
3334 char *mlme_get_roam_status_str(uint32_t roam_status);
3335 
3336 /**
3337  * mlme_get_converted_timestamp() - Return time of the day
3338  * from timestamp
3339  * @timestamp:    Timestamp value in milliseconds
3340  * @time:         Output buffer to fill time into
3341  *
3342  * Return: Time of the day in [HH:MM:SS.uS]
3343  */
3344 void mlme_get_converted_timestamp(uint32_t timestamp, char *time);
3345 
3346 #if defined(WLAN_SAE_SINGLE_PMK) && defined(WLAN_FEATURE_ROAM_OFFLOAD)
3347 /**
3348  * wlan_mlme_set_sae_single_pmk_bss_cap - API to set WPA3 single pmk AP IE
3349  * @psoc: Pointer to psoc object
3350  * @vdev_id: vdev id
3351  * @val: value to be set
3352  *
3353  * Return : None
3354  */
3355 void wlan_mlme_set_sae_single_pmk_bss_cap(struct wlan_objmgr_psoc *psoc,
3356 					  uint8_t vdev_id, bool val);
3357 
3358 /**
3359  * wlan_mlme_update_sae_single_pmk - API to update mlme_pmkid_info
3360  * @vdev: vdev object
3361  * @sae_single_pmk: pointer to sae_single_pmk_info struct
3362  *
3363  * Return : None
3364  */
3365 void
3366 wlan_mlme_update_sae_single_pmk(struct wlan_objmgr_vdev *vdev,
3367 				struct mlme_pmk_info *sae_single_pmk);
3368 
3369 /**
3370  * wlan_mlme_get_sae_single_pmk_info - API to get mlme_pmkid_info
3371  * @vdev: vdev object
3372  * @pmksa: pointer to PMKSA struct
3373  *
3374  * Return : None
3375  */
3376 void
3377 wlan_mlme_get_sae_single_pmk_info(struct wlan_objmgr_vdev *vdev,
3378 				  struct wlan_mlme_sae_single_pmk *pmksa);
3379 
3380 /**
3381  * wlan_mlme_is_sae_single_pmk_enabled() - Get is SAE single pmk feature enabled
3382  * @psoc: Pointer to Global psoc
3383  *
3384  * Return: True if SAE single PMK is enabled
3385  */
3386 bool wlan_mlme_is_sae_single_pmk_enabled(struct wlan_objmgr_psoc *psoc);
3387 
3388 /**
3389  * wlan_mlme_clear_sae_single_pmk_info - API to clear mlme_pmkid_info ap caps
3390  * @vdev: vdev object
3391  * @pmk : pmk info to clear
3392  *
3393  * Return : None
3394  */
3395 void wlan_mlme_clear_sae_single_pmk_info(struct wlan_objmgr_vdev *vdev,
3396 					 struct mlme_pmk_info *pmk);
3397 #else
3398 static inline void
3399 wlan_mlme_set_sae_single_pmk_bss_cap(struct wlan_objmgr_psoc *psoc,
3400 				     uint8_t vdev_id, bool val)
3401 {
3402 }
3403 
3404 static inline
3405 bool wlan_mlme_is_sae_single_pmk_enabled(struct wlan_objmgr_psoc *psoc)
3406 {
3407 	return false;
3408 }
3409 
3410 static inline void
3411 wlan_mlme_update_sae_single_pmk(struct wlan_objmgr_vdev *vdev,
3412 				struct mlme_pmk_info *sae_single_pmk)
3413 {
3414 }
3415 
3416 static inline void
3417 wlan_mlme_get_sae_single_pmk_info(struct wlan_objmgr_vdev *vdev,
3418 				  struct wlan_mlme_sae_single_pmk *pmksa)
3419 {
3420 }
3421 
3422 static inline
3423 void wlan_mlme_clear_sae_single_pmk_info(struct wlan_objmgr_vdev *vdev,
3424 					 struct mlme_pmk_info *pmk)
3425 {
3426 }
3427 #endif
3428 
3429 /**
3430  * mlme_get_roam_fail_reason_str() - Get fail string from enum
3431  * WMI_ROAM_FAIL_REASON_ID
3432  * @result:   Roam fail reason
3433  *
3434  * Return: Meaningful string from enum
3435  */
3436 char *mlme_get_roam_fail_reason_str(uint32_t result);
3437 
3438 /**
3439  * mlme_get_sub_reason_str() - Get roam trigger sub reason from enum
3440  * WMI_ROAM_TRIGGER_SUB_REASON_ID
3441  * @sub_reason: Sub reason value
3442  *
3443  * Return: Meaningful string from enum WMI_ROAM_TRIGGER_SUB_REASON_ID
3444  */
3445 char *mlme_get_sub_reason_str(uint32_t sub_reason);
3446 
3447 /**
3448  * wlan_mlme_get_mgmt_max_retry() - Get the
3449  * max mgmt retry
3450  * @psoc: pointer to psoc object
3451  * @max_retry: output pointer to hold user config
3452  *
3453  * Return: QDF Status
3454  */
3455 QDF_STATUS
3456 wlan_mlme_get_mgmt_max_retry(struct wlan_objmgr_psoc *psoc,
3457 			     uint8_t *max_retry);
3458 
3459 /**
3460  * wlan_mlme_get_mgmt_6ghz_rate_support() - Get status of HE rates for
3461  * 6GHz mgmt frames
3462  * @psoc: pointer to psoc object
3463  * @enable_he_mcs0_for_6ghz_mgmt: pointer to check for HE rates support
3464  *
3465  * Return: QDF Status
3466  */
3467 QDF_STATUS
3468 wlan_mlme_get_mgmt_6ghz_rate_support(struct wlan_objmgr_psoc *psoc,
3469 				     bool *enable_he_mcs0_for_6ghz_mgmt);
3470 
3471 /**
3472  * wlan_mlme_get_status_ring_buffer() - Get the
3473  * status of ring buffer
3474  * @psoc: pointer to psoc object
3475  * @enable_ring_buffer: output pointer to point the configured value of
3476  * ring buffer
3477  *
3478  * Return: QDF_STATUS
3479  */
3480 QDF_STATUS
3481 wlan_mlme_get_status_ring_buffer(struct wlan_objmgr_psoc *psoc,
3482 				 bool *enable_ring_buffer);
3483 
3484 /**
3485  * wlan_mlme_get_peer_unmap_conf() - Indicate if peer unmap confirmation
3486  * support is enabled or disabled
3487  * @psoc: pointer to psoc object
3488  *
3489  * Return: true if peer unmap confirmation support is enabled, else false
3490  */
3491 bool wlan_mlme_get_peer_unmap_conf(struct wlan_objmgr_psoc *psoc);
3492 
3493 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
3494 /**
3495  * wlan_mlme_get_roam_reason_vsie_status() - Indicate if roam reason
3496  * vsie is enabled or disabled
3497  * @psoc: pointer to psoc object
3498  * @roam_reason_vsie_enabled: pointer to hold value of roam reason
3499  * vsie
3500  *
3501  * Return: QDF_STATUS
3502  */
3503 QDF_STATUS
3504 wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
3505 				      uint8_t *roam_reason_vsie_enabled);
3506 
3507 /**
3508  * wlan_mlme_set_roam_reason_vsie_status() - Update roam reason vsie status
3509  * @psoc: pointer to psoc object
3510  * @roam_reason_vsie_enabled: value of roam reason vsie
3511  *
3512  * Return: QDF_STATUS
3513  */
3514 QDF_STATUS
3515 wlan_mlme_set_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
3516 				      uint8_t roam_reason_vsie_enabled);
3517 
3518 /**
3519  * wlan_mlme_get_roaming_triggers  - Get the roaming triggers bitmap
3520  * @psoc: Pointer to PSOC object
3521  *
3522  * Return: Roaming triggers value
3523  */
3524 uint32_t wlan_mlme_get_roaming_triggers(struct wlan_objmgr_psoc *psoc);
3525 
3526 /**
3527  * wlan_mlme_set_roaming_triggers() - Set the roaming triggers bitmap
3528  * @psoc: Pointer to PSOC object
3529  * @trigger_bitmap: Roaming triggers bitmap to set
3530  *
3531  * Return: void
3532  */
3533 void wlan_mlme_set_roaming_triggers(struct wlan_objmgr_psoc *psoc,
3534 				    uint32_t trigger_bitmap);
3535 
3536 /**
3537  * wlan_mlme_get_roaming_offload() - Get roaming offload setting
3538  * @psoc: pointer to psoc object
3539  * @val:  Pointer to enable/disable roaming offload
3540  *
3541  * Return: QDF Status
3542  */
3543 QDF_STATUS
3544 wlan_mlme_get_roaming_offload(struct wlan_objmgr_psoc *psoc,
3545 			      bool *val);
3546 
3547 /**
3548  * wlan_mlme_get_enable_disconnect_roam_offload() - Get emergency roaming
3549  * Enable/Disable status during deauth/disassoc
3550  * @psoc: pointer to psoc object
3551  * @val:  Pointer to emergency roaming Enable/Disable status
3552  *        during deauth/disassoc
3553  *
3554  * Return: QDF Status
3555  */
3556 QDF_STATUS
3557 wlan_mlme_get_enable_disconnect_roam_offload(struct wlan_objmgr_psoc *psoc,
3558 					     bool *val);
3559 
3560 /**
3561  * wlan_mlme_get_enable_idle_roam() - Get Enable/Disable idle roaming status
3562  * @psoc: pointer to psoc object
3563  * @val:  Pointer to Enable/Disable idle roaming status
3564  *
3565  * Return: QDF Status
3566  */
3567 QDF_STATUS
3568 wlan_mlme_get_enable_idle_roam(struct wlan_objmgr_psoc *psoc, bool *val);
3569 
3570 /**
3571  * wlan_mlme_get_idle_roam_rssi_delta() - Get idle roam rssi delta
3572  * @psoc: pointer to psoc object
3573  * @val:  Pointer to idle roam rssi delta
3574  *
3575  * Return: QDF Status
3576  */
3577 QDF_STATUS
3578 wlan_mlme_get_idle_roam_rssi_delta(struct wlan_objmgr_psoc *psoc,
3579 				   uint32_t *val);
3580 
3581 /**
3582  * wlan_mlme_get_roam_info_stats_num() - Get roam information statistics number
3583  * @psoc: pointer to psoc object
3584  * @val:  Pointer to roam_info_stats_num
3585  *
3586  * Return: QDF Status
3587  */
3588 QDF_STATUS
3589 wlan_mlme_get_roam_info_stats_num(struct wlan_objmgr_psoc *psoc, uint32_t *val);
3590 
3591 /**
3592  * wlan_mlme_get_idle_roam_inactive_time() - Get idle roam inactive time
3593  * @psoc: pointer to psoc object
3594  * @val:  Pointer to idle roam inactive time
3595  *
3596  * Return: QDF Status
3597  */
3598 QDF_STATUS
3599 wlan_mlme_get_idle_roam_inactive_time(struct wlan_objmgr_psoc *psoc,
3600 				      uint32_t *val);
3601 /**
3602  * wlan_mlme_get_idle_data_packet_count() - Get idle data packet count
3603  * @psoc: pointer to psoc object
3604  * @val:  Pointer to idle data packet count
3605  *
3606  * Return: QDF Status
3607  */
3608 QDF_STATUS
3609 wlan_mlme_get_idle_data_packet_count(struct wlan_objmgr_psoc *psoc,
3610 				     uint32_t *val);
3611 
3612 /**
3613  * wlan_mlme_get_idle_roam_min_rssi() - Get idle roam min rssi
3614  * @psoc: pointer to psoc object
3615  * @val:  Pointer to idle roam min rssi
3616  *
3617  * Return: QDF Status
3618  */
3619 QDF_STATUS
3620 wlan_mlme_get_idle_roam_min_rssi(struct wlan_objmgr_psoc *psoc, uint32_t *val);
3621 
3622 /**
3623  * wlan_mlme_get_idle_roam_band() - Get idle roam band
3624  * @psoc: pointer to psoc object
3625  * @val:  Pointer to idle roam band
3626  *
3627  * Return: QDF Status
3628  */
3629 QDF_STATUS
3630 wlan_mlme_get_idle_roam_band(struct wlan_objmgr_psoc *psoc, uint32_t *val);
3631 
3632 /**
3633  * wlan_mlme_get_self_bss_roam() - Get self bss roam enable status
3634  * @psoc: pointer to psoc object
3635  * @enable_self_bss_roam:  Pointer to self bss roam enable status
3636  *
3637  * Return: QDF Status
3638  */
3639 QDF_STATUS
3640 wlan_mlme_get_self_bss_roam(struct wlan_objmgr_psoc *psoc,
3641 			    uint8_t *enable_self_bss_roam);
3642 #else
3643 static inline QDF_STATUS
3644 wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
3645 				      uint8_t *roam_reason_vsie_enable)
3646 {
3647 	return QDF_STATUS_E_FAILURE;
3648 }
3649 
3650 static inline QDF_STATUS
3651 wlan_mlme_set_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
3652 				      uint8_t roam_reason_vsie_enable)
3653 {
3654 	return QDF_STATUS_E_FAILURE;
3655 }
3656 
3657 static inline
3658 uint32_t wlan_mlme_get_roaming_triggers(struct wlan_objmgr_psoc *psoc)
3659 {
3660 	return 0xFFFF;
3661 }
3662 
3663 static inline
3664 void wlan_mlme_set_roaming_triggers(struct wlan_objmgr_psoc *psoc,
3665 				    uint32_t trigger_bitmap)
3666 {
3667 }
3668 
3669 static inline QDF_STATUS
3670 wlan_mlme_get_roaming_offload(struct wlan_objmgr_psoc *psoc,
3671 			      bool *val)
3672 {
3673 	*val = false;
3674 
3675 	return QDF_STATUS_SUCCESS;
3676 }
3677 #endif
3678 
3679 /**
3680  * wlan_mlme_set_peer_indicated_ch_width() - Set peer indicated channel width
3681  * @psoc: pointer to psoc object
3682  * @data: Pointer to peer operating mode change event status
3683  *
3684  * Return: QDF Status
3685  */
3686 QDF_STATUS
3687 wlan_mlme_set_peer_indicated_ch_width(struct wlan_objmgr_psoc *psoc,
3688 				      struct peer_oper_mode_event *data);
3689 
3690 /**
3691  * wlan_mlme_get_peer_indicated_ch_width() - Get peer indicated channel width
3692  * @psoc: pointer to psoc object
3693  * @data: Pointer to peer operating mode change event status
3694  *
3695  * Return: QDF Status
3696  */
3697 QDF_STATUS
3698 wlan_mlme_get_peer_indicated_ch_width(struct wlan_objmgr_psoc *psoc,
3699 				      struct peer_oper_mode_event *data);
3700 
3701 /**
3702  * wlan_mlme_set_ft_over_ds() - Update ft_over_ds
3703  * @psoc: pointer to psoc object
3704  * @ft_over_ds_enable: value of ft_over_ds
3705  *
3706  * Return: QDF_STATUS
3707  */
3708 QDF_STATUS wlan_mlme_set_ft_over_ds(struct wlan_objmgr_psoc *psoc,
3709 				    uint8_t ft_over_ds_enable);
3710 /**
3711  * wlan_mlme_get_dfs_chan_ageout_time() - Get the DFS Channel ageout time
3712  * @psoc: pointer to psoc object
3713  * @dfs_chan_ageout_time: output pointer to hold configured value of DFS
3714  * Channel ageout time
3715  *
3716  * Return: QDF Status
3717  */
3718 QDF_STATUS
3719 wlan_mlme_get_dfs_chan_ageout_time(struct wlan_objmgr_psoc *psoc,
3720 				   uint8_t *dfs_chan_ageout_time);
3721 
3722 #ifdef WLAN_FEATURE_SAE
3723 /**
3724  * wlan_mlme_get_sae_assoc_retry_count() - Get the sae assoc retry count
3725  * @psoc: pointer to psoc object
3726  * @retry_count: assoc retry count
3727  *
3728  * Return: QDF Status
3729  */
3730 QDF_STATUS
3731 wlan_mlme_get_sae_assoc_retry_count(struct wlan_objmgr_psoc *psoc,
3732 				    uint8_t *retry_count);
3733 /**
3734  * wlan_mlme_get_sae_auth_retry_count() - Get the sae auth retry count
3735  * @psoc: pointer to psoc object
3736  * @retry_count: auth retry count
3737  *
3738  * Return: QDF Status
3739  */
3740 QDF_STATUS
3741 wlan_mlme_get_sae_auth_retry_count(struct wlan_objmgr_psoc *psoc,
3742 				   uint8_t *retry_count);
3743 
3744 /**
3745  * wlan_mlme_get_sae_roam_auth_retry_count() - Get the sae roam auth retry count
3746  * @psoc: pointer to psoc object
3747  * @retry_count: auth retry count
3748  *
3749  * Return: QDF Status
3750  */
3751 QDF_STATUS
3752 wlan_mlme_get_sae_roam_auth_retry_count(struct wlan_objmgr_psoc *psoc,
3753 					uint8_t *retry_count);
3754 
3755 #else
3756 static inline QDF_STATUS
3757 wlan_mlme_get_sae_assoc_retry_count(struct wlan_objmgr_psoc *psoc,
3758 				    uint8_t *retry_count)
3759 {
3760 	*retry_count = 0;
3761 	return QDF_STATUS_SUCCESS;
3762 }
3763 
3764 static inline QDF_STATUS
3765 wlan_mlme_get_sae_auth_retry_count(struct wlan_objmgr_psoc *psoc,
3766 				    uint8_t *retry_count)
3767 {
3768 	*retry_count = 0;
3769 	return QDF_STATUS_SUCCESS;
3770 }
3771 
3772 static inline QDF_STATUS
3773 wlan_mlme_get_sae_roam_auth_retry_count(struct wlan_objmgr_psoc *psoc,
3774 					uint8_t *retry_count)
3775 {
3776 	*retry_count = 0;
3777 	return QDF_STATUS_SUCCESS;
3778 }
3779 #endif
3780 
3781 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
3782 /**
3783  * wlan_mlme_get_dual_sta_roaming_enabled  - API to get if the dual sta
3784  * roaming support is enabled.
3785  * @psoc: Pointer to global psoc object
3786  *
3787  * Return: True if dual sta roaming feature is enabled else return false
3788  */
3789 bool
3790 wlan_mlme_get_dual_sta_roaming_enabled(struct wlan_objmgr_psoc *psoc);
3791 #else
3792 static inline bool
3793 wlan_mlme_get_dual_sta_roaming_enabled(struct wlan_objmgr_psoc *psoc)
3794 {
3795 	return false;
3796 }
3797 #endif
3798 
3799 /**
3800  * mlme_store_fw_scan_channels - Update the valid channel list to mlme.
3801  * @psoc: Pointer to global psoc object
3802  * @chan_list: Source channel list pointer
3803  *
3804  * Currently the channel list is saved to wma_handle to be updated in the
3805  * PCL command. This cannot be accessed at target_if while sending vdev
3806  * set pcl command. So save the channel list to mlme.
3807  *
3808  * Return: QDF_STATUS
3809  */
3810 QDF_STATUS
3811 mlme_store_fw_scan_channels(struct wlan_objmgr_psoc *psoc,
3812 			    tSirUpdateChanList *chan_list);
3813 
3814 /**
3815  * mlme_get_fw_scan_channels  - Copy the saved valid channel
3816  * list to the provided buffer
3817  * @psoc: Pointer to global psoc object
3818  * @freq_list: Pointer to the frequency list buffer to be filled
3819  * @saved_num_chan: Number of channels filled
3820  *
3821  * Return: QDF_STATUS
3822  */
3823 QDF_STATUS mlme_get_fw_scan_channels(struct wlan_objmgr_psoc *psoc,
3824 				     uint32_t *freq_list,
3825 				     uint8_t *saved_num_chan);
3826 /**
3827  * wlan_mlme_get_roam_scan_offload_enabled() - Roam scan offload enable or not
3828  * @psoc: pointer to psoc object
3829  * @val:  Pointer to the value which will be filled for the caller
3830  *
3831  * Return: QDF Status
3832  */
3833 QDF_STATUS
3834 wlan_mlme_get_roam_scan_offload_enabled(struct wlan_objmgr_psoc *psoc,
3835 					bool *val);
3836 
3837 /**
3838  * wlan_mlme_get_roam_bmiss_final_bcnt() - Get roam bmiss final count
3839  * @psoc: pointer to psoc object
3840  * @val:  Pointer to the value which will be filled for the caller
3841  *
3842  * Return: QDF Status
3843  */
3844 QDF_STATUS
3845 wlan_mlme_get_roam_bmiss_final_bcnt(struct wlan_objmgr_psoc *psoc,
3846 				    uint8_t *val);
3847 
3848 /**
3849  * wlan_mlme_get_roam_bmiss_first_bcnt() - Get roam bmiss first count
3850  * @psoc: pointer to psoc object
3851  * @val:  Pointer to the value which will be filled for the caller
3852  *
3853  * Return: QDF Status
3854  */
3855 QDF_STATUS
3856 wlan_mlme_get_roam_bmiss_first_bcnt(struct wlan_objmgr_psoc *psoc,
3857 				    uint8_t *val);
3858 
3859 /**
3860  * wlan_mlme_get_bmiss_timeout_on_wakeup() - Get bmiss timeout
3861  * @psoc: pointer to psoc object
3862  * @val:  Pointer to the value which will be filled for the caller
3863  *
3864  * Return: QDF Status
3865  */
3866 QDF_STATUS
3867 wlan_mlme_get_bmiss_timeout_on_wakeup(struct wlan_objmgr_psoc *psoc,
3868 				      uint8_t *val);
3869 
3870 /**
3871  * wlan_mlme_get_bmiss_timeout_on_sleep() - Get roam conbmiss timeout
3872  * @psoc: pointer to psoc object
3873  * @val:  Pointer to the value which will be filled for the caller
3874  *
3875  * Return: QDF Status
3876  */
3877 QDF_STATUS
3878 wlan_mlme_get_bmiss_timeout_on_sleep(struct wlan_objmgr_psoc *psoc,
3879 				     uint8_t *val);
3880 
3881 /**
3882  * wlan_mlme_adaptive_11r_enabled() - check if adaptive 11r feature is enaled
3883  * or not
3884  * @psoc: pointer to psoc object
3885  *
3886  * Return: bool
3887  */
3888 #ifdef WLAN_ADAPTIVE_11R
3889 bool wlan_mlme_adaptive_11r_enabled(struct wlan_objmgr_psoc *psoc);
3890 #else
3891 static inline bool wlan_mlme_adaptive_11r_enabled(struct wlan_objmgr_psoc *psoc)
3892 {
3893 	return false;
3894 }
3895 #endif
3896 
3897 /**
3898  * wlan_mlme_get_mawc_enabled() - Get mawc enabled status
3899  * @psoc: pointer to psoc object
3900  * @val:  Pointer to the value which will be filled for the caller
3901  *
3902  * Return: QDF Status
3903  */
3904 QDF_STATUS
3905 wlan_mlme_get_mawc_enabled(struct wlan_objmgr_psoc *psoc, bool *val);
3906 
3907 /**
3908  * wlan_mlme_get_mawc_roam_enabled() - Get mawc roam enabled status
3909  * @psoc: pointer to psoc object
3910  * @val:  Pointer to the value which will be filled for the caller
3911  *
3912  * Return: QDF Status
3913  */
3914 QDF_STATUS
3915 wlan_mlme_get_mawc_roam_enabled(struct wlan_objmgr_psoc *psoc, bool *val);
3916 
3917 /**
3918  * wlan_mlme_get_mawc_roam_traffic_threshold() - Get mawc traffic threshold
3919  * @psoc: pointer to psoc object
3920  * @val:  Pointer to the value which will be filled for the caller
3921  *
3922  * Return: QDF Status
3923  */
3924 QDF_STATUS
3925 wlan_mlme_get_mawc_roam_traffic_threshold(struct wlan_objmgr_psoc *psoc,
3926 					  uint32_t *val);
3927 
3928 /**
3929  * wlan_mlme_get_mawc_roam_ap_rssi_threshold() - Get AP RSSI threshold for
3930  * MAWC roaming
3931  * @psoc: pointer to psoc object
3932  * @val:  Pointer to the value which will be filled for the caller
3933  *
3934  * Return: QDF Status
3935  */
3936 QDF_STATUS
3937 wlan_mlme_get_mawc_roam_ap_rssi_threshold(struct wlan_objmgr_psoc *psoc,
3938 					  uint32_t *val);
3939 
3940 /**
3941  * wlan_mlme_get_mawc_roam_rssi_high_adjust() - Get high adjustment value
3942  * for suppressing scan
3943  * @psoc: pointer to psoc object
3944  * @val:  Pointer to the value which will be filled for the caller
3945  *
3946  * Return: QDF Status
3947  */
3948 QDF_STATUS
3949 wlan_mlme_get_mawc_roam_rssi_high_adjust(struct wlan_objmgr_psoc *psoc,
3950 					 uint8_t *val);
3951 
3952 /**
3953  * wlan_mlme_get_mawc_roam_rssi_low_adjust() - Get low adjustment value
3954  * for suppressing scan
3955  * @psoc: pointer to psoc object
3956  * @val:  Pointer to the value which will be filled for the caller
3957  *
3958  * Return: QDF Status
3959  */
3960 QDF_STATUS
3961 wlan_mlme_get_mawc_roam_rssi_low_adjust(struct wlan_objmgr_psoc *psoc,
3962 					uint8_t *val);
3963 
3964 /**
3965  * wlan_mlme_get_bss_load_enabled() - Get bss load based roam trigger
3966  * enabled status
3967  * @psoc: pointer to psoc object
3968  * @val:  Pointer to the value which will be filled for the caller
3969  *
3970  * Return: QDF Status
3971  */
3972 QDF_STATUS
3973 wlan_mlme_get_bss_load_enabled(struct wlan_objmgr_psoc *psoc, bool *val);
3974 
3975 /**
3976  * wlan_mlme_get_bss_load_threshold() - Get bss load threshold
3977  * @psoc: pointer to psoc object
3978  * @val:  Pointer to the value which will be filled for the caller
3979  *
3980  * Return: QDF Status
3981  */
3982 QDF_STATUS
3983 wlan_mlme_get_bss_load_threshold(struct wlan_objmgr_psoc *psoc, uint32_t *val);
3984 
3985 /**
3986  * wlan_mlme_get_bss_load_sample_time() - Get bss load sample time
3987  * @psoc: pointer to psoc object
3988  * @val:  Pointer to the value which will be filled for the caller
3989  *
3990  * Return: QDF Status
3991  */
3992 QDF_STATUS
3993 wlan_mlme_get_bss_load_sample_time(struct wlan_objmgr_psoc *psoc,
3994 				   uint32_t *val);
3995 
3996 /**
3997  * wlan_mlme_get_bss_load_rssi_threshold_6ghz() - Get bss load RSSI
3998  * threshold on 6G
3999  * @psoc: pointer to psoc object
4000  * @val:  Pointer to the value which will be filled for the caller
4001  *
4002  * Return: QDF Status
4003  */
4004 QDF_STATUS
4005 wlan_mlme_get_bss_load_rssi_threshold_6ghz(struct wlan_objmgr_psoc *psoc,
4006 					   int32_t *val);
4007 
4008 /**
4009  * wlan_mlme_get_bss_load_rssi_threshold_5ghz() - Get bss load RSSI
4010  * threshold on 5G
4011  * @psoc: pointer to psoc object
4012  * @val:  Pointer to the value which will be filled for the caller
4013  *
4014  * Return: QDF Status
4015  */
4016 QDF_STATUS
4017 wlan_mlme_get_bss_load_rssi_threshold_5ghz(struct wlan_objmgr_psoc *psoc,
4018 					   int32_t *val);
4019 
4020 /**
4021  * wlan_mlme_get_bss_load_rssi_threshold_24ghz() - Get bss load RSSI
4022  * threshold on 2.4G
4023  * @psoc: pointer to psoc object
4024  * @val:  Pointer to the value which will be filled for the caller
4025  *
4026  * Return: QDF Status
4027  */
4028 QDF_STATUS
4029 wlan_mlme_get_bss_load_rssi_threshold_24ghz(struct wlan_objmgr_psoc *psoc,
4030 					    int32_t *val);
4031 /**
4032  * wlan_mlme_check_chan_param_has_dfs() - Get dfs flag based on
4033  * channel & channel parameters
4034  * @pdev: pdev object
4035  * @ch_params: channel parameters
4036  * @chan_freq: channel frequency in MHz
4037  *
4038  * Return: True for dfs
4039  */
4040 bool
4041 wlan_mlme_check_chan_param_has_dfs(struct wlan_objmgr_pdev *pdev,
4042 				   struct ch_params *ch_params,
4043 				   uint32_t chan_freq);
4044 
4045 /**
4046  * wlan_mlme_set_usr_disabled_roaming() - Set user config for roaming disable
4047  * @psoc: pointer to psoc object
4048  * @val: user config for roaming disable
4049  *
4050  * Return: QDF_STATUS
4051  */
4052 QDF_STATUS
4053 wlan_mlme_set_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool val);
4054 
4055 /**
4056  * wlan_mlme_get_usr_disabled_roaming() - Get user config for roaming disable
4057  * @psoc: pointer to psoc object
4058  * @val: user config for roaming disable
4059  *
4060  * Return: QDF_STATUS
4061  */
4062 QDF_STATUS
4063 wlan_mlme_get_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool *val);
4064 
4065 /**
4066  * mlme_get_opr_rate() - get operational rate
4067  * @vdev: vdev pointer
4068  * @dst: buffer to get rates set
4069  * @len: length of the buffer
4070  *
4071  * Return: length of the rates set
4072  */
4073 qdf_size_t mlme_get_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
4074 			     qdf_size_t len);
4075 
4076 /**
4077  * mlme_set_opr_rate() - set operational rate
4078  * @vdev: vdev pointer
4079  * @src: pointer to set operational rate
4080  * @len: length of operational rate
4081  *
4082  * Return: QDF_SUCCESS if success
4083  */
4084 QDF_STATUS mlme_set_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
4085 			     qdf_size_t len);
4086 
4087 /**
4088  * mlme_get_ext_opr_rate() - get extended operational rate
4089  * @vdev: vdev pointer
4090  * @dst: buffer to get rates set
4091  * @len: length of the buffer
4092  *
4093  * Return: length of the rates set
4094  */
4095 qdf_size_t mlme_get_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
4096 				 qdf_size_t len);
4097 
4098 /**
4099  * mlme_set_ext_opr_rate() - set extended operational rate
4100  * @vdev: vdev pointer
4101  * @src: pointer to set extended operational rate
4102  * @len: length of extended operational rate
4103  *
4104  * Return: QDF_SUCCESS if success
4105  */
4106 QDF_STATUS mlme_set_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
4107 				 qdf_size_t len);
4108 
4109 /**
4110  * mlme_clear_ext_opr_rate() - clear extended operational rate
4111  * @vdev: vdev pointer
4112  *
4113  * Return: QDF_SUCCESS if success
4114  */
4115 QDF_STATUS mlme_clear_ext_opr_rate(struct wlan_objmgr_vdev *vdev);
4116 
4117 /**
4118  * mlme_get_mcs_rate() - get MCS based rate
4119  * @vdev: vdev pointer
4120  * @dst: buffer to get rates set
4121  * @len: length of the buffer
4122  *
4123  * Return: length of the rates set
4124  */
4125 qdf_size_t mlme_get_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
4126 			     qdf_size_t len);
4127 
4128 /**
4129  * mlme_set_mcs_rate() - set MCS based rate
4130  * @vdev: vdev pointer
4131  * @src: pointer to set MCS based rate
4132  * @len: length of MCS based rate
4133  *
4134  * Return: QDF_SUCCESS if success
4135  */
4136 QDF_STATUS mlme_set_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
4137 			     qdf_size_t len);
4138 
4139 /**
4140  * mlme_clear_mcs_rate() - clear MCS based rate
4141  * @vdev: vdev pointer
4142  *
4143  * Return: QDF_SUCCESS if success
4144  */
4145 QDF_STATUS mlme_clear_mcs_rate(struct wlan_objmgr_vdev *vdev);
4146 
4147 /**
4148  * wlan_mlme_is_sta_mon_conc_supported() - Check if STA + Monitor mode
4149  * concurrency is supported
4150  * @psoc: pointer to psoc object
4151  *
4152  * Return: True if supported
4153  */
4154 bool wlan_mlme_is_sta_mon_conc_supported(struct wlan_objmgr_psoc *psoc);
4155 
4156 /**
4157  * wlan_mlme_get_phy_max_freq_range() - Get phy supported max channel
4158  * frequency range
4159  * @psoc: psoc for country information
4160  * @low_2ghz_chan: 2.4 GHz low channel frequency
4161  * @high_2ghz_chan: 2.4 GHz high channel frequency
4162  * @low_5ghz_chan: 5 GHz low channel frequency
4163  * @high_5ghz_chan: 5 GHz high channel frequency
4164  *
4165  * Return: QDF status
4166  */
4167 QDF_STATUS wlan_mlme_get_phy_max_freq_range(struct wlan_objmgr_psoc *psoc,
4168 					    uint32_t *low_2ghz_chan,
4169 					    uint32_t *high_2ghz_chan,
4170 					    uint32_t *low_5ghz_chan,
4171 					    uint32_t *high_5ghz_chan);
4172 
4173 /**
4174  * wlan_mlme_is_multipass_sap() -Get multipass sap support
4175  * @psoc: psoc pointer
4176  *
4177  * Return: True, if FW support multipass support.
4178  */
4179 bool wlan_mlme_is_multipass_sap(struct wlan_objmgr_psoc *psoc);
4180 
4181 #ifdef FEATURE_WDS
4182 /**
4183  * wlan_mlme_get_wds_mode() - Check wds mode supported
4184  * @psoc: pointer to psoc object
4185  *
4186  * Return: supported wds mode
4187  */
4188 enum wlan_wds_mode
4189 wlan_mlme_get_wds_mode(struct wlan_objmgr_psoc *psoc);
4190 
4191 /**
4192  * wlan_mlme_set_wds_mode() - Set wds mode
4193  * @psoc: pointer to psoc object
4194  * @mode: wds mode to set
4195  *
4196  * Return: void
4197  */
4198 void wlan_mlme_set_wds_mode(struct wlan_objmgr_psoc *psoc,
4199 			    enum wlan_wds_mode mode);
4200 #else
4201 static inline enum wlan_wds_mode
4202 wlan_mlme_get_wds_mode(struct wlan_objmgr_psoc *psoc)
4203 {
4204 	return WLAN_WDS_MODE_DISABLED;
4205 }
4206 
4207 static inline void wlan_mlme_set_wds_mode(struct wlan_objmgr_psoc *psoc,
4208 					  enum wlan_wds_mode mode)
4209 {
4210 }
4211 #endif
4212 
4213 #ifdef WLAN_SUPPORT_TWT
4214 /**
4215  * mlme_is_twt_enabled() - Get if TWT is enabled via ini.
4216  * @psoc: pointer to psoc object
4217  *
4218  * Return: True if TWT is enabled else false.
4219  */
4220 bool
4221 mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc);
4222 #else
4223 static inline bool
4224 mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc)
4225 {
4226 	return false;
4227 }
4228 #endif /* WLAN_SUPPORT_TWT */
4229 
4230 /**
4231  * wlan_mlme_skip_tpe() - Get preference to not consider TPE in 2G/5G case
4232  *
4233  * @psoc: pointer to psoc object
4234  *
4235  * Return: True if host should not consider TPE IE in TX power calculation when
4236  * operating in 2G/5G bands, false if host should always consider TPE IE values
4237  */
4238 bool wlan_mlme_skip_tpe(struct wlan_objmgr_psoc *psoc);
4239 
4240 /**
4241  * wlan_mlme_is_data_stall_recovery_fw_supported() - Check if data stall
4242  * recovery is supported by fw
4243  * @psoc: pointer to psoc object
4244  *
4245  * Return: True if supported
4246  */
4247 bool
4248 wlan_mlme_is_data_stall_recovery_fw_supported(struct wlan_objmgr_psoc *psoc);
4249 
4250 /**
4251  * mlme_cfg_get_orig_eht_caps() - Get the original EHT capability info
4252  * @psoc: pointer to psoc object
4253  * @eht_cap: Caps that needs to be filled.
4254  *
4255  * Return: QDF Status
4256  */
4257 QDF_STATUS mlme_cfg_get_orig_eht_caps(struct wlan_objmgr_psoc *psoc,
4258 				      tDot11fIEeht_cap *eht_cap);
4259 
4260 /**
4261  * mlme_cfg_get_eht_caps() - Get the EHT capability info
4262  * @psoc: pointer to psoc object
4263  * @eht_cap: Caps that needs to be filled.
4264  *
4265  * Return: QDF Status
4266  */
4267 QDF_STATUS mlme_cfg_get_eht_caps(struct wlan_objmgr_psoc *psoc,
4268 				 tDot11fIEeht_cap *eht_cap);
4269 
4270 /**
4271  * wlan_mlme_set_bt_profile_con() - Set bluetooth connection profile
4272  * @psoc: pointer to psoc object
4273  * @bt_profile_con: Bluetooth connection profile bit
4274  *
4275  * Return: None
4276  */
4277 void
4278 wlan_mlme_set_bt_profile_con(struct wlan_objmgr_psoc *psoc,
4279 			     bool bt_profile_con);
4280 
4281 /**
4282  * wlan_mlme_get_bt_profile_con() - Get Bluetooth connection profile
4283  * @psoc: pointer to psoc object
4284  *
4285  * Return: Bluetooth connection profile
4286  */
4287 bool
4288 wlan_mlme_get_bt_profile_con(struct wlan_objmgr_psoc *psoc);
4289 
4290 #ifdef WLAN_FEATURE_11BE_MLO
4291 /**
4292  * wlan_mlme_get_sta_mlo_conn_max_num() - get max number of links that sta mlo
4293  *                                        connection can support
4294  * @psoc: pointer to psoc object
4295  *
4296  * Return: max number of links that sta mlo connection can support
4297  */
4298 uint8_t wlan_mlme_get_sta_mlo_conn_max_num(struct wlan_objmgr_psoc *psoc);
4299 
4300 /**
4301  * wlan_mlme_set_sta_mlo_conn_max_num() - set max number of links that sta mlo
4302  *                                        connection can support
4303  * @psoc: pointer to psoc object
4304  * @value: value to set
4305  *
4306  * Return: QDF Status
4307  */
4308 QDF_STATUS wlan_mlme_set_sta_mlo_conn_max_num(struct wlan_objmgr_psoc *psoc,
4309 					      uint8_t value);
4310 
4311 /**
4312  * wlan_mlme_set_user_set_link_num() - set number of links that config by user
4313  * @psoc: pointer to psoc object
4314  * @value: value to set
4315  *
4316  * Return: QDF Status
4317  */
4318 QDF_STATUS wlan_mlme_set_user_set_link_num(struct wlan_objmgr_psoc *psoc,
4319 					   uint8_t value);
4320 
4321 /**
4322  * wlan_mlme_set_ml_link_control_mode() - set ml_link_control_mode
4323  * @psoc: pointer to psoc object
4324  * @vdev_id: vdev id
4325  * @value: value to set
4326  *
4327  * API get call when host receives vendor command
4328  * QCA_NL80211_VENDOR_SUBCMD_MLO_LINK_STATE to configure link control mode.
4329  *
4330  * Return: none
4331  */
4332 void wlan_mlme_set_ml_link_control_mode(struct wlan_objmgr_psoc *psoc,
4333 					uint8_t vdev_id, uint8_t value);
4334 
4335 /**
4336  * wlan_mlme_get_ml_link_control_mode() - get ml_link_control_mode
4337  * @psoc: pointer to psoc object
4338  * @vdev_id: vdev id
4339  *
4340  * Return: value of ml_link_control_mode in success
4341  */
4342 uint8_t wlan_mlme_get_ml_link_control_mode(struct wlan_objmgr_psoc *psoc,
4343 					   uint8_t vdev_id);
4344 
4345 /**
4346  * wlan_mlme_restore_user_set_link_num() - restore link num when SSR happens
4347  * @psoc: pointer to psoc object
4348  *
4349  * Return: void
4350  */
4351 void wlan_mlme_restore_user_set_link_num(struct wlan_objmgr_psoc *psoc);
4352 
4353 /**
4354  * wlan_mlme_clear_user_set_link_num() - clear user set link num
4355  * @psoc: pointer to psoc object
4356  *
4357  * Return: void
4358  */
4359 void wlan_mlme_clear_user_set_link_num(struct wlan_objmgr_psoc *psoc);
4360 
4361 /**
4362  * wlan_mlme_get_sta_mlo_conn_band_bmp() - get band bitmap that sta mlo
4363  *                                         connection can support
4364  * @psoc: pointer to psoc object
4365  *
4366  * Return: band bitmap that sta mlo connection can support
4367  */
4368 uint8_t wlan_mlme_get_sta_mlo_conn_band_bmp(struct wlan_objmgr_psoc *psoc);
4369 
4370 /**
4371  * wlan_mlme_set_sta_mlo_simultaneous_links() - set mlo simultaneous links
4372  * @psoc: pointer to psoc object
4373  * @value: value to set
4374  *
4375  * Return: QDF Status
4376  */
4377 QDF_STATUS
4378 wlan_mlme_set_sta_mlo_simultaneous_links(struct wlan_objmgr_psoc *psoc,
4379 					 uint8_t value);
4380 
4381 /**
4382  * wlan_mlme_get_sta_mlo_simultaneous_links() - get mlo simultaneous links
4383  * @psoc: pointer to psoc object
4384  *
4385  * Return: number of links
4386  */
4387 uint8_t wlan_mlme_get_sta_mlo_simultaneous_links(struct wlan_objmgr_psoc *psoc);
4388 
4389 /**
4390  * wlan_mlme_set_sta_mlo_conn_band_bmp() - set band bitmap that sta mlo
4391  *                                         connection can support
4392  * @psoc: pointer to psoc object
4393  * @value: value to set
4394  *
4395  * Return: QDF Status
4396  */
4397 QDF_STATUS wlan_mlme_set_sta_mlo_conn_band_bmp(struct wlan_objmgr_psoc *psoc,
4398 					       uint8_t value);
4399 
4400 /**
4401  * wlan_mlme_get_sta_same_link_mld_addr() - check if mld/link use same address
4402  * @psoc: pointer to psoc object
4403  *
4404  * Return: bool to check if the mld/link use same mac address
4405  */
4406 bool wlan_mlme_get_sta_same_link_mld_addr(struct wlan_objmgr_psoc *psoc);
4407 #else
4408 static inline
4409 void wlan_mlme_set_ml_link_control_mode(struct wlan_objmgr_psoc *psoc,
4410 					uint8_t vdev_id, uint8_t value)
4411 {
4412 }
4413 
4414 static inline
4415 uint8_t wlan_mlme_get_ml_link_control_mode(struct wlan_objmgr_psoc *psoc,
4416 					   uint8_t vdev_id)
4417 {
4418 	return 0;
4419 }
4420 
4421 static inline QDF_STATUS
4422 wlan_mlme_set_user_set_link_num(struct wlan_objmgr_psoc *psoc,
4423 				uint8_t value)
4424 {
4425 	return QDF_STATUS_SUCCESS;
4426 }
4427 
4428 static inline
4429 void wlan_mlme_restore_user_set_link_num(struct wlan_objmgr_psoc *psoc)
4430 {
4431 }
4432 
4433 static inline
4434 void wlan_mlme_clear_user_set_link_num(struct wlan_objmgr_psoc *psoc)
4435 {
4436 }
4437 
4438 static inline QDF_STATUS
4439 wlan_mlme_set_sta_mlo_conn_max_num(struct wlan_objmgr_psoc *psoc,
4440 				   uint8_t value)
4441 {
4442 	return QDF_STATUS_SUCCESS;
4443 }
4444 
4445 static inline uint8_t
4446 wlan_mlme_get_sta_mlo_conn_max_num(struct wlan_objmgr_psoc *psoc)
4447 {
4448 	return 0;
4449 }
4450 
4451 static inline QDF_STATUS
4452 wlan_mlme_set_sta_mlo_simultaneous_links(struct wlan_objmgr_psoc *psoc,
4453 					 uint8_t value)
4454 {
4455 	return QDF_STATUS_SUCCESS;
4456 }
4457 
4458 static inline QDF_STATUS
4459 wlan_mlme_set_sta_mlo_conn_band_bmp(struct wlan_objmgr_psoc *psoc,
4460 				    uint8_t value)
4461 {
4462 	return QDF_STATUS_SUCCESS;
4463 }
4464 #endif
4465 
4466 /**
4467  * wlan_mlme_set_ba_2k_jump_iot_ap() - Set a flag if ba 2k jump IOT AP is found
4468  * @vdev: vdev pointer
4469  * @found: Carries the value true if ba 2k jump IOT AP is found
4470  *
4471  * Return: QDF Status
4472  */
4473 QDF_STATUS
4474 wlan_mlme_set_ba_2k_jump_iot_ap(struct wlan_objmgr_vdev *vdev, bool found);
4475 
4476 /**
4477  * wlan_mlme_is_ba_2k_jump_iot_ap() - Check if ba 2k jump IOT AP is found
4478  * @vdev: vdev pointer
4479  *
4480  * Return: true if ba 2k jump IOT AP is found
4481  */
4482 bool
4483 wlan_mlme_is_ba_2k_jump_iot_ap(struct wlan_objmgr_vdev *vdev);
4484 
4485 /**
4486  * wlan_mlme_set_last_delba_sent_time() - Cache the last delba sent ts
4487  * @vdev: vdev pointer
4488  * @delba_sent_time: Last delba sent timestamp
4489  *
4490  * Return: QDF Status
4491  */
4492 QDF_STATUS
4493 wlan_mlme_set_last_delba_sent_time(struct wlan_objmgr_vdev *vdev,
4494 				   qdf_time_t delba_sent_time);
4495 
4496 /**
4497  * wlan_mlme_get_last_delba_sent_time() - Get the last delba sent ts
4498  * @vdev: vdev pointer
4499  *
4500  * Return: Last delba timestamp if cached, 0 otherwise
4501  */
4502 qdf_time_t
4503 wlan_mlme_get_last_delba_sent_time(struct wlan_objmgr_vdev *vdev);
4504 
4505 /**
4506  * mlme_set_user_ps() - Set the PS user config
4507  * @psoc: Pointer to psoc object
4508  * @vdev_id: vdev id
4509  * @ps_enable: User PS enable
4510  *
4511  * Return: QDF_STATUS
4512  */
4513 QDF_STATUS mlme_set_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
4514 			    bool ps_enable);
4515 
4516 /**
4517  * mlme_get_user_ps() - Set the user ps flag
4518  * @psoc: Pointer to psoc object
4519  * @vdev_id: vdev id
4520  *
4521  * Return: True if user_ps flag is set
4522  */
4523 bool mlme_get_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
4524 
4525 #ifdef WLAN_FEATURE_P2P_P2P_STA
4526 /**
4527  * wlan_mlme_get_p2p_p2p_conc_support() - Get p2p+p2p conc support
4528  * @psoc: pointer to psoc object
4529  *
4530  * Return: Success/failure
4531  */
4532 bool
4533 wlan_mlme_get_p2p_p2p_conc_support(struct wlan_objmgr_psoc *psoc);
4534 #else
4535 static inline bool
4536 wlan_mlme_get_p2p_p2p_conc_support(struct wlan_objmgr_psoc *psoc)
4537 {
4538 	return false;
4539 }
4540 #endif
4541 
4542 /**
4543  * mlme_get_vht_ch_width() - get vht channel width of fw capability
4544  *
4545  * Return: vht channel width
4546  */
4547 enum phy_ch_width mlme_get_vht_ch_width(void);
4548 
4549 /**
4550  * wlan_mlme_get_mgmt_hw_tx_retry_count() - Get mgmt frame hw tx retry count
4551  * @psoc: pointer to psoc object
4552  * @frm_type: frame type of the query
4553  *
4554  * Return: hw tx retry count
4555  */
4556 uint8_t
4557 wlan_mlme_get_mgmt_hw_tx_retry_count(struct wlan_objmgr_psoc *psoc,
4558 				     enum mlme_cfg_frame_type frm_type);
4559 
4560 /**
4561  * wlan_mlme_get_tx_retry_multiplier() - Get the tx retry multiplier percentage
4562  * @psoc: pointer to psoc object
4563  * @tx_retry_multiplier: pointer to hold user config value of
4564  * tx_retry_multiplier
4565  *
4566  * Return: QDF Status
4567  */
4568 QDF_STATUS
4569 wlan_mlme_get_tx_retry_multiplier(struct wlan_objmgr_psoc *psoc,
4570 				  uint32_t *tx_retry_multiplier);
4571 
4572 /**
4573  * wlan_mlme_get_channel_bonding_5ghz  - Get the channel bonding
4574  * val for 5ghz freq
4575  * @psoc: pointer to psoc object
4576  * @value: pointer to the value which will be filled for the caller
4577  *
4578  * Return: QDF Status
4579  */
4580 QDF_STATUS
4581 wlan_mlme_get_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc,
4582 				   uint32_t *value);
4583 
4584 /**
4585  * wlan_mlme_update_ratemask_params() - Update ratemask params
4586  *
4587  * @vdev: pointer to vdev object
4588  * @num_ratemask: number of rate masks
4589  * @rate_params: pointer to ratemask structure
4590  *
4591  * Return: QDF Status
4592  */
4593 QDF_STATUS
4594 wlan_mlme_update_ratemask_params(struct wlan_objmgr_vdev *vdev,
4595 				 uint8_t num_ratemask,
4596 				 struct config_ratemask_params *rate_params);
4597 
4598 /**
4599  * wlan_mlme_is_channel_valid() - validate channel frequency
4600  * @psoc: psoc object manager
4601  * @chan_freq: channel frequency
4602  *
4603  * This function validates channel frequency present in valid channel
4604  * list or not.
4605  *
4606  * Return: true or false
4607  */
4608 bool wlan_mlme_is_channel_valid(struct wlan_objmgr_psoc *psoc,
4609 				uint32_t chan_freq);
4610 #ifdef WLAN_FEATURE_MCC_QUOTA
4611 /**
4612  * wlan_mlme_set_user_mcc_quota() - set the user mcc quota in mlme
4613  * @psoc: pointer to psoc object
4614  * @quota: pointer to user set mcc quota object
4615  *
4616  * Return: QDF Status
4617  */
4618 QDF_STATUS wlan_mlme_set_user_mcc_quota(struct wlan_objmgr_psoc *psoc,
4619 					struct wlan_user_mcc_quota *quota);
4620 
4621 /**
4622  * wlan_mlme_get_user_mcc_quota() - Get the user mcc quota from mlme
4623  * @psoc: pointer to psoc object
4624  * @quota: pointer to user set mcc quota object
4625  *
4626  * Return: QDF Status
4627  */
4628 QDF_STATUS wlan_mlme_get_user_mcc_quota(struct wlan_objmgr_psoc *psoc,
4629 					struct wlan_user_mcc_quota *quota);
4630 
4631 /**
4632  * wlan_mlme_get_user_mcc_duty_cycle_percentage() - Get user mcc duty cycle
4633  * @psoc: pointer to psoc object
4634  *
4635  * Return: MCC duty cycle if MCC exists for the user MCC quota, else 0
4636  */
4637 uint32_t
4638 wlan_mlme_get_user_mcc_duty_cycle_percentage(struct wlan_objmgr_psoc *psoc);
4639 #else
4640 static inline QDF_STATUS
4641 wlan_mlme_set_user_mcc_quota(struct wlan_objmgr_psoc *psoc,
4642 			     struct wlan_user_mcc_quota *quota)
4643 {
4644 	return QDF_STATUS_SUCCESS;
4645 }
4646 
4647 static inline QDF_STATUS
4648 wlan_mlme_get_user_mcc_quota(struct wlan_objmgr_psoc *psoc,
4649 			     struct wlan_user_mcc_quota *quota)
4650 {
4651 	return QDF_STATUS_E_NOSUPPORT;
4652 }
4653 
4654 static inline uint32_t
4655 wlan_mlme_get_user_mcc_duty_cycle_percentage(struct wlan_objmgr_psoc *psoc)
4656 {
4657 	return 0;
4658 }
4659 #endif /* WLAN_FEATURE_MCC_QUOTA */
4660 
4661 /**
4662  * mlme_get_max_he_mcs_idx() -  get max mcs index from he cap information
4663  * @mcs_ch_width: channel width
4664  * @hecap_rxmcsnssmap: rx mcs map from he cap
4665  * @hecap_txmcsnssmap: tx mcs map from he cap
4666  *
4667  * Return: the maximum MCS supported
4668  */
4669 uint8_t mlme_get_max_he_mcs_idx(enum phy_ch_width mcs_ch_width,
4670 				u_int16_t *hecap_rxmcsnssmap,
4671 				u_int16_t *hecap_txmcsnssmap);
4672 
4673 /**
4674  * mlme_get_max_vht_mcs_idx() -  get max mcs index from vht cap information
4675  * @rx_vht_mcs_map: rx mcs map from vht cap
4676  * @tx_vht_mcs_map: tx mcs map from vht cap
4677  *
4678  * Return: the maximum MCS supported
4679  */
4680 uint8_t mlme_get_max_vht_mcs_idx(u_int16_t rx_vht_mcs_map,
4681 				 u_int16_t tx_vht_mcs_map);
4682 
4683 #ifdef WLAN_FEATURE_SON
4684 /**
4685  * mlme_save_vdev_max_mcs_idx() - Save max mcs index of vdev
4686  * @vdev: pointer to vdev object
4687  * @max_mcs_idx: max_mcs_idx to save
4688  *
4689  * Return: QDF Status
4690  */
4691 QDF_STATUS mlme_save_vdev_max_mcs_idx(struct wlan_objmgr_vdev *vdev,
4692 				      uint8_t max_mcs_idx);
4693 
4694 /**
4695  * mlme_get_vdev_max_mcs_idx() - Get max mcs index of vdev
4696  * @vdev: pointer to vdev object
4697  *
4698  * Return max mcs index of vdev
4699  */
4700 uint8_t mlme_get_vdev_max_mcs_idx(struct wlan_objmgr_vdev *vdev);
4701 #endif /* WLAN_FEATURE_SON */
4702 /**
4703  * wlan_mlme_set_safe_mode_enable() - set safe_mode_enable flag
4704  * based on value set by user space.
4705  *
4706  * @psoc: psoc context
4707  * @safe_mode_enable: safe mode enabled or not
4708  *
4709  * Return: none
4710  */
4711 void wlan_mlme_set_safe_mode_enable(struct wlan_objmgr_psoc *psoc,
4712 				    bool safe_mode_enable);
4713 
4714 /**
4715  * wlan_mlme_get_safe_mode_enable() - get safe_mode_enable set by user
4716  * space
4717  *
4718  * @psoc: psoc context
4719  * @safe_mode_enable: safe mode enabled or not
4720  *
4721  * Return: none
4722  */
4723 void wlan_mlme_get_safe_mode_enable(struct wlan_objmgr_psoc *psoc,
4724 				    bool *safe_mode_enable);
4725 
4726 /**
4727  * wlan_mlme_get_6g_ap_power_type() - get the power type of the
4728  * vdev operating on 6GHz.
4729  *
4730  * @vdev: vdev context
4731  *
4732  * Return: 6g_power_type
4733  */
4734 uint32_t wlan_mlme_get_6g_ap_power_type(struct wlan_objmgr_vdev *vdev);
4735 
4736 QDF_STATUS wlan_connect_hw_mode_change_resp(struct wlan_objmgr_pdev *pdev,
4737 					    uint8_t vdev_id,
4738 					    wlan_cm_id cm_id,
4739 					    QDF_STATUS status);
4740 
4741 /**
4742  * wlan_mlme_get_ch_width_from_phymode() - Convert phymode to ch_width
4743  * @phy_mode: Phy mode
4744  *
4745  * Return: enum phy_ch_width
4746  */
4747 enum phy_ch_width
4748 wlan_mlme_get_ch_width_from_phymode(enum wlan_phymode phy_mode);
4749 
4750 /**
4751  * wlan_mlme_get_peer_ch_width() - get ch_width of the given peer
4752  * @psoc: psoc context
4753  * @mac: peer mac
4754  *
4755  * Return: enum phy_ch_width
4756  */
4757 enum phy_ch_width
4758 wlan_mlme_get_peer_ch_width(struct wlan_objmgr_psoc *psoc, uint8_t *mac);
4759 
4760 #if defined(WLAN_FEATURE_SR)
4761 /**
4762  * wlan_mlme_get_sr_enable_modes() - get mode for which SR is enabled
4763  *
4764  * @psoc: psoc context
4765  * @val: pointer to hold the value of SR(Spatial Reuse) enable modes
4766  *
4767  * Return: void
4768  */
4769 void
4770 wlan_mlme_get_sr_enable_modes(struct wlan_objmgr_psoc *psoc, uint8_t *val);
4771 #endif
4772 
4773 /**
4774  * wlan_mlme_set_edca_pifs_param() - set edca/pifs param for ll sap
4775  * @ep: pointer to wlan_edca_pifs_param_ie
4776  * @type: edca_param_type
4777  *
4778  * Return: None
4779  */
4780 void
4781 wlan_mlme_set_edca_pifs_param(struct wlan_edca_pifs_param_ie *ep,
4782 			      enum host_edca_param_type type);
4783 /**
4784  * wlan_mlme_stats_get_periodic_display_time() - get display time
4785  * @psoc: pointer to psoc object
4786  * @periodic_display_time: buffer to hold value
4787  *
4788  * Return: QDF Status
4789  */
4790 QDF_STATUS
4791 wlan_mlme_stats_get_periodic_display_time(struct wlan_objmgr_psoc *psoc,
4792 					  uint32_t *periodic_display_time);
4793 
4794 /**
4795  * wlan_mlme_is_bcn_prot_disabled_for_sap() - Is beacon protection config
4796  * disabled for SAP interface
4797  *
4798  * @psoc: pointer to psoc object
4799  *
4800  * Return: is beacon protection disabled
4801  */
4802 bool
4803 wlan_mlme_is_bcn_prot_disabled_for_sap(struct wlan_objmgr_psoc *psoc);
4804 
4805 /**
4806  * wlan_mlme_get_src_addr_from_frame() - Get source address of the frame
4807  * @frame: frame ptr
4808  *
4809  * Extract source mac address of the frame
4810  *
4811  * Return: Ptr for extracted src mac address
4812  *
4813  */
4814 uint8_t *
4815 wlan_mlme_get_src_addr_from_frame(struct element_info *frame);
4816 
4817 /*
4818  * wlan_mlme_get_sap_ps_with_twt() - power save with twt config enabled/disabled
4819  * for SAP interface
4820  *
4821  * @psoc: pointer to psoc object
4822  *
4823  * Return: power save enabled/disabled
4824  */
4825 bool
4826 wlan_mlme_get_sap_ps_with_twt(struct wlan_objmgr_psoc *psoc);
4827 
4828 /**
4829  * wlan_mlme_get_max_bw() - Get max supported bandwidth
4830  *
4831  * Extract max supported bandwidth
4832  *
4833  * Return: enum phy_ch_width
4834  *
4835  */
4836 enum phy_ch_width wlan_mlme_get_max_bw(void);
4837 
4838 /**
4839  * wlan_mlme_get_sta_ch_width() - Get current operating
4840  * channel width for STA / P2P-CLI mode
4841  *
4842  * @vdev: STA / P2P-CLI vdev
4843  * @ch_width: Returned channel width
4844  *
4845  * Return: QDF_STATUS_SUCCESS for success otherwise QDF_STATUS_E_INVAL
4846  *
4847  */
4848 QDF_STATUS wlan_mlme_get_sta_ch_width(struct wlan_objmgr_vdev *vdev,
4849 				      enum phy_ch_width *ch_width);
4850 
4851 /**
4852  * wlan_mlme_set_ul_mu_config() - set ul mu config
4853  *
4854  * @psoc: pointer to psoc object
4855  * @vdev_id : vdev_id
4856  * @ulmu_disable : ulmu_disable value
4857  *
4858  * Return: QDF Status
4859  */
4860 QDF_STATUS
4861 wlan_mlme_set_ul_mu_config(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
4862 			   uint8_t ulmu_disable);
4863 
4864 /**
4865  * wlan_mlme_assemble_rate_code() - assemble rate code to be sent to FW
4866  *
4867  * @preamble: rate preamble
4868  * @nss: number of spatial streams
4869  * @rate: rate index
4870  *
4871  * Rate code assembling is different for targets which are 11ax capable.
4872  * Check for the target support and assemble the rate code accordingly.
4873  *
4874  * Return: assembled rate code
4875  */
4876 uint32_t
4877 wlan_mlme_assemble_rate_code(uint8_t preamble, uint8_t nss, uint8_t rate);
4878 
4879 /**
4880  * wlan_mlme_set_ap_oper_ch_width() - set SAP current operating ch_width
4881  *
4882  * @vdev: SAP VDEV object
4883  * @ch_width: ch_width to be cached
4884  *
4885  * Return: QDF Status
4886  */
4887 QDF_STATUS
4888 wlan_mlme_set_ap_oper_ch_width(struct wlan_objmgr_vdev *vdev,
4889 			       enum phy_ch_width ch_width);
4890 
4891 /**
4892  * wlan_mlme_get_ap_oper_ch_width() - get SAP current operating ch_width
4893  *
4894  * @vdev: SAP VDEV object
4895  *
4896  * Return: Current SAP operating ch_width
4897  */
4898 enum phy_ch_width
4899 wlan_mlme_get_ap_oper_ch_width(struct wlan_objmgr_vdev *vdev);
4900 
4901 /**
4902  * wlan_mlme_send_csa_event_status_ind() - send csa event status ind
4903  * @vdev: vdev obj
4904  * @csa_status: csa status
4905  *
4906  * Return: QDF_STATUS
4907  */
4908 QDF_STATUS
4909 wlan_mlme_send_csa_event_status_ind(struct wlan_objmgr_vdev *vdev,
4910 				    uint8_t csa_status);
4911 #endif /* _WLAN_MLME_API_H_ */
4912