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