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