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