1 /* 2 * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /* 21 * DOC: contains mlme structure definitions 22 */ 23 24 #ifndef _WLAN_MLME_STRUCT_H_ 25 #define _WLAN_MLME_STRUCT_H_ 26 27 #include <wlan_cmn.h> 28 #include <reg_services_public_struct.h> 29 #include <wmi_unified_param.h> 30 #include <sir_api.h> 31 #include "wlan_cm_roam_public_struct.h" 32 #include "wlan_mlme_twt_public_struct.h" 33 #include "cfg_mlme_generic.h" 34 #include "host_diag_core_event.h" 35 36 #define OWE_TRANSITION_OUI_TYPE "\x50\x6f\x9a\x1c" 37 #define OWE_TRANSITION_OUI_SIZE 4 38 39 /* 40 * EID_VENDOR| IE_LEN | OUI |OUI_TYPE| OWE transition BSSID|SSID_LEN| SSID | 41 * (1) | (1) | (3) | (1) | (6) | (1) |(SSID_LEN)| 42 */ 43 #define OWE_SSID_LEN_OFFSET 12 44 #define OWE_SSID_OFFSET 13 45 46 #define CFG_PMKID_MODES_OKC (0x1) 47 #define CFG_PMKID_MODES_PMKSA_CACHING (0x2) 48 49 #define CFG_VHT_BASIC_MCS_SET_STADEF 0xFFFE 50 51 #define CFG_VHT_RX_MCS_MAP_STAMIN 0 52 #define CFG_VHT_RX_MCS_MAP_STAMAX 0xFFFF 53 #define CFG_VHT_RX_MCS_MAP_STADEF 0xFFFE 54 55 #define CFG_VHT_TX_MCS_MAP_STAMIN 0 56 #define CFG_VHT_TX_MCS_MAP_STAMAX 0xFFFF 57 #define CFG_VHT_TX_MCS_MAP_STADEF 0xFFFE 58 59 #define STA_DOT11_MODE_INDX 0 60 #define P2P_DEV_DOT11_MODE_INDX 4 61 #define NAN_DISC_DOT11_MODE_INDX 8 62 #define OCB_DOT11_MODE_INDX 12 63 #define TDLS_DOT11_MODE_INDX 16 64 #define NDI_DOT11_MODE_INDX 20 65 66 /* Roam debugging related macro defines */ 67 #define MAX_ROAM_DEBUG_BUF_SIZE 250 68 #define MAX_ROAM_EVENTS_SUPPORTED 5 69 #define ROAM_FAILURE_BUF_SIZE 60 70 #define TIME_STRING_LEN 24 71 72 #define ROAM_CHANNEL_BUF_SIZE 300 73 #define LINE_STR "==============================================================" 74 /* 75 * MLME_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_FW_DEF + 1 is 76 * assumed to be the default fw supported BF antennas, if fw 77 * says it supports 8 antennas in rx ready event and if 78 * gTxBFCsnValue INI value is configured above 3, set 79 * the same to MLME_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED. 80 * Otherwise, fall back and set fw default value[3]. 81 */ 82 #define MLME_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_FW_DEF 3 83 84 #define CFG_STR_DATA_LEN 17 85 #define CFG_EDCA_DATA_LEN 17 86 #define CFG_MAX_TX_POWER_2_4_LEN 128 87 #define CFG_MAX_TX_POWER_5_LEN 256 88 #define CFG_POWER_USAGE_MAX_LEN 4 89 #define CFG_MAX_STR_LEN 256 90 #define MAX_VENDOR_IES_LEN 1532 91 92 #define CFG_MAX_PMK_LEN 64 93 94 #define CFG_VALID_CHANNEL_LIST_STRING_LEN (CFG_VALID_CHANNEL_LIST_LEN * 4) 95 96 #define DEFAULT_ROAM_TRIGGER_BITMAP 0xFFFFFFFF 97 98 /* 99 * detect AP off based FW reported last RSSI > roaming Low rssi 100 * and not less than 20db of host cached RSSI 101 */ 102 #define AP_OFF_RSSI_OFFSET 20 103 104 /* Default beacon interval of 100 ms */ 105 #define CUSTOM_CONC_GO_BI 100 106 107 #define HECAP_TXRX_MCS_NSS_IDX_80 (0) 108 #define HECAP_TXRX_MCS_NSS_IDX_160 (1) 109 #define HECAP_TXRX_MCS_NSS_IDX_80_80 (2) 110 #define INVALID_MCS_NSS_INDEX 0xff 111 112 enum diagwlan_status_eventsubtype { 113 DIAG_WLAN_STATUS_CONNECT = 0, 114 DIAG_WLAN_STATUS_DISCONNECT 115 }; 116 117 enum diagwlan_status_eventreason { 118 DIAG_REASON_UNSPECIFIED = 0, 119 DIAG_REASON_USER_REQUESTED, 120 DIAG_REASON_MIC_ERROR, 121 DIAG_REASON_DISASSOC, 122 DIAG_REASON_DEAUTH, 123 DIAG_REASON_HANDOFF, 124 DIAG_REASON_ROAM_SYNCH_IND, 125 DIAG_REASON_ROAM_SYNCH_CNF, 126 DIAG_REASON_ROAM_HO_FAIL, 127 }; 128 129 /** 130 * struct mlme_cfg_str - generic structure for all mlme CFG string items 131 * 132 * @max_len: maximum data length allowed 133 * @len: valid no. of elements of the data 134 * @data: uint8_t array to store values 135 */ 136 struct mlme_cfg_str { 137 qdf_size_t max_len; 138 qdf_size_t len; 139 uint8_t data[CFG_STR_DATA_LEN]; 140 }; 141 142 /** 143 * enum e_edca_type - to index edca params for edca profile 144 * EDCA profile AC unicast/bcast 145 * @edca_ani_acbe_local: ani BE unicast 146 * @edca_ani_acbk_local: ani BK unicast 147 * @edca_ani_acvi_local: ani VI unicast 148 * @edca_ani_acvo_local: ani VO unicast 149 * @edca_ani_acbe_bcast: ani BE bcast 150 * @edca_ani_acbk_bcast: ani BK bcast 151 * @edca_ani_acvi_bcast: ani VI bcast 152 * @edca_ani_acvo_bcast: ani VO bcast 153 * @edca_wme_acbe_local: wme BE unicast 154 * @edca_wme_acbk_local: wme BK unicast 155 * @edca_wme_acvi_local: wme VI unicast 156 * @edca_wme_acvo_local: wme VO unicast 157 * @edca_wme_acbe_bcast: wme BE bcast 158 * @edca_wme_acbk_bcast: wme BK bcast 159 * @edca_wme_acvi_bcast: wme VI bcast 160 * @edca_wme_acvo_bcast: wme VO bcast 161 * @edca_etsi_acbe_local: etsi BE unicast 162 * @edca_etsi_acbk_local: etsi BK unicast 163 * @edca_etsi_acvi_local: etsi VI unicast 164 * @edca_etsi_acvo_local: etsi VO unicast 165 * @edca_etsi_acbe_bcast: etsi BE bcast 166 * @edca_etsi_acbk_bcast: etsi BK bcast 167 * @edca_etsi_acvi_bcast: etsi VI bcast 168 * @edca_etsi_acvo_bcast: etsi VO bcast 169 */ 170 enum e_edca_type { 171 edca_ani_acbe_local, 172 edca_ani_acbk_local, 173 edca_ani_acvi_local, 174 edca_ani_acvo_local, 175 edca_ani_acbe_bcast, 176 edca_ani_acbk_bcast, 177 edca_ani_acvi_bcast, 178 edca_ani_acvo_bcast, 179 edca_wme_acbe_local, 180 edca_wme_acbk_local, 181 edca_wme_acvi_local, 182 edca_wme_acvo_local, 183 edca_wme_acbe_bcast, 184 edca_wme_acbk_bcast, 185 edca_wme_acvi_bcast, 186 edca_wme_acvo_bcast, 187 edca_etsi_acbe_local, 188 edca_etsi_acbk_local, 189 edca_etsi_acvi_local, 190 edca_etsi_acvo_local, 191 edca_etsi_acbe_bcast, 192 edca_etsi_acbk_bcast, 193 edca_etsi_acvi_bcast, 194 edca_etsi_acvo_bcast 195 }; 196 197 #define CFG_EDCA_PROFILE_ACM_IDX 0 198 #define CFG_EDCA_PROFILE_AIFSN_IDX 1 199 #define CFG_EDCA_PROFILE_CWMINA_IDX 2 200 #define CFG_EDCA_PROFILE_CWMAXA_IDX 4 201 #define CFG_EDCA_PROFILE_TXOPA_IDX 6 202 #define CFG_EDCA_PROFILE_CWMINB_IDX 7 203 #define CFG_EDCA_PROFILE_CWMAXB_IDX 9 204 #define CFG_EDCA_PROFILE_TXOPB_IDX 11 205 #define CFG_EDCA_PROFILE_CWMING_IDX 12 206 #define CFG_EDCA_PROFILE_CWMAXG_IDX 14 207 #define CFG_EDCA_PROFILE_TXOPG_IDX 16 208 209 /** 210 * struct mlme_edca_ac_vo - cwmin, cwmax and aifs value for edca_ac_vo 211 * 212 * @vo_cwmin: cwmin value for voice 213 * @vo_cwmax: cwmax value for voice 214 * @vo_aifs: aifs value for voice 215 */ 216 struct mlme_edca_ac_vo { 217 uint32_t vo_cwmin; 218 uint32_t vo_cwmax; 219 uint32_t vo_aifs; 220 }; 221 222 /** 223 * enum mlme_dot11_mode - Dot11 mode of the vdev 224 * @MLME_DOT11_MODE_ALL: vdev supports all dot11 modes 225 * @MLME_DOT11_MODE_ABG: vdev supports just 11A, 11B and 11G modes 226 * @MLME_DOT11_MODE_11A: vdev just supports 11A mode 227 * @MLME_DOT11_MODE_11B: vdev supports 11B mode, and modes above it 228 * @MLME_DOT11_MODE_11G: vdev supports 11G mode, and modes above it 229 * @MLME_DOT11_MODE_11N: vdev supports 11N mode, and modes above it 230 * @MLME_DOT11_MODE_11G_ONLY: vdev just supports 11G mode 231 * @MLME_DOT11_MODE_11N_ONLY: vdev just supports 11N mode 232 * @MLME_DOT11_MODE_11AC: vdev supports 11AC mode, and modes above it 233 * @MLME_DOT11_MODE_11AC_ONLY: vdev just supports 11AC mode 234 * @MLME_DOT11_MODE_11AX: vdev supports 11AX mode, and modes above it 235 * @MLME_DOT11_MODE_11AX_ONLY: vdev just supports 11AX mode 236 * @MLME_DOT11_MODE_11BE: vdev supports 11BE mode, and modes above it 237 * @MLME_DOT11_MODE_11BE_ONLY: vdev just supports 11BE mode 238 */ 239 enum mlme_dot11_mode { 240 MLME_DOT11_MODE_ALL, 241 /* Initial dot11 modes should come first */ 242 MLME_DOT11_MODE_ABG, 243 MLME_DOT11_MODE_11A, 244 MLME_DOT11_MODE_11B, 245 MLME_DOT11_MODE_11G, 246 MLME_DOT11_MODE_11N, 247 MLME_DOT11_MODE_11G_ONLY, 248 MLME_DOT11_MODE_11N_ONLY, 249 MLME_DOT11_MODE_11AC, 250 MLME_DOT11_MODE_11AC_ONLY, 251 MLME_DOT11_MODE_11AX, 252 MLME_DOT11_MODE_11AX_ONLY, 253 MLME_DOT11_MODE_11BE, 254 MLME_DOT11_MODE_11BE_ONLY, 255 }; 256 257 /** 258 * struct wlan_mlme_dot11_mode - dot11 mode 259 * 260 * @dot11_mode: dot11 mode supported 261 * @vdev_type_dot11_mode: dot11 mode supported by different vdev types 262 */ 263 struct wlan_mlme_dot11_mode { 264 enum mlme_dot11_mode dot11_mode; 265 uint32_t vdev_type_dot11_mode; 266 }; 267 268 /** 269 * struct mlme_edca_ac_vi - cwmin, cwmax and aifs value for edca_ac_vi 270 * 271 * @vi_cwmin: cwmin value for video 272 * @vi_cwmax: cwmax value for video 273 * @vi_aifs: aifs value for video 274 */ 275 struct mlme_edca_ac_vi { 276 uint32_t vi_cwmin; 277 uint32_t vi_cwmax; 278 uint32_t vi_aifs; 279 }; 280 281 /** 282 * struct mlme_edca_ac_bk - cwmin, cwmax and aifs value for edca_ac_bk 283 * 284 * @bk_cwmin: cwmin value for background 285 * @bk_cwmax: cwmax value for background 286 * @bk_aifs: aifs value for background 287 */ 288 struct mlme_edca_ac_bk { 289 uint32_t bk_cwmin; 290 uint32_t bk_cwmax; 291 uint32_t bk_aifs; 292 }; 293 294 /** 295 * struct mlme_edca_ac_be - cwmin, cwmax and aifs value for edca_ac_be 296 * 297 * @be_cwmin: cwmin value for best effort 298 * @be_cwmax: cwmax value for best effort 299 * @be_aifs: aifs value for best effort 300 */ 301 struct mlme_edca_ac_be { 302 uint32_t be_cwmin; 303 uint32_t be_cwmax; 304 uint32_t be_aifs; 305 }; 306 307 /** 308 * enum mlme_ts_info_ack_policy - TS Info Ack Policy 309 * @TS_INFO_ACK_POLICY_NORMAL_ACK:normal ack 310 * @TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK: HT immediate block ack 311 */ 312 enum mlme_ts_info_ack_policy { 313 TS_INFO_ACK_POLICY_NORMAL_ACK = 0, 314 TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK = 1, 315 }; 316 317 /** 318 * struct wlan_mlme_edca_params - EDCA pramaters related config items 319 * 320 * @ani_acbk_l: EDCA parameters for ANI local access category background 321 * @ani_acbe_l: EDCA parameters for ANI local access category best effort 322 * @ani_acvi_l: EDCA parameters for ANI local access category video 323 * @ani_acvo_l: EDCA parameters for ANI local access category voice 324 * @ani_acbk_b: EDCA parameters for ANI bcast access category background 325 * @ani_acbe_b: EDCA parameters for ANI bcast access category best effort 326 * @ani_acvi_b: EDCA parameters for ANI bcast access category video 327 * @ani_acvo_b: EDCA parameters for ANI bcast access category voice 328 * @wme_acbk_l: EDCA parameters for WME local access category background 329 * @wme_acbe_l: EDCA parameters for WME local access category best effort 330 * @wme_acvi_l: EDCA parameters for WME local access category video 331 * @wme_acvo_l: EDCA parameters for WME local access category voice 332 * @wme_acbk_b: EDCA parameters for WME bcast access category background 333 * @wme_acbe_b: EDCA parameters for WME bcast access category best effort 334 * @wme_acvi_b: EDCA parameters for WME bcast access category video 335 * @wme_acvo_b: EDCA parameters for WME bcast access category voice 336 * @etsi_acbk_l: EDCA parameters for ETSI local access category background 337 * @etsi_acbe_l: EDCA parameters for ETSI local access category best effort 338 * @etsi_acvi_l: EDCA parameters for ETSI local access category video 339 * @etsi_acvo_l: EDCA parameters for ETSI local access category voice 340 * @etsi_acbk_b: EDCA parameters for ETSI bcast access category background 341 * @etsi_acbe_b: EDCA parameters for ETSI bcast access category best effort 342 * @etsi_acvi_b: EDCA parameters for ETSI bcast access category video 343 * @etsi_acvo_b: EDCA parameters for ETSI bcast access category voice 344 * @enable_edca_params: Enable edca parameter 345 * @enable_wmm_txop: Enable WMM TxOp 346 * @edca_ac_vo: value for edca_ac_vo 347 * @edca_ac_vi: value for edca_ac_vi 348 * @edca_ac_bk: value for edca_ac_bk 349 * @edca_ac_be: value for edca_ac_be 350 * @edca_param_type: Edca param type 351 */ 352 struct wlan_mlme_edca_params { 353 struct mlme_cfg_str ani_acbk_l; 354 struct mlme_cfg_str ani_acbe_l; 355 struct mlme_cfg_str ani_acvi_l; 356 struct mlme_cfg_str ani_acvo_l; 357 struct mlme_cfg_str ani_acbk_b; 358 struct mlme_cfg_str ani_acbe_b; 359 struct mlme_cfg_str ani_acvi_b; 360 struct mlme_cfg_str ani_acvo_b; 361 362 struct mlme_cfg_str wme_acbk_l; 363 struct mlme_cfg_str wme_acbe_l; 364 struct mlme_cfg_str wme_acvi_l; 365 struct mlme_cfg_str wme_acvo_l; 366 struct mlme_cfg_str wme_acbk_b; 367 struct mlme_cfg_str wme_acbe_b; 368 struct mlme_cfg_str wme_acvi_b; 369 struct mlme_cfg_str wme_acvo_b; 370 371 struct mlme_cfg_str etsi_acbk_l; 372 struct mlme_cfg_str etsi_acbe_l; 373 struct mlme_cfg_str etsi_acvi_l; 374 struct mlme_cfg_str etsi_acvo_l; 375 struct mlme_cfg_str etsi_acbk_b; 376 struct mlme_cfg_str etsi_acbe_b; 377 struct mlme_cfg_str etsi_acvi_b; 378 struct mlme_cfg_str etsi_acvo_b; 379 380 bool enable_edca_params; 381 bool enable_wmm_txop; 382 struct mlme_edca_ac_vo edca_ac_vo; 383 struct mlme_edca_ac_vi edca_ac_vi; 384 struct mlme_edca_ac_bk edca_ac_bk; 385 struct mlme_edca_ac_be edca_ac_be; 386 387 enum host_edca_param_type edca_param_type; 388 }; 389 390 /* To configure EDCA/PIFS param for LL SAP */ 391 #define CFG_EDCA_PARAM_ACM 0 392 #define CFG_EDCA_PARAM_AIFSN 2 393 #define CFG_EDCA_PARAM_ACI 3 394 #define CFG_EDCA_PARAM_CWMIN 2 395 #define CFG_EDCA_PARAM_CWMAX 3 396 #define CFG_EDCA_PARAM_TXOP 47 397 #define CFG_PIFS_PARAM_SAP_OFFSET 0 398 #define CFG_PIFS_PARAM_LEB_OFFSET 1 399 #define CFG_PIFS_PARAM_REB_OFFSET 2 400 401 #define WLAN_CFG_MFR_NAME_LEN (63) 402 #define WLAN_CFG_MODEL_NUMBER_LEN (31) 403 #define WLAN_CFG_MODEL_NAME_LEN (31) 404 #define WLAN_CFG_MFR_PRODUCT_NAME_LEN (31) 405 #define WLAN_CFG_MFR_PRODUCT_VERSION_LEN (31) 406 407 #define MLME_NUM_WLM_LATENCY_LEVEL 4 408 #define MLME_RMENABLEDCAP_MAX_LEN 5 409 410 #ifndef ANI_LITTLE_BIT_ENDIAN 411 /** 412 * struct mlme_ht_capabilities_info - HT Capabilities Info 413 * @l_sig_tx_op_protection: L-SIG TXOP Protection Mechanism support 414 * @stbc_control_frame: STBC Control frame support 415 * @psmp: PSMP Support 416 * @dsss_cck_mode_40_mhz: To indicate use of DSSS/CCK in 40Mhz 417 * @maximal_amsdu_size: Maximum AMSDU Size - 0:3839 octes, 1:7935 octets 418 * @delayed_ba: Support of Delayed Block Ack 419 * @rx_stbc: Rx STBC Support - 0:Not Supported, 1: 1SS, 2: 1,2SS, 3: 1,2,3SS 420 * @tx_stbc: Tx STBC Support 421 * @short_gi_40_mhz: Short GI Support for HT40 422 * @short_gi_20_mhz: Short GI support for HT20 423 * @green_field: Support for HT Greenfield PPDUs 424 * @mimo_power_save: SM Power Save Mode - 0:Static, 1:Dynamic, 3:Disabled, 2:Res 425 * @supported_channel_width_set: Supported Chan Width - 0:20Mhz, 1:20Mhz & 40Mhz 426 * @adv_coding_cap: Rx LDPC support 427 */ 428 struct mlme_ht_capabilities_info { 429 uint16_t l_sig_tx_op_protection:1; 430 uint16_t stbc_control_frame:1; 431 uint16_t psmp:1; 432 uint16_t dsss_cck_mode_40_mhz:1; 433 uint16_t maximal_amsdu_size:1; 434 uint16_t delayed_ba:1; 435 uint16_t rx_stbc:2; 436 uint16_t tx_stbc:1; 437 uint16_t short_gi_40_mhz:1; 438 uint16_t short_gi_20_mhz:1; 439 uint16_t green_field:1; 440 uint16_t mimo_power_save:2; 441 uint16_t supported_channel_width_set:1; 442 uint16_t adv_coding_cap:1; 443 } qdf_packed; 444 #else 445 struct mlme_ht_capabilities_info { 446 uint16_t adv_coding_cap:1; 447 uint16_t supported_channel_width_set:1; 448 uint16_t mimo_power_save:2; 449 uint16_t green_field:1; 450 uint16_t short_gi_20_mhz:1; 451 uint16_t short_gi_40_mhz:1; 452 uint16_t tx_stbc:1; 453 uint16_t rx_stbc:2; 454 uint16_t delayed_ba:1; 455 uint16_t maximal_amsdu_size:1; 456 uint16_t dsss_cck_mode_40_mhz:1; 457 uint16_t psmp:1; 458 uint16_t stbc_control_frame:1; 459 uint16_t l_sig_tx_op_protection:1; 460 } qdf_packed; 461 #endif 462 463 /** 464 * struct wlan_ht_config - HT capabilities 465 * @ht_caps: ht caps in bitwise 466 * @caps: uint32 caps 467 */ 468 struct wlan_ht_config { 469 union { 470 struct mlme_ht_capabilities_info ht_caps; 471 uint32_t caps; 472 }; 473 }; 474 475 #ifndef ANI_LITTLE_BIT_ENDIAN 476 /** 477 * struct mlme_ht_param_info - HT AMPDU Parameters Info 478 * @reserved: reserved bits 479 * @mpdu_density: MPDU Density 480 * @max_rx_ampdu_factor: Max Rx AMPDU Factor 481 */ 482 struct mlme_ht_param_info { 483 uint8_t reserved:3; 484 uint8_t mpdu_density:3; 485 uint8_t max_rx_ampdu_factor:2; 486 } qdf_packed; 487 #else 488 struct mlme_ht_param_info { 489 uint8_t max_rx_ampdu_factor:2; 490 uint8_t mpdu_density:3; 491 uint8_t reserved:3; 492 } qdf_packed; 493 #endif 494 495 #ifndef ANI_LITTLE_BIT_ENDIAN 496 /** 497 * struct mlme_ht_ext_cap_info - Extended HT Capabilities Info 498 * @reserved_2: Reserved Bits 499 * @mcs_feedback: MCS Feedback Capability 500 * @reserved_1: Reserved Bits 501 * @transition_time: Time needed for transition between 20Mhz and 40 Mhz 502 * @pco: PCO (Phased Coexistence Operation) Support 503 */ 504 struct mlme_ht_ext_cap_info { 505 uint16_t reserved_2:6; 506 uint16_t mcs_feedback:2; 507 uint16_t reserved_1:5; 508 uint16_t transition_time:2; 509 uint16_t pco:1; 510 } qdf_packed; 511 #else 512 struct mlme_ht_ext_cap_info { 513 uint16_t pco:1; 514 uint16_t transition_time:2; 515 uint16_t reserved1:5; 516 uint16_t mcs_feedback:2; 517 uint16_t reserved2:6; 518 } qdf_packed; 519 #endif 520 521 #ifndef ANI_LITTLE_BIT_ENDIAN 522 /** 523 * struct mlme_ht_info_field_1 - Additional HT IE Field1 524 * @service_interval_granularity: Shortest Service Interval 525 * @controlled_access_only: Access Control for assoc requests 526 * @rifs_mode: Reduced Interframe Spacing mode 527 * @recommended_tx_width_set: Recommended Tx Channel Width 528 * @secondary_channel_offset: Secondary Channel Offset 529 */ 530 struct mlme_ht_info_field_1 { 531 uint8_t service_interval_granularity:3; 532 uint8_t controlled_access_only:1; 533 uint8_t rifs_mode:1; 534 uint8_t recommended_tx_width_set:1; 535 uint8_t secondary_channel_offset:2; 536 } qdf_packed; 537 #else 538 struct mlme_ht_info_field_1 { 539 uint8_t secondary_channel_offset:2; 540 uint8_t recommended_tx_width_set:1; 541 uint8_t rifs_mode:1; 542 uint8_t controlled_access_only:1; 543 uint8_t service_interval_granularity:3; 544 } qdf_packed; 545 #endif 546 547 /* struct mlme_ht_info_field_2 - Additional HT IE Field2 548 * @reserved: reserved bits 549 * @obss_non_ht_sta_present: Protection for non-HT STAs by Overlapping BSS 550 * @transmit_burst_limit: Transmit Burst Limit 551 * @non_gf_devices_present: Non Greenfield devices present 552 * @op_mode: Operation Mode 553 */ 554 #ifndef ANI_LITTLE_BIT_ENDIAN 555 struct mlme_ht_info_field_2 { 556 uint16_t reserved:11; 557 uint16_t obss_non_ht_sta_present:1; 558 uint16_t transmit_burst_limit:1; 559 uint16_t non_gf_devices_present:1; 560 uint16_t op_mode:2; 561 } qdf_packed; 562 #else 563 struct mlme_ht_info_field_2 { 564 uint16_t op_mode:2; 565 uint16_t non_gf_devices_present:1; 566 uint16_t transmit_burst_limit:1; 567 uint16_t obss_non_ht_sta_present:1; 568 uint16_t reserved:11; 569 } qdf_packed; 570 #endif 571 572 #ifdef WLAN_FEATURE_FILS_SK 573 574 /** 575 * struct wlan_fils_connection_info - Fils connection parameters 576 * @is_fils_connection: flag to indicate if the connection is done using 577 * authentication algorithm as 4 578 * @keyname_nai: key name network access identifier 579 * @key_nai_length: key name network access identifier length 580 * @erp_sequence_number: FILS ERP sequence number 581 * @r_rk: re-authentication Root Key length 582 * @r_rk_length: reauthentication root keys length 583 * @rik: Re-authentication integrity key 584 * @rik_length: Re-Authentication integrity key length 585 * @realm: Realm name 586 * @realm_len: Realm length 587 * @akm_type: FILS connection akm 588 * @auth_type: FILS Authentication Algorithm 589 * @pmk: Pairwise master key 590 * @pmk_len: Pairwise master key length 591 * @pmkid: Pairwise master key ID 592 * @fils_ft: FILS FT key 593 * @fils_ft_len: Length of FILS FT 594 */ 595 struct wlan_fils_connection_info { 596 bool is_fils_connection; 597 uint8_t keyname_nai[FILS_MAX_KEYNAME_NAI_LENGTH]; 598 uint32_t key_nai_length; 599 uint32_t erp_sequence_number; 600 uint8_t r_rk[WLAN_FILS_MAX_RRK_LENGTH]; 601 uint32_t r_rk_length; 602 uint8_t rik[WLAN_FILS_MAX_RIK_LENGTH]; 603 uint32_t rik_length; 604 uint8_t realm[WLAN_FILS_MAX_REALM_LEN]; 605 uint32_t realm_len; 606 uint8_t akm_type; 607 uint8_t auth_type; 608 uint8_t pmk[MAX_PMK_LEN]; 609 uint8_t pmk_len; 610 uint8_t pmkid[PMKID_LEN]; 611 uint8_t fils_ft[WLAN_FILS_FT_MAX_LEN]; 612 uint8_t fils_ft_len; 613 }; 614 #endif 615 616 #ifndef ANI_LITTLE_BIT_ENDIAN 617 /** 618 * struct mlme_ht_info_field_3 - Additional HT IE Field3 619 * @reserved: reserved bits 620 * @pco_phase: PCO Phase 621 * @pco_active: PCO state 622 * @lsig_txop_protection_full_support: L-Sig TXOP Protection Full Support 623 * @secondary_beacon: Beacon ID 624 * @dual_cts_protection: Dual CTS protection Required 625 * @basic_stbc_mcs: Basic STBC MCS 626 */ 627 struct mlme_ht_info_field_3 { 628 uint16_t reserved:4; 629 uint16_t pco_phase:1; 630 uint16_t pco_active:1; 631 uint16_t lsig_txop_protection_full_support:1; 632 uint16_t secondary_beacon:1; 633 uint16_t dual_cts_protection:1; 634 uint16_t basic_stbc_mcs:7; 635 } qdf_packed; 636 #else 637 struct mlme_ht_info_field_3 { 638 uint16_t basic_stbc_mcs:7; 639 uint16_t dual_cts_protection:1; 640 uint16_t secondary_beacon:1; 641 uint16_t lsig_txop_protection_full_support:1; 642 uint16_t pco_active:1; 643 uint16_t pco_phase:1; 644 uint16_t reserved:4; 645 } qdf_packed; 646 #endif 647 648 /** 649 * struct wlan_mlme_ht_caps - HT Capabilities related config items 650 * @ht_cap_info: HT capabilities Info Structure 651 * @ampdu_params: AMPDU parameters 652 * @ext_cap_info: HT EXT capabilities info 653 * @info_field_1: HT Information Subset 1 654 * @info_field_2: HT Information Subset 2 655 * @info_field_3: HT Information Subset 3 656 * @short_preamble: Short Preamble support 657 * @enable_ampdu_ps: Enable AMPDU Power Save 658 * @enable_smps: Enabled SM Power Save 659 * @smps : SM Power Save mode 660 * @max_num_amsdu: Max number of AMSDU 661 * @tx_ldpc_enable: Enable Tx LDPC 662 * @short_slot_time_enabled: Enabled/disable short slot time 663 */ 664 struct wlan_mlme_ht_caps { 665 struct mlme_ht_capabilities_info ht_cap_info; 666 struct mlme_ht_param_info ampdu_params; 667 struct mlme_ht_ext_cap_info ext_cap_info; 668 struct mlme_ht_info_field_1 info_field_1; 669 struct mlme_ht_info_field_2 info_field_2; 670 struct mlme_ht_info_field_3 info_field_3; 671 bool short_preamble; 672 bool enable_ampdu_ps; 673 bool enable_smps; 674 uint8_t smps; 675 uint8_t max_num_amsdu; 676 uint8_t tx_ldpc_enable; 677 bool short_slot_time_enabled; 678 }; 679 680 #define MLME_CFG_WPS_UUID_MAX_LEN 16 681 /** 682 * struct wlan_mlme_wps_params - All wps based related cfg items 683 * 684 * @enable_wps: to enable wps 685 * @wps_state: current wps state 686 * @wps_version: wps version 687 * @wps_cfg_method: wps config method 688 * @wps_primary_device_category: wps primary device category 689 * @wps_primary_device_oui: primary device OUI 690 * @wps_device_sub_category: device sub category 691 * @wps_device_password_id: password id of device 692 * @wps_uuid: wps uuid to be sent in probe 693 */ 694 struct wlan_mlme_wps_params { 695 uint8_t enable_wps; 696 uint8_t wps_state; 697 uint8_t wps_version; 698 uint32_t wps_cfg_method; 699 uint32_t wps_primary_device_category; 700 uint32_t wps_primary_device_oui; 701 uint16_t wps_device_sub_category; 702 uint32_t wps_device_password_id; 703 struct mlme_cfg_str wps_uuid; 704 }; 705 706 #define MLME_CFG_LISTEN_INTERVAL 1 707 #define MLME_CFG_BEACON_INTERVAL_DEF 100 708 #define MLME_CFG_TX_MGMT_RATE_DEF 0xFF 709 #define MLME_CFG_TX_MGMT_2G_RATE_DEF 0xFF 710 #define MLME_CFG_TX_MGMT_5G_RATE_DEF 0xFF 711 712 /** 713 * struct wlan_mlme_cfg_sap - SAP related config items 714 * @cfg_ssid: SSID to be configured 715 * @beacon_interval: beacon interval 716 * @dtim_interval: dtim interval 717 * @listen_interval: listen interval 718 * @sap_11g_policy: Check if 11g support is enabled 719 * @assoc_sta_limit: Limit on number of STA associated to SAP 720 * @enable_lte_coex: Flag for LTE coexistence 721 * @rate_tx_mgmt: mgmt frame tx rate 722 * @rate_tx_mgmt_2g: mgmt frame tx rate for 2G band 723 * @rate_tx_mgmt_5g: mgmt frame tx rate for 5G band 724 * @tele_bcn_wakeup_en: beacon wakeup enable/disable 725 * @tele_bcn_max_li: max listen interval 726 * @sap_get_peer_info: get peer info 727 * @sap_allow_all_chan_param_name: allow all channels 728 * @sap_max_no_peers: Maximum number of peers 729 * @sap_max_offload_peers: Maximum number of peer offloads 730 * @sap_max_offload_reorder_buffs: Maximum offload reorder buffs 731 * @sap_ch_switch_beacon_cnt: Number of beacons to be sent out during CSA 732 * @sap_internal_restart: flag to check if sap restart is in progress 733 * @sap_ch_switch_mode: Channel switch test mode enable/disable 734 * @chan_switch_hostapd_rate_enabled_name: enable/disable skip hostapd rate 735 * @reduced_beacon_interval: reduced beacon interval value 736 * @max_li_modulated_dtim_time: Max modulated DTIM time. 737 * @country_code_priority: Country code priority. 738 * @sap_pref_chan_location: SAP Preferred channel location. 739 * @sap_force_11n_for_11ac: 740 * @go_force_11n_for_11ac: 741 * @ap_random_bssid_enable: 742 * @sap_mcc_chnl_avoid: SAP MCC channel avoidance flag 743 * @sap_11ac_override: Overrirde SAP bandwidth to 11ac 744 * @go_11ac_override: Override GO bandwidth to 11ac 745 * @sap_sae_enabled: enable sae in sap mode 746 * @is_sap_bcast_deauth_enabled: enable bcast deauth for sap 747 * @is_6g_sap_fd_enabled: enable fils discovery on sap 748 * @disable_bcn_prot: disable beacon protection for sap 749 * @sap_ps_with_twt_enable: SAP power save with TWT 750 */ 751 struct wlan_mlme_cfg_sap { 752 uint16_t beacon_interval; 753 uint16_t dtim_interval; 754 uint16_t listen_interval; 755 bool sap_11g_policy; 756 uint8_t assoc_sta_limit; 757 bool enable_lte_coex; 758 uint8_t rate_tx_mgmt; 759 uint8_t rate_tx_mgmt_2g; 760 uint8_t rate_tx_mgmt_5g; 761 bool tele_bcn_wakeup_en; 762 uint8_t tele_bcn_max_li; 763 bool sap_get_peer_info; 764 bool sap_allow_all_chan_param_name; 765 uint8_t sap_max_no_peers; 766 uint8_t sap_max_offload_peers; 767 uint8_t sap_max_offload_reorder_buffs; 768 uint8_t sap_ch_switch_beacon_cnt; 769 bool sap_internal_restart; 770 bool sap_ch_switch_mode; 771 bool chan_switch_hostapd_rate_enabled_name; 772 uint8_t reduced_beacon_interval; 773 uint8_t max_li_modulated_dtim_time; 774 bool country_code_priority; 775 uint8_t sap_pref_chan_location; 776 bool sap_force_11n_for_11ac; 777 bool go_force_11n_for_11ac; 778 bool ap_random_bssid_enable; 779 uint8_t sap_mcc_chnl_avoid; 780 bool sap_11ac_override; 781 bool go_11ac_override; 782 bool sap_sae_enabled; 783 bool is_sap_bcast_deauth_enabled; 784 bool is_6g_sap_fd_enabled; 785 bool disable_bcn_prot; 786 bool sap_ps_with_twt_enable; 787 }; 788 789 /** 790 * struct wlan_mlme_dfs_cfg - DFS Capabilities related config items 791 * @dfs_master_capable: Is DFS master mode support enabled 792 * @dfs_disable_channel_switch: disable channel switch on radar detection 793 * @dfs_ignore_cac: Disable cac 794 * @dfs_filter_offload: dfs filter offloaad 795 * @dfs_beacon_tx_enhanced: enhance dfs beacon tx 796 * @dfs_prefer_non_dfs: perefer non dfs channel after radar 797 * @dfs_disable_japan_w53: Disable W53 channels 798 * @sap_tx_leakage_threshold: sap tx leakage threshold 799 * @dfs_pri_multiplier: dfs_pri_multiplier for handle missing pulses 800 */ 801 struct wlan_mlme_dfs_cfg { 802 bool dfs_master_capable; 803 bool dfs_disable_channel_switch; 804 bool dfs_ignore_cac; 805 bool dfs_filter_offload; 806 bool dfs_beacon_tx_enhanced; 807 bool dfs_prefer_non_dfs; 808 bool dfs_disable_japan_w53; 809 uint32_t sap_tx_leakage_threshold; 810 uint32_t dfs_pri_multiplier; 811 }; 812 813 /** 814 * struct wlan_mlme_mbo - Multiband Operation related ini configs 815 * @mbo_candidate_rssi_thres: candidate AP's min rssi to accept it 816 * @mbo_current_rssi_thres: Connected AP's rssi threshold below which 817 * transition is considered 818 * @mbo_current_rssi_mcc_thres: connected AP's RSSI threshold value to prefer 819 * against MCC 820 * @mbo_candidate_rssi_btc_thres: Candidate AP's minimum RSSI threshold to 821 * prefer it even in BT coex. 822 */ 823 struct wlan_mlme_mbo { 824 int8_t mbo_candidate_rssi_thres; 825 int8_t mbo_current_rssi_thres; 826 int8_t mbo_current_rssi_mcc_thres; 827 int8_t mbo_candidate_rssi_btc_thres; 828 }; 829 830 /** 831 * struct wlan_mlme_powersave - Powersave related ini configs 832 * @is_imps_enabled: flag to enable/disable IMPS 833 * @is_bmps_enabled: flag to enable/disable BMPS 834 * @auto_bmps_timer_val: auto BMPS timer value 835 * @bmps_min_listen_interval: BMPS listen interval minimum value 836 * @bmps_max_listen_interval: BMPS listen interval maximum value 837 * @dtim_selection_diversity: dtim selection diversity value to be sent to fw 838 */ 839 struct wlan_mlme_powersave { 840 bool is_imps_enabled; 841 bool is_bmps_enabled; 842 uint32_t auto_bmps_timer_val; 843 uint32_t bmps_min_listen_interval; 844 uint32_t bmps_max_listen_interval; 845 uint32_t dtim_selection_diversity; 846 }; 847 848 /** 849 * struct mlme_vht_capabilities_info - MLME VHT config items 850 * @supp_chan_width: Supported Channel Width 851 * @ldpc_coding_cap: LDPC Coding Capability 852 * @short_gi_80mhz: 80MHz Short Guard Interval 853 * @short_gi_160mhz: 160MHz Short Guard Interval 854 * @tx_stbc: Tx STBC cap 855 * @rx_stbc: Rx STBC cap 856 * @su_bformer: SU Beamformer cap 857 * @su_bformee: SU Beamformee cap 858 * @tx_bfee_ant_supp: Tx beamformee anti supp 859 * @num_soundingdim: Number of sounding dimensions 860 * @mu_bformer: MU Beamformer cap 861 * @txop_ps: Tx OPs in power save 862 * @htc_vhtc: htc_vht capability 863 * @link_adap_cap: Link adaptation capability 864 * @rx_antpattern: Rx Antenna Pattern cap 865 * @tx_antpattern: Tx Antenna Pattern cap 866 * @rx_mcs_map: Rx MCS Map 867 * @tx_mcs_map: Tx MCS Map 868 * @rx_supp_data_rate: Rx highest supported data rate 869 * @tx_supp_data_rate: Tx highest supported data rate 870 * @basic_mcs_set: Basic MCS set 871 * @enable_txbf_20mhz: enable tx bf for 20mhz 872 * @channel_width: Channel width capability for 11ac 873 * @rx_mcs: VHT Rx MCS capability for 1x1 mode 874 * @tx_mcs: VHT Tx MCS capability for 1x1 mode 875 * @rx_mcs2x2: VHT Rx MCS capability for 2x2 mode 876 * @tx_mcs2x2: VHT Tx MCS capability for 2x2 mode 877 * @enable_vht20_mcs9: Enables VHT MCS9 in 20M BW operation 878 * @enable2x2: Enables/disables VHT Tx/Rx MCS values for 2x2 879 * @enable_mu_bformee: Enables/disables multi-user (MU) 880 * beam formee capability 881 * @enable_paid: Enables/disables paid 882 * @enable_gid: Enables/disables gid 883 * @b24ghz_band: To control VHT support in 2.4 GHz band 884 * @vendor_24ghz_band: to control VHT support based on vendor 885 * ie in 2.4 GHz band 886 * @ampdu_len_exponent: To handle maximum receive AMPDU ampdu len exponent 887 * @ampdu_len: To handle maximum receive AMPDU ampdu len 888 * @tx_bfee_sap: enable tx bfee SAp 889 * @vendor_vhtie: enable subfee vendor vht ie 890 * @tx_bf_cap: Transmit bf capability 891 * @as_cap: Antenna sharing capability info 892 * @disable_ldpc_with_txbf_ap: Disable ldpc capability 893 * @vht_mcs_10_11_supp: VHT MCS 10 & 11 support 894 * @extended_nss_bw_supp: 895 * @vht_extended_nss_bw_cap: 896 * @max_nsts_total: 897 * @restricted_80p80_bw_supp: 898 */ 899 struct mlme_vht_capabilities_info { 900 uint8_t supp_chan_width; 901 bool ldpc_coding_cap; 902 bool short_gi_80mhz; 903 bool short_gi_160mhz; 904 bool tx_stbc; 905 bool rx_stbc; 906 bool su_bformer; 907 bool su_bformee; 908 uint8_t tx_bfee_ant_supp; 909 uint8_t num_soundingdim; 910 bool mu_bformer; 911 bool txop_ps; 912 bool htc_vhtc; 913 uint8_t link_adap_cap; 914 bool rx_antpattern; 915 bool tx_antpattern; 916 uint32_t rx_mcs_map; 917 uint32_t tx_mcs_map; 918 uint32_t rx_supp_data_rate; 919 uint32_t tx_supp_data_rate; 920 uint32_t basic_mcs_set; 921 bool enable_txbf_20mhz; 922 uint8_t channel_width; 923 uint32_t rx_mcs; 924 uint32_t tx_mcs; 925 uint8_t rx_mcs2x2; 926 uint8_t tx_mcs2x2; 927 bool enable_vht20_mcs9; 928 bool enable2x2; 929 bool enable_mu_bformee; 930 bool enable_paid; 931 bool enable_gid; 932 bool b24ghz_band; 933 bool vendor_24ghz_band; 934 uint8_t ampdu_len_exponent; 935 uint8_t ampdu_len; 936 bool tx_bfee_sap; 937 bool vendor_vhtie; 938 uint8_t tx_bf_cap; 939 uint8_t as_cap; 940 bool disable_ldpc_with_txbf_ap; 941 bool vht_mcs_10_11_supp; 942 uint8_t extended_nss_bw_supp; 943 uint8_t vht_extended_nss_bw_cap; 944 uint8_t max_nsts_total; 945 bool restricted_80p80_bw_supp; 946 }; 947 948 /** 949 * struct wlan_mlme_vht_caps - VHT Capabilities related config items 950 * @vht_cap_info: VHT capabilities Info Structure 951 */ 952 struct wlan_mlme_vht_caps { 953 struct mlme_vht_capabilities_info vht_cap_info; 954 }; 955 956 /** 957 * struct wlan_vht_config - VHT capabilities 958 * @max_mpdu_len: MPDU length 959 * @supported_channel_widthset: channel width set 960 * @ldpc_coding: LDPC coding capability 961 * @shortgi80: short GI 80 support 962 * @shortgi160and80plus80: short Gi 160 & 80+80 support 963 * @tx_stbc: Tx STBC cap 964 * @rx_stbc: Rx STBC cap 965 * @su_beam_former: SU beam former cap 966 * @su_beam_formee: SU beam formee cap 967 * @csnof_beamformer_antSup: Antenna support for beamforming 968 * @num_soundingdim: Sound dimensions 969 * @mu_beam_former: MU beam former cap 970 * @mu_beam_formee: MU beam formee cap 971 * @vht_txops: TXOP power save 972 * @htc_vhtcap: HTC VHT capability 973 * @max_ampdu_lenexp: AMPDU length 974 * @vht_link_adapt: VHT link adapatation capable 975 * @rx_antpattern: RX antenna pattern 976 * @tx_antpattern: TX antenna pattern 977 * @extended_nss_bw_supp: 978 * @caps: entire capability bitmap 979 */ 980 struct wlan_vht_config { 981 union { 982 struct { 983 uint32_t max_mpdu_len:2; 984 uint32_t supported_channel_widthset:2; 985 uint32_t ldpc_coding:1; 986 uint32_t shortgi80:1; 987 uint32_t shortgi160and80plus80:1; 988 uint32_t tx_stbc:1; 989 uint32_t rx_stbc:3; 990 uint32_t su_beam_former:1; 991 uint32_t su_beam_formee:1; 992 uint32_t csnof_beamformer_antSup:3; 993 uint32_t num_soundingdim:3; 994 uint32_t mu_beam_former:1; 995 uint32_t mu_beam_formee:1; 996 uint32_t vht_txops:1; 997 uint32_t htc_vhtcap:1; 998 uint32_t max_ampdu_lenexp:3; 999 uint32_t vht_link_adapt:2; 1000 uint32_t rx_antpattern:1; 1001 uint32_t tx_antpattern:1; 1002 uint32_t extended_nss_bw_supp:2; 1003 }; 1004 uint32_t caps; 1005 }; 1006 }; 1007 1008 /** 1009 * struct wlan_mlme_qos - QOS TX/RX aggregation related CFG items 1010 * @tx_aggregation_size: TX aggr size in number of MPDUs 1011 * @tx_aggregation_size_be: No. of MPDUs for BE queue for TX aggr 1012 * @tx_aggregation_size_bk: No. of MPDUs for BK queue for TX aggr 1013 * @tx_aggregation_size_vi: No. of MPDUs for VI queue for TX aggr 1014 * @tx_aggregation_size_vo: No. of MPDUs for VO queue for TX aggr 1015 * @rx_aggregation_size: No. of MPDUs for RX aggr 1016 * @tx_aggr_sw_retry_threshold_be: aggr sw retry threshold for BE 1017 * @tx_aggr_sw_retry_threshold_bk: aggr sw retry threshold for BK 1018 * @tx_aggr_sw_retry_threshold_vi: aggr sw retry threshold for VI 1019 * @tx_aggr_sw_retry_threshold_vo: aggr sw retry threshold for VO 1020 * @tx_aggr_sw_retry_threshold: aggr sw retry threshold 1021 * @tx_non_aggr_sw_retry_threshold_be: non aggr sw retry threshold for BE 1022 * @tx_non_aggr_sw_retry_threshold_bk: non aggr sw retry threshold for BK 1023 * @tx_non_aggr_sw_retry_threshold_vi: non aggr sw retry threshold for VI 1024 * @tx_non_aggr_sw_retry_threshold_vo: non aggr sw retry threshold for VO 1025 * @tx_non_aggr_sw_retry_threshold: non aggr sw retry threshold 1026 * @sap_max_inactivity_override: Override updating ap_sta_inactivity from 1027 * hostapd.conf 1028 * @sap_uapsd_enabled: Flag to enable/disable UAPSD for SAP 1029 */ 1030 struct wlan_mlme_qos { 1031 uint32_t tx_aggregation_size; 1032 uint32_t tx_aggregation_size_be; 1033 uint32_t tx_aggregation_size_bk; 1034 uint32_t tx_aggregation_size_vi; 1035 uint32_t tx_aggregation_size_vo; 1036 uint32_t rx_aggregation_size; 1037 uint32_t tx_aggr_sw_retry_threshold_be; 1038 uint32_t tx_aggr_sw_retry_threshold_bk; 1039 uint32_t tx_aggr_sw_retry_threshold_vi; 1040 uint32_t tx_aggr_sw_retry_threshold_vo; 1041 uint32_t tx_aggr_sw_retry_threshold; 1042 uint32_t tx_non_aggr_sw_retry_threshold_be; 1043 uint32_t tx_non_aggr_sw_retry_threshold_bk; 1044 uint32_t tx_non_aggr_sw_retry_threshold_vi; 1045 uint32_t tx_non_aggr_sw_retry_threshold_vo; 1046 uint32_t tx_non_aggr_sw_retry_threshold; 1047 bool sap_max_inactivity_override; 1048 bool sap_uapsd_enabled; 1049 }; 1050 1051 #ifdef WLAN_FEATURE_11AX 1052 #define MLME_HE_PPET_LEN 25 1053 #define WNI_CFG_HE_OPS_BSS_COLOR_MAX 0x3F 1054 1055 /** 1056 * struct wlan_mlme_he_caps - HE Capabilities related config items 1057 * @dot11_he_cap: 1058 * @he_cap_orig: 1059 * @he_ppet_2g: 1060 * @he_ppet_5g: 1061 * @he_ops_basic_mcs_nss: 1062 * @he_dynamic_fragmentation: 1063 * @enable_ul_mimo: 1064 * @enable_ul_ofdm: 1065 * @he_sta_obsspd: 1066 * @he_mcs_12_13_supp_2g: 1067 * @he_mcs_12_13_supp_5g: 1068 * @disable_sap_mcs_12_13: Bitmap to disable he mcs 12 13 for SAP 1069 */ 1070 struct wlan_mlme_he_caps { 1071 tDot11fIEhe_cap dot11_he_cap; 1072 tDot11fIEhe_cap he_cap_orig; 1073 uint8_t he_ppet_2g[MLME_HE_PPET_LEN]; 1074 uint8_t he_ppet_5g[MLME_HE_PPET_LEN]; 1075 uint32_t he_ops_basic_mcs_nss; 1076 uint8_t he_dynamic_fragmentation; 1077 uint8_t enable_ul_mimo; 1078 uint8_t enable_ul_ofdm; 1079 uint32_t he_sta_obsspd; 1080 uint16_t he_mcs_12_13_supp_2g; 1081 uint16_t he_mcs_12_13_supp_5g; 1082 uint32_t disable_sap_mcs_12_13; 1083 }; 1084 #endif 1085 1086 #ifdef WLAN_FEATURE_11BE 1087 /** 1088 * struct wlan_mlme_eht_caps - EHT Capabilities related config items 1089 * @dot11_eht_cap: current EHT capabilities 1090 * @eht_cap_orig: original EHT capabilities 1091 */ 1092 struct wlan_mlme_eht_caps { 1093 tDot11fIEeht_cap dot11_eht_cap; 1094 tDot11fIEeht_cap eht_cap_orig; 1095 /* Add members to store INI configuration corresponding to 11be */ 1096 }; 1097 #endif 1098 1099 /** 1100 * struct wlan_mlme_chain_cfg - Chain info related structure 1101 * @max_tx_chains_2g: max tx chains supported in 2.4ghz band 1102 * @max_rx_chains_2g: max rx chains supported in 2.4ghz band 1103 * @max_tx_chains_5g: max tx chains supported in 5ghz band 1104 * @max_rx_chains_5g: max rx chains supported in 5ghz band 1105 */ 1106 struct wlan_mlme_chain_cfg { 1107 uint8_t max_tx_chains_2g; 1108 uint8_t max_rx_chains_2g; 1109 uint8_t max_tx_chains_5g; 1110 uint8_t max_rx_chains_5g; 1111 }; 1112 1113 /** 1114 * struct mlme_tgt_caps - mlme related capability coming from target (FW) 1115 * @data_stall_recovery_fw_support: does target supports data stall recovery. 1116 * @bigtk_support: does the target support bigtk capability or not. 1117 * @stop_all_host_scan_support: Target capability that indicates if the target 1118 * supports stop all host scan request type. 1119 * @peer_create_conf_support: Peer create confirmation command support 1120 * @dual_sta_roam_fw_support: Firmware support for dual sta roaming feature 1121 * @ocv_support: FW supports OCV 1122 * 1123 * Add all the mlme-tgt related capabilities here, and the public API would fill 1124 * the related capability in the required mlme cfg structure. 1125 */ 1126 struct mlme_tgt_caps { 1127 bool data_stall_recovery_fw_support; 1128 bool bigtk_support; 1129 bool stop_all_host_scan_support; 1130 bool peer_create_conf_support; 1131 bool dual_sta_roam_fw_support; 1132 bool ocv_support; 1133 }; 1134 1135 /** 1136 * struct wlan_mlme_rates - RATES related config items 1137 * @cfp_period: cfp period info 1138 * @cfp_max_duration: cfp Max duration info 1139 * @max_htmcs_txdata: max HT mcs info for Tx 1140 * @disable_abg_rate_txdata: disable abg rate info for tx data 1141 * @sap_max_mcs_txdata: sap max mcs info 1142 * @disable_high_ht_mcs_2x2: disable high mcs for 2x2 info 1143 * @supported_11b: supported 11B rates 1144 * @supported_11a: supported 11A rates 1145 * @supported_mcs_set: supported MCS set 1146 * @basic_mcs_set: basic MCS set 1147 * @current_mcs_set: current MCS set 1148 */ 1149 struct wlan_mlme_rates { 1150 uint8_t cfp_period; 1151 uint16_t cfp_max_duration; 1152 uint16_t max_htmcs_txdata; 1153 bool disable_abg_rate_txdata; 1154 uint16_t sap_max_mcs_txdata; 1155 uint8_t disable_high_ht_mcs_2x2; 1156 struct mlme_cfg_str supported_11b; 1157 struct mlme_cfg_str supported_11a; 1158 struct mlme_cfg_str supported_mcs_set; 1159 struct mlme_cfg_str basic_mcs_set; 1160 struct mlme_cfg_str current_mcs_set; 1161 }; 1162 1163 1164 /* Flags for gLimProtectionControl that is updated in pe session*/ 1165 #define MLME_FORCE_POLICY_PROTECTION_DISABLE 0 1166 #define MLME_FORCE_POLICY_PROTECTION_CTS 1 1167 #define MLME_FORCE_POLICY_PROTECTION_RTS 2 1168 #define MLME_FORCE_POLICY_PROTECTION_DUAL_CTS 3 1169 #define MLME_FORCE_POLICY_PROTECTION_RTS_ALWAYS 4 1170 #define MLME_FORCE_POLICY_PROTECTION_AUTO 5 1171 1172 /* protection_enabled bits*/ 1173 #define MLME_PROTECTION_ENABLED_FROM_llA 0 1174 #define MLME_PROTECTION_ENABLED_FROM_llB 1 1175 #define MLME_PROTECTION_ENABLED_FROM_llG 2 1176 #define MLME_PROTECTION_ENABLED_HT_20 3 1177 #define MLME_PROTECTION_ENABLED_NON_GF 4 1178 #define MLME_PROTECTION_ENABLED_LSIG_TXOP 5 1179 #define MLME_PROTECTION_ENABLED_RIFS 6 1180 #define MLME_PROTECTION_ENABLED_OBSS 7 1181 #define MLME_PROTECTION_ENABLED_OLBC_FROM_llA 8 1182 #define MLME_PROTECTION_ENABLED_OLBC_FROM_llB 9 1183 #define MLME_PROTECTION_ENABLED_OLBC_FROM_llG 10 1184 #define MLME_PROTECTION_ENABLED_OLBC_HT20 11 1185 #define MLME_PROTECTION_ENABLED_OLBC_NON_GF 12 1186 #define MLME_PROTECTION_ENABLED_OLBC_LSIG_TXOP 13 1187 #define MLME_PROTECTION_ENABLED_OLBC_RIFS 14 1188 #define MLME_PROTECTION_ENABLED_OLBC_OBSS 15 1189 1190 /** 1191 * struct wlan_mlme_feature_flag - feature related information 1192 * @accept_short_slot_assoc: enable short slot feature 1193 * @enable_hcf: enable HCF feature 1194 * @enable_rsn: enable RSN for connection 1195 * @enable_short_preamble_11g: enable short preamble for 11g 1196 * @enable_short_slot_time_11g: enable shot slot time for 11g 1197 * @enable_ampdu: enable AMPDU feature 1198 * @enable_mcc: enable MCC feature 1199 * @mcc_rts_cts_prot: RTS-CTS protection in MCC 1200 * @mcc_bcast_prob_rsp: broadcast Probe Response in MCC 1201 * @channel_bonding_mode: channel bonding mode 1202 * @enable_block_ack: enable block ack feature 1203 * @channel_bonding_mode_24ghz: configures Channel Bonding in 24 GHz 1204 * @channel_bonding_mode_5ghz: configures Channel Bonding in 5 GHz 1205 * @update_cw_allowed: to check update chan width allowed or not 1206 */ 1207 struct wlan_mlme_feature_flag { 1208 bool accept_short_slot_assoc; 1209 bool enable_hcf; 1210 bool enable_rsn; 1211 bool enable_short_preamble_11g; 1212 bool enable_short_slot_time_11g; 1213 bool enable_ampdu; 1214 bool enable_mcc; 1215 uint8_t mcc_rts_cts_prot; 1216 uint8_t mcc_bcast_prob_rsp; 1217 uint32_t channel_bonding_mode; 1218 uint32_t enable_block_ack; 1219 uint32_t channel_bonding_mode_24ghz; 1220 uint32_t channel_bonding_mode_5ghz; 1221 bool update_cw_allowed; 1222 }; 1223 1224 /** 1225 * struct wlan_mlme_sap_protection - SAP erp protection config items 1226 * @ignore_peer_ht_opmode: Ignore the ht opmode of the peer. Dynamic via INI 1227 * @enable_ap_obss_protection: enable/disable AP OBSS protection 1228 * @protection_force_policy: Protection force policy. Static via cfg 1229 * @is_ap_prot_enabled: Enable/disable SAP protection 1230 * @ap_protection_mode: AP protection bitmap 1231 * @protection_enabled: Force enable protection. static via cfg 1232 */ 1233 struct wlan_mlme_sap_protection { 1234 bool ignore_peer_ht_opmode; 1235 bool enable_ap_obss_protection; 1236 uint8_t protection_force_policy; 1237 bool is_ap_prot_enabled; 1238 uint16_t ap_protection_mode; 1239 uint32_t protection_enabled; 1240 }; 1241 1242 /** 1243 * struct wlan_mlme_chainmask - All chainmask related cfg items 1244 * @txchainmask1x1: To set transmit chainmask 1245 * @rxchainmask1x1: To set rx chainmask 1246 * @tx_chain_mask_cck: Used to enable/disable Cck ChainMask 1247 * @tx_chain_mask_1ss: Enables/disables tx chain Mask1ss 1248 * @num_11b_tx_chains: Number of Tx Chains in 11b mode 1249 * @num_11ag_tx_chains: Number of Tx Chains in 11ag mode 1250 * @tx_chain_mask_2g: Tx chain mask for 2g 1251 * @rx_chain_mask_2g: Tx chain mask for 2g 1252 * @tx_chain_mask_5g: Tx chain mask for 5g 1253 * @rx_chain_mask_5g: Rx chain mask for 5g 1254 * @enable_bt_chain_separation: Enable/Disable BT/WLAN Host chain separation 1255 */ 1256 struct wlan_mlme_chainmask { 1257 uint8_t txchainmask1x1; 1258 uint8_t rxchainmask1x1; 1259 bool tx_chain_mask_cck; 1260 uint8_t tx_chain_mask_1ss; 1261 uint16_t num_11b_tx_chains; 1262 uint16_t num_11ag_tx_chains; 1263 uint8_t tx_chain_mask_2g; 1264 uint8_t rx_chain_mask_2g; 1265 uint8_t tx_chain_mask_5g; 1266 uint8_t rx_chain_mask_5g; 1267 bool enable_bt_chain_separation; 1268 }; 1269 1270 /** 1271 * enum wlan_mlme_ratemask_type: Type of PHY for ratemask 1272 * @WLAN_MLME_RATEMASK_TYPE_NO_MASK: no ratemask set 1273 * @WLAN_MLME_RATEMASK_TYPE_CCK: CCK/OFDM rate 1274 * @WLAN_MLME_RATEMASK_TYPE_HT: HT rate 1275 * @WLAN_MLME_RATEMASK_TYPE_VHT: VHT rate 1276 * @WLAN_MLME_RATEMASK_TYPE_HE: HE rate 1277 * @WLAN_MLME_RATEMASK_TYPE_MAX: max enumeration 1278 * 1279 * This is used for 'type' values in wlan_mlme_ratemask 1280 */ 1281 enum wlan_mlme_ratemask_type { 1282 WLAN_MLME_RATEMASK_TYPE_NO_MASK = 0, 1283 WLAN_MLME_RATEMASK_TYPE_CCK = 1, 1284 WLAN_MLME_RATEMASK_TYPE_HT = 2, 1285 WLAN_MLME_RATEMASK_TYPE_VHT = 3, 1286 WLAN_MLME_RATEMASK_TYPE_HE = 4, 1287 /* keep this last */ 1288 WLAN_MLME_RATEMASK_TYPE_MAX, 1289 }; 1290 1291 /** 1292 * struct wlan_mlme_ratemask - ratemask config parameters 1293 * @type: Type of PHY the mask to be applied 1294 * @lower32: Lower 32 bits in the 1st 64-bit value 1295 * @higher32: Higher 32 bits in the 1st 64-bit value 1296 * @lower32_2: Lower 32 bits in the 2nd 64-bit value 1297 * @higher32_2: Higher 32 bits in the 2nd 64-bit value 1298 */ 1299 struct wlan_mlme_ratemask { 1300 enum wlan_mlme_ratemask_type type; 1301 uint32_t lower32; 1302 uint32_t higher32; 1303 uint32_t lower32_2; 1304 uint32_t higher32_2; 1305 }; 1306 1307 /** 1308 * struct dual_sta_policy - Concurrent STA policy configuration 1309 * @concurrent_sta_policy: Possible values are defined in enum 1310 * qca_wlan_concurrent_sta_policy_config 1311 * @primary_vdev_id: specified iface is the primary STA iface, say 0 means 1312 * vdev 0 is acting as primary interface 1313 */ 1314 struct dual_sta_policy { 1315 uint8_t concurrent_sta_policy; 1316 uint8_t primary_vdev_id; 1317 }; 1318 1319 /** 1320 * enum mlme_cfg_frame_type - frame type to configure mgmt hw tx retry count 1321 * @CFG_GO_NEGOTIATION_REQ_FRAME_TYPE: p2p go negotiation request fame 1322 * @CFG_P2P_INVITATION_REQ_FRAME_TYPE: p2p invitation request frame 1323 * @CFG_PROVISION_DISCOVERY_REQ_FRAME_TYPE: p2p provision discovery request 1324 * @CFG_FRAME_TYPE_MAX: max enumeration 1325 */ 1326 enum mlme_cfg_frame_type { 1327 CFG_GO_NEGOTIATION_REQ_FRAME_TYPE = 0, 1328 CFG_P2P_INVITATION_REQ_FRAME_TYPE = 1, 1329 CFG_PROVISION_DISCOVERY_REQ_FRAME_TYPE = 2, 1330 CFG_FRAME_TYPE_MAX, 1331 }; 1332 1333 #define MAX_MGMT_HW_TX_RETRY_COUNT 127 1334 1335 /** 1336 * struct wlan_user_mcc_quota - User MCC quota configuration 1337 * @op_mode: Mode for which MCC quota needs to be applied 1338 * @quota: User MCC quota value 1339 * @vdev_id: Intended VDEV id for the quota 1340 */ 1341 struct wlan_user_mcc_quota { 1342 enum QDF_OPMODE op_mode; 1343 uint8_t quota; 1344 uint8_t vdev_id; 1345 }; 1346 1347 /** 1348 * enum wlan_mlme_hw_mode_config_type - HW mode config type replicated from 1349 * wmi_hw_mode_config_type in FW header. 1350 * similar as wmi_host_hw_mode_config_type. 1351 * @WLAN_MLME_HW_MODE_SINGLE: Only one PHY is active. 1352 * @WLAN_MLME_HW_MODE_DBS: Both PHYs are active in different bands, 1353 * one in 2G and another in 5G. 1354 * @WLAN_MLME_HW_MODE_SBS_PASSIVE: Both PHYs are in passive mode (only rx) in 1355 * same band; no tx allowed. 1356 * @WLAN_MLME_HW_MODE_SBS: Both PHYs are active in the same band. 1357 * Support for both PHYs within one band is planned 1358 * for 5G only(as indicated in WMI_MAC_PHY_CAPABILITIES), 1359 * but could be extended to other bands in the future. 1360 * The separation of the band between the two PHYs needs 1361 * to be communicated separately. 1362 * @WLAN_MLME_HW_MODE_DBS_SBS: 3 PHYs, with 2 on the same band doing SBS 1363 * as in WMI_HW_MODE_SBS, and 3rd on the other band 1364 * @WLAN_MLME_HW_MODE_DBS_OR_SBS: Two PHY with one PHY capabale of both 2G and 1365 * 5G. It can support SBS (5G + 5G) OR DBS (5G + 2G). 1366 * @WLAN_MLME_HW_MODE_DBS_2G_5G: Both PHYs are active in different bands. 1367 * PhyA 2G and PhyB 5G 1368 * @WLAN_MLME_HW_MODE_2G_PHYB: Only one phy is active. 2G mode on PhyB. 1369 * @WLAN_MLME_HW_MODE_EMLSR: Both PHYs are active in listen mode in 1x1 1370 * and Tx/Rx trigger on any PHY will switch 1371 * from 1x1 to 2x2 on that Phy 1372 * @WLAN_MLME_HW_MODE_AUX_EMLSR_SINGLE: PHYA0 and AUX are active in listen mode 1373 * in 1x1 and Tx/Rx trigger on any. 1374 * PHY will switch from 1x1 to 2x2 1375 * on that Phy. 1376 * @WLAN_MLME_HW_MODE_AUX_EMLSR_SPLIT: PHYA1 and AUX are active in listen mode 1377 * in 1x1 and Tx/Rx trigger on any. 1378 * PHY will switch from 1x1 to 2x2 1379 * on that Phy. 1380 * @WLAN_MLME_HW_MODE_MAX: Max hw_mode_id. 1381 */ 1382 enum wlan_mlme_hw_mode_config_type { 1383 WLAN_MLME_HW_MODE_SINGLE = 0, 1384 WLAN_MLME_HW_MODE_DBS = 1, 1385 WLAN_MLME_HW_MODE_SBS_PASSIVE = 2, 1386 WLAN_MLME_HW_MODE_SBS = 3, 1387 WLAN_MLME_HW_MODE_DBS_SBS = 4, 1388 WLAN_MLME_HW_MODE_DBS_OR_SBS = 5, 1389 WLAN_MLME_HW_MODE_DBS_2G_5G = 6, 1390 WLAN_MLME_HW_MODE_2G_PHYB = 7, 1391 WLAN_MLME_HW_MODE_EMLSR = 8, 1392 WLAN_MLME_HW_MODE_AUX_EMLSR_SINGLE = 9, 1393 WLAN_MLME_HW_MODE_AUX_EMLSR_SPLIT = 10, 1394 WLAN_MLME_HW_MODE_MAX, 1395 }; 1396 1397 /** 1398 * enum wlan_mlme_aux_caps_bit - Bit mapping for aux capability 1399 * 1400 * @WLAN_MLME_AUX_MODE_SCAN_BIT: if set, aux scan is supported 1401 * @WLAN_MLME_AUX_MODE_LISTEN_BIT: if set, aux listen is supported 1402 * @WLAN_MLME_AUX_MODE_EMLSR_BIT: if set, aux emlsr is supported 1403 */ 1404 enum wlan_mlme_aux_caps_bit { 1405 WLAN_MLME_AUX_MODE_SCAN_BIT = 0, 1406 WLAN_MLME_AUX_MODE_LISTEN_BIT = 1, 1407 WLAN_MLME_AUX_MODE_EMLSR_BIT = 2, 1408 }; 1409 1410 /* struct wlan_mlme_aux_dev_caps - wlan mlme aux dev capability 1411 * 1412 * @supported_modes_bitmap: indicate which mode this AUX supports for the 1413 * HW mode defined in hw_mode_id 1414 * @listen_pdev_id_map: indicate which AUX MAC can listen/scan for the HW mode 1415 * described in hw_mode_id 1416 * @emlsr_pdev_id_map: indicate which AUX MAC can perform eMLSR for the HW mode 1417 * described in hw_mode_id. 1418 */ 1419 struct wlan_mlme_aux_dev_caps { 1420 uint32_t supported_modes_bitmap; 1421 uint32_t listen_pdev_id_map; 1422 uint32_t emlsr_pdev_id_map; 1423 }; 1424 1425 /* struct wlan_mlme_generic - Generic CFG config items 1426 * 1427 * @band_capability: HW Band Capability - Both or 2.4G only or 5G only 1428 * @band: Current Band - Internal variable, initialized to INI and updated later 1429 * @select_5ghz_margin: RSSI margin to select 5Ghz over 2.4 Ghz 1430 * @sub_20_chan_width: Sub 20Mhz Channel Width 1431 * @ito_repeat_count: ITO Repeat Count 1432 * @pmf_sa_query_max_retries: PMF query max retries for SAP 1433 * @pmf_sa_query_retry_interval: PMF query retry interval for SAP 1434 * @dropped_pkt_disconnect_thresh: Threshold for dropped pkts before disconnect 1435 * @rtt_mac_randomization: Enable/Disable RTT MAC randomization 1436 * @rtt3_enabled: RTT3 enable or disable info 1437 * @prevent_link_down: Enable/Disable prevention of link down 1438 * @memory_deep_sleep: Enable/Disable memory deep sleep 1439 * @cck_tx_fir_override: Enable/Disable CCK Tx FIR Override 1440 * @crash_inject: Enable/Disable Crash Inject 1441 * @lpass_support: Enable/Disable LPASS Support 1442 * @self_recovery: Enable/Disable Self Recovery 1443 * @sap_dot11mc: Enable/Disable SAP 802.11mc support 1444 * @fatal_event_trigger: Enable/Disable Fatal Events Trigger 1445 * @optimize_ca_event: Enable/Disable Optimization of CA events 1446 * @fw_timeout_crash: Enable/Disable FW Timeout Crash * 1447 * @debug_packet_log: Debug packet log flags 1448 * @enabled_11h: enable 11h flag 1449 * @enabled_11d: enable 11d flag 1450 * @enable_beacon_reception_stats: enable beacon reception stats 1451 * @data_stall_recovery_fw_support: whether FW supports Data stall recovery. 1452 * @enable_change_channel_bandwidth: enable/disable change channel bw in mission 1453 * mode 1454 * @disable_4way_hs_offload: enable/disable 4 way handshake offload to firmware 1455 * @as_enabled: antenna sharing enabled or not (FW capability) 1456 * @mgmt_retry_max: maximum retries for management frame 1457 * @enable_he_mcs0_for_6ghz_mgmt: HE MCS0 rate for mgmt frames in 6GHz band 1458 * @bmiss_skip_full_scan: Decide if full scan can be skipped in firmware if no 1459 * candidate is found in partial scan based on channel map 1460 * @enable_ring_buffer: Decide to enable/disable ring buffer for bug report 1461 * @enable_peer_unmap_conf_support: Indicate whether to send conf for peer unmap 1462 * @dfs_chan_ageout_time: Set DFS Channel ageout time 1463 * @bigtk_support: Whether BIGTK is supported or not 1464 * @stop_all_host_scan_support: Target capability that indicates if the target 1465 * supports stop all host scan request type. 1466 * @dual_sta_roam_fw_support: Firmware support for dual sta roaming feature 1467 * @sae_connect_retries: sae connect retry bitmask 1468 * @wls_6ghz_capable: wifi location service(WLS) is 6ghz capable 1469 * @enabled_rf_test_mode: Enable/disable the RF test mode config 1470 * @monitor_mode_concurrency: Monitor mode concurrency supported 1471 * @ocv_support: FW supports OCV or not 1472 * @wds_mode: wds mode supported 1473 * @dual_sta_policy_cfg: Dual STA policies configuration 1474 * @tx_retry_multiplier: TX xretry extension parameter 1475 * @mgmt_hw_tx_retry_count: MGMT HW tx retry count for frames 1476 * @std_6ghz_conn_policy: 6GHz standard connection policy 1477 * @disable_vlp_sta_conn_to_sp_ap: Disable VLP STA connection to SP AP 1478 * @eht_mode: EHT mode of operation 1479 * @t2lm_negotiation_support: T2LM negotiation supported enum value 1480 * @enable_emlsr_mode: 11BE eMLSR mode support 1481 * @mld_id: MLD ID of requested BSS within ML probe request frame 1482 * @oem_eht_mlo_crypto_bitmap: Bitmap of APs allowed by OEMs to connect 1483 * in EHT/MLO. 1484 * @safe_mode_enable: safe mode to bypass some strict 6 GHz checks for 1485 * connection, bypass strict power levels 1486 * @sr_enable_modes: modes for which SR(Spatial Reuse) is enabled 1487 * @wlan_mlme_aux0_dev_caps: capability for aux0 1488 * @bt_profile_con: Bluetooth connection profile 1489 */ 1490 struct wlan_mlme_generic { 1491 uint32_t band_capability; 1492 uint32_t band; 1493 uint8_t select_5ghz_margin; 1494 uint8_t sub_20_chan_width; 1495 uint8_t ito_repeat_count; 1496 uint8_t pmf_sa_query_max_retries; 1497 uint16_t pmf_sa_query_retry_interval; 1498 uint16_t dropped_pkt_disconnect_thresh; 1499 bool rtt_mac_randomization; 1500 bool rtt3_enabled; 1501 bool prevent_link_down; 1502 bool memory_deep_sleep; 1503 bool cck_tx_fir_override; 1504 bool crash_inject; 1505 bool lpass_support; 1506 bool self_recovery; 1507 bool sap_dot11mc; 1508 bool fatal_event_trigger; 1509 bool optimize_ca_event; 1510 bool fw_timeout_crash; 1511 uint8_t debug_packet_log; 1512 bool enabled_11h; 1513 bool enabled_11d; 1514 bool enable_deauth_to_disassoc_map; 1515 bool enable_beacon_reception_stats; 1516 bool data_stall_recovery_fw_support; 1517 uint32_t disable_4way_hs_offload; 1518 bool as_enabled; 1519 uint8_t mgmt_retry_max; 1520 bool enable_he_mcs0_for_6ghz_mgmt; 1521 bool bmiss_skip_full_scan; 1522 bool enable_ring_buffer; 1523 bool enable_peer_unmap_conf_support; 1524 uint8_t dfs_chan_ageout_time; 1525 bool bigtk_support; 1526 bool stop_all_host_scan_support; 1527 bool dual_sta_roam_fw_support; 1528 uint32_t sae_connect_retries; 1529 bool wls_6ghz_capable; 1530 bool enabled_rf_test_mode; 1531 enum monitor_mode_concurrency monitor_mode_concurrency; 1532 bool ocv_support; 1533 enum wlan_wds_mode wds_mode; 1534 struct dual_sta_policy dual_sta_policy; 1535 uint32_t tx_retry_multiplier; 1536 uint8_t mgmt_hw_tx_retry_count[CFG_FRAME_TYPE_MAX]; 1537 #ifdef CONFIG_BAND_6GHZ 1538 bool std_6ghz_conn_policy; 1539 bool disable_vlp_sta_conn_to_sp_ap; 1540 #endif 1541 #ifdef WLAN_FEATURE_11BE_MLO 1542 enum wlan_eht_mode eht_mode; 1543 bool enable_emlsr_mode; 1544 enum t2lm_negotiation_support t2lm_negotiation_support; 1545 uint8_t mld_id; 1546 #endif 1547 #ifdef WLAN_FEATURE_11BE 1548 uint32_t oem_eht_mlo_crypto_bitmap; 1549 #endif 1550 #ifdef WLAN_FEATURE_MCC_QUOTA 1551 struct wlan_user_mcc_quota user_mcc_quota; 1552 #endif 1553 bool safe_mode_enable; 1554 #if defined(WLAN_FEATURE_SR) 1555 uint32_t sr_enable_modes; 1556 #endif 1557 struct wlan_mlme_aux_dev_caps 1558 wlan_mlme_aux0_dev_caps[WLAN_MLME_HW_MODE_MAX]; 1559 bool bt_profile_con; 1560 }; 1561 1562 /** 1563 * struct wlan_mlme_product_details_cfg - product details config items 1564 * @manufacturer_name: manufacture name 1565 * @model_number: model number 1566 * @model_name: model name 1567 * @manufacture_product_name: manufacture product name 1568 * @manufacture_product_version: manufacture product version 1569 */ 1570 struct wlan_mlme_product_details_cfg { 1571 char manufacturer_name[WLAN_CFG_MFR_NAME_LEN + 1]; 1572 char model_number[WLAN_CFG_MODEL_NUMBER_LEN + 1]; 1573 char model_name[WLAN_CFG_MODEL_NAME_LEN + 1]; 1574 char manufacture_product_name[WLAN_CFG_MFR_PRODUCT_NAME_LEN + 1]; 1575 char manufacture_product_version[WLAN_CFG_MFR_PRODUCT_VERSION_LEN + 1]; 1576 }; 1577 1578 /** 1579 * struct acs_weight - Normalize ACS weight for mentioned channels 1580 * @chan_freq: frequency of the channel 1581 * @normalize_weight: Normalization factor of the frequency 1582 */ 1583 struct acs_weight { 1584 uint32_t chan_freq; 1585 uint8_t normalize_weight; 1586 }; 1587 1588 /** 1589 * struct acs_weight_range - Normalize ACS weight for mentioned channel range 1590 * @start_freq: frequency of the start channel 1591 * @end_freq: frequency of the end channel 1592 * @normalize_weight: Normalization factor for freq range 1593 */ 1594 struct acs_weight_range { 1595 uint32_t start_freq; 1596 uint32_t end_freq; 1597 uint8_t normalize_weight; 1598 }; 1599 1600 #define MAX_ACS_WEIGHT_RANGE 10 1601 #define MLME_GET_DFS_CHAN_WEIGHT(np_chan_weight) (np_chan_weight & 0x000000FF) 1602 1603 /** 1604 * struct wlan_mlme_acs - All acs related cfg items 1605 * @is_acs_with_more_param: to enable acs with more param 1606 * @auto_channel_select_weight: to set acs channel weight 1607 * @is_vendor_acs_support: enable application based channel selection 1608 * @is_acs_support_for_dfs_ltecoex: enable channel for dfs and lte coex 1609 * @is_external_acs_policy: control external policy 1610 * @normalize_weight_chan: Weight factor to be considered in ACS 1611 * @normalize_weight_num_chan: Number of freq items for normalization. 1612 * @normalize_weight_range: Frequency range for weight normalization 1613 * @num_weight_range: num of ranges provided by user 1614 * @force_sap_start: Force SAP start when no channel is found suitable 1615 * by ACS 1616 * @acs_prefer_6ghz_psc: Select 6 GHz PSC channel as priority 1617 * @np_chan_weightage: Weightage to be given to non preferred channels. 1618 */ 1619 struct wlan_mlme_acs { 1620 bool is_acs_with_more_param; 1621 uint32_t auto_channel_select_weight; 1622 bool is_vendor_acs_support; 1623 bool is_acs_support_for_dfs_ltecoex; 1624 bool is_external_acs_policy; 1625 struct acs_weight normalize_weight_chan[NUM_CHANNELS]; 1626 uint16_t normalize_weight_num_chan; 1627 struct acs_weight_range normalize_weight_range[MAX_ACS_WEIGHT_RANGE]; 1628 uint16_t num_weight_range; 1629 bool force_sap_start; 1630 bool acs_prefer_6ghz_psc; 1631 uint32_t np_chan_weightage; 1632 }; 1633 1634 /** 1635 * struct wlan_mlme_cfg_twt - All twt related cfg items 1636 * @is_twt_enabled: global twt configuration 1637 * @is_bcast_responder_enabled: bcast responder enable/disable 1638 * @is_bcast_requestor_enabled: bcast requestor enable/disable 1639 * @bcast_requestor_tgt_cap: Broadcast requestor target capability 1640 * @bcast_responder_tgt_cap: Broadcast responder target capability 1641 * @bcast_legacy_tgt_cap: Broadcast Target capability. This is the legacy 1642 * capability. 1643 * @is_twt_nudge_tgt_cap_enabled: support for nudge request enable/disable 1644 * @is_all_twt_tgt_cap_enabled: support for all twt enable/disable 1645 * @is_twt_statistics_tgt_cap_enabled: support for twt statistics 1646 * @twt_congestion_timeout: congestion timeout value 1647 * @disable_btwt_usr_cfg: User config param to enable/disable the BTWT support 1648 * @enable_twt_24ghz: Enable/disable host TWT when STA is connected in 1649 * 2.4Ghz 1650 * @disable_twt_info_frame: Enable/disable TWT info frame 1651 * @req_flag: requestor flag enable/disable 1652 * @res_flag: responder flag enable/disable 1653 * @twt_res_svc_cap: responder service capability 1654 */ 1655 struct wlan_mlme_cfg_twt { 1656 bool is_twt_enabled; 1657 bool is_bcast_responder_enabled; 1658 bool is_bcast_requestor_enabled; 1659 bool bcast_requestor_tgt_cap; 1660 bool bcast_responder_tgt_cap; 1661 bool bcast_legacy_tgt_cap; 1662 bool is_twt_nudge_tgt_cap_enabled; 1663 bool is_all_twt_tgt_cap_enabled; 1664 bool is_twt_statistics_tgt_cap_enabled; 1665 uint32_t twt_congestion_timeout; 1666 bool disable_btwt_usr_cfg; 1667 bool enable_twt_24ghz; 1668 bool disable_twt_info_frame; 1669 bool req_flag; 1670 bool res_flag; 1671 bool twt_res_svc_cap; 1672 }; 1673 1674 /** 1675 * struct wlan_mlme_obss_ht40 - OBSS HT40 config items 1676 * @active_dwelltime: obss active dwelltime 1677 * @passive_dwelltime: obss passive dwelltime 1678 * @width_trigger_interval: obss trigger interval 1679 * @passive_per_channel: obss scan passive total duration per channel 1680 * @active_per_channel: obss scan active total duration per channel 1681 * @width_trans_delay: obss width transition delay 1682 * @scan_activity_threshold: obss scan activity threshold 1683 * @is_override_ht20_40_24g: use channel bonding in 2.4 GHz 1684 * @obss_detection_offload_enabled: Enable OBSS detection offload 1685 * @obss_color_collision_offload_enabled: Enable obss color collision 1686 * @bss_color_collision_det_sta: STA BSS color collision detection offload 1687 * @bss_color_collision_det_tgt_support: STA BSS color collision detection 1688 * target support 1689 */ 1690 struct wlan_mlme_obss_ht40 { 1691 uint32_t active_dwelltime; 1692 uint32_t passive_dwelltime; 1693 uint32_t width_trigger_interval; 1694 uint32_t passive_per_channel; 1695 uint32_t active_per_channel; 1696 uint32_t width_trans_delay; 1697 uint32_t scan_activity_threshold; 1698 bool is_override_ht20_40_24g; 1699 bool obss_detection_offload_enabled; 1700 bool obss_color_collision_offload_enabled; 1701 bool bss_color_collision_det_sta; 1702 bool bss_color_collision_det_tgt_support; 1703 }; 1704 1705 /** 1706 * struct wlan_mlme_eml_cap - EML capabilities of MLD 1707 * @emlsr_supp: eMLSR Support 1708 * @emlsr_pad_delay: eMLSR Padding Delay 1709 * @emlsr_trans_delay: eMLSR transition delay 1710 * @emlmr_supp: eMLMR Support 1711 * @emlmr_delay: eMLMR Delay 1712 * @trans_timeout: Transition Timeout 1713 * @reserved: Reserved 1714 */ 1715 struct wlan_mlme_eml_cap { 1716 uint16_t emlsr_supp:1, 1717 emlsr_pad_delay:3, 1718 emlsr_trans_delay:3, 1719 emlmr_supp:1, 1720 emlmr_delay:3, 1721 trans_timeout:4, 1722 reserved:1; 1723 }; 1724 1725 /** 1726 * enum dot11p_mode - The 802.11p mode of operation 1727 * @CFG_11P_DISABLED: 802.11p mode is disabled 1728 * @CFG_11P_STANDALONE: 802.11p-only operation 1729 * @CFG_11P_CONCURRENT: 802.11p and WLAN operate concurrently 1730 */ 1731 enum dot11p_mode { 1732 CFG_11P_DISABLED = 0, 1733 CFG_11P_STANDALONE, 1734 CFG_11P_CONCURRENT, 1735 }; 1736 1737 #define MAX_VDEV_NSS 2 1738 #define MAX_VDEV_CHAINS 2 1739 1740 /** 1741 * struct wlan_mlme_nss_chains - MLME vdev config of nss, and chains 1742 * @num_tx_chains: tx chains of vdev config 1743 * @num_rx_chains: rx chains of vdev config 1744 * @tx_nss: tx nss of vdev config 1745 * @rx_nss: rx nss of vdev config 1746 * @num_tx_chains_11b: number of tx chains in 11b mode 1747 * @num_tx_chains_11g: number of tx chains in 11g mode 1748 * @num_tx_chains_11a: number of tx chains in 11a mode 1749 * @disable_rx_mrc: disable 2 rx chains, in rx nss 1 mode 1750 * @disable_tx_mrc: disable 2 tx chains, in tx nss 1 mode 1751 * @enable_dynamic_nss_chains_cfg: enable the dynamic nss chain config to FW 1752 * @restart_sap_on_dyn_nss_chains_cfg: restart SAP on dynamic NSS chains 1753 * update 1754 */ 1755 struct wlan_mlme_nss_chains { 1756 uint32_t num_tx_chains[NSS_CHAINS_BAND_MAX]; 1757 uint32_t num_rx_chains[NSS_CHAINS_BAND_MAX]; 1758 uint32_t tx_nss[NSS_CHAINS_BAND_MAX]; 1759 uint32_t rx_nss[NSS_CHAINS_BAND_MAX]; 1760 uint32_t num_tx_chains_11b; 1761 uint32_t num_tx_chains_11g; 1762 uint32_t num_tx_chains_11a; 1763 bool disable_rx_mrc[NSS_CHAINS_BAND_MAX]; 1764 bool disable_tx_mrc[NSS_CHAINS_BAND_MAX]; 1765 bool enable_dynamic_nss_chains_cfg; 1766 bool restart_sap_on_dyn_nss_chains_cfg; 1767 }; 1768 1769 /** 1770 * enum station_keepalive_method - available keepalive methods for stations 1771 * @MLME_STA_KEEPALIVE_MIN: ensure KEEPALIVE_NULL or ARP are not values of 0 1772 * @MLME_STA_KEEPALIVE_NULL_DATA: null data packet 1773 * @MLME_STA_KEEPALIVE_GRAT_ARP: gratuitous ARP packet 1774 * @MLME_STA_KEEPALIVE_UNSOLICIT_ARP_RSP: unsolicited ARP response packet 1775 * @MLME_STA_KEEPALIVE_COUNT: number of method options available 1776 */ 1777 enum station_keepalive_method { 1778 MLME_STA_KEEPALIVE_MIN, 1779 MLME_STA_KEEPALIVE_NULL_DATA = 1, 1780 MLME_STA_KEEPALIVE_GRAT_ARP = 2, 1781 MLME_STA_KEEPALIVE_UNSOLICIT_ARP_RSP = 3, 1782 /* keep at the end */ 1783 MLME_STA_KEEPALIVE_COUNT 1784 }; 1785 1786 /** 1787 * enum station_prefer_bw - Station preferred bandwidth to connect AP 1788 * @STA_PREFER_BW_DEFAULT: Station connects AP with its max bw capability. 1789 * @STA_PREFER_BW_VHT80MHZ: Station connects in VHT 80MHz 2x2 when AP is in 1790 * 160MHz 2x2 1791 * @STA_PREFER_BW_80MHZ: Station connects in 80MHz when AP is in 160MHz 1792 */ 1793 enum station_prefer_bw { 1794 STA_PREFER_BW_DEFAULT, 1795 STA_PREFER_BW_VHT80MHZ, 1796 STA_PREFER_BW_80MHZ 1797 }; 1798 1799 /** 1800 * struct wlan_mlme_sta_cfg - MLME STA configuration items 1801 * @sta_keep_alive_period: Sends NULL frame to AP period 1802 * @bss_max_idle_period: BSS max idle period 1803 * @tgt_gtx_usr_cfg: Target gtx user config 1804 * @pmkid_modes: Enable PMKID modes 1805 * @wait_cnf_timeout: Wait assoc cnf timeout 1806 * @sta_miracast_mcc_rest_time: STA+MIRACAST(P2P) MCC rest time 1807 * @dot11p_mode: Set 802.11p mode 1808 * @fils_max_chan_guard_time: Set maximum channel guard time 1809 * @current_rssi: Current rssi 1810 * @deauth_retry_cnt: Deauth retry count 1811 * @sta_prefer_80mhz_over_160mhz: Set Sta preference to connect in 80HZ/160HZ 1812 * @ignore_peer_erp_info: Ignore peer information 1813 * @enable_5g_ebt: Set default 5G early beacon termination 1814 * @deauth_before_connection: Send deauth before connection or not 1815 * @enable_go_cts2self_for_sta: Stop NOA and start using cts2self 1816 * @qcn_ie_support: QCN IE support 1817 * @force_rsne_override: Force rsnie override from user 1818 * @single_tid: Set replay counter for all TID 1819 * @allow_tpc_from_ap: Support for AP power constraint 1820 * @sta_keepalive_method: STA keepalive method 1821 * @usr_disabled_roaming: User disable roaming for current connection 1822 * @usr_scan_probe_unicast_ra: User config unicast probe req in scan 1823 * @event_payload: Diagnostic event payload 1824 * @max_li_modulated_dtim_time_ms: Max modulated DTIM time in ms. 1825 * @mlo_same_link_mld_address: Use one of the links same as mld address 1826 * @user_set_link_num: save link num set by vendor command 1827 * @mlo_support_link_num: max number of links that sta mlo supports 1828 * @mlo_support_link_band: band bitmap that sta mlo supports 1829 * @mlo_max_simultaneous_links: number of simultaneous links 1830 * @mlo_prefer_percentage: percentage to boost/reduce mlo scoring 1831 * @mlo_5gl_5gh_mlsr: enable/disable 5GL+5GH MLSR 1832 * @epcs_capability: epcs capability enable or disable flag 1833 * @usr_disable_eht: user disable the eht for STA 1834 * @eht_disable_punct_in_us_lpi: Disable eht puncture in us lpi mode 1835 */ 1836 struct wlan_mlme_sta_cfg { 1837 uint32_t sta_keep_alive_period; 1838 uint32_t bss_max_idle_period; 1839 uint32_t tgt_gtx_usr_cfg; 1840 uint32_t pmkid_modes; 1841 uint32_t wait_cnf_timeout; 1842 uint32_t sta_miracast_mcc_rest_time; 1843 enum dot11p_mode dot11p_mode; 1844 uint8_t fils_max_chan_guard_time; 1845 uint8_t current_rssi; 1846 uint8_t deauth_retry_cnt; 1847 uint8_t sta_prefer_80mhz_over_160mhz; 1848 bool ignore_peer_erp_info; 1849 bool enable_5g_ebt; 1850 bool deauth_before_connection; 1851 bool enable_go_cts2self_for_sta; 1852 bool qcn_ie_support; 1853 bool single_tid; 1854 bool allow_tpc_from_ap; 1855 enum station_keepalive_method sta_keepalive_method; 1856 bool usr_disabled_roaming; 1857 bool usr_scan_probe_unicast_ra; 1858 #ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR 1859 host_event_wlan_status_payload_type event_payload; 1860 #endif 1861 uint16_t max_li_modulated_dtim_time_ms; 1862 #ifdef WLAN_FEATURE_11BE_MLO 1863 bool mlo_same_link_mld_address; 1864 uint8_t user_set_link_num; 1865 uint8_t mlo_support_link_num; 1866 uint8_t mlo_support_link_band; 1867 uint8_t mlo_max_simultaneous_links; 1868 int8_t mlo_prefer_percentage; 1869 bool mlo_5gl_5gh_mlsr; 1870 #endif 1871 #ifdef WLAN_FEATURE_11BE 1872 bool epcs_capability; 1873 bool usr_disable_eht; 1874 bool eht_disable_punct_in_us_lpi; 1875 #endif 1876 }; 1877 1878 /** 1879 * struct wlan_mlme_stats_cfg - MLME stats configuration items 1880 * @stats_periodic_display_time: time after which stats will be printed 1881 * @stats_link_speed_rssi_high: rssi link speed, high 1882 * @stats_link_speed_rssi_med: medium rssi link speed 1883 * @stats_link_speed_rssi_low: rssi link speed, low 1884 * @stats_report_max_link_speed_rssi: report speed limit 1885 */ 1886 struct wlan_mlme_stats_cfg { 1887 uint32_t stats_periodic_display_time; 1888 int stats_link_speed_rssi_high; 1889 int stats_link_speed_rssi_med; 1890 int stats_link_speed_rssi_low; 1891 uint32_t stats_report_max_link_speed_rssi; 1892 }; 1893 1894 /** 1895 * enum roaming_dfs_channel_type - Allow dfs channel in roam 1896 * @ROAMING_DFS_CHANNEL_DISABLED: Disallow dfs channel in roam 1897 * @ROAMING_DFS_CHANNEL_ENABLED_NORMAL: Allow dfs channel 1898 * @ROAMING_DFS_CHANNEL_ENABLED_ACTIVE: Allow dfs channel with active scan 1899 */ 1900 enum roaming_dfs_channel_type { 1901 ROAMING_DFS_CHANNEL_DISABLED, 1902 ROAMING_DFS_CHANNEL_ENABLED_NORMAL, 1903 ROAMING_DFS_CHANNEL_ENABLED_ACTIVE, 1904 }; 1905 1906 /** 1907 * struct bss_load_trigger - parameters related to bss load triggered roam 1908 * @enabled: flag to check if this trigger is enabled/disabled 1909 * @threshold: Bss load threshold value above which roaming should start 1910 * @sample_time: Time duration in milliseconds for which the bss load value 1911 * should be monitored 1912 * @rssi_threshold_6ghz: RSSI threshold of the current connected AP below which 1913 * roam should be triggered if bss load threshold exceeds the configured value. 1914 * This value is applicable only when we are connected in 6GHz band. 1915 * @rssi_threshold_5ghz: RSSI threshold of the current connected AP below which 1916 * roam should be triggered if bss load threshold exceeds the configured value. 1917 * This value is applicable only when we are connected in 5GHz band. 1918 * @rssi_threshold_24ghz: RSSI threshold of the current connected AP below which 1919 * roam should be triggered if bss load threshold exceeds the configured value. 1920 * This value is applicable only when we are connected in 2.4 GHz band. 1921 */ 1922 struct bss_load_trigger { 1923 bool enabled; 1924 uint32_t threshold; 1925 uint32_t sample_time; 1926 uint32_t rssi_threshold_6ghz; 1927 int32_t rssi_threshold_5ghz; 1928 int32_t rssi_threshold_24ghz; 1929 }; 1930 1931 /* 1932 * AKM suites supported by firmware for roaming 1933 */ 1934 #define AKM_FT_SAE 0 1935 #define AKM_FT_SUITEB_SHA384 1 1936 #define AKM_FT_FILS 2 1937 #define AKM_SAE 3 1938 #define AKM_OWE 4 1939 #define AKM_SUITEB 5 1940 #define AKM_SAE_EXT 6 1941 1942 #define LFR3_STA_ROAM_DISABLE_BY_P2P BIT(0) 1943 #define LFR3_STA_ROAM_DISABLE_BY_NAN BIT(1) 1944 1945 /** 1946 * struct fw_scan_channels - Channel details part of VDEV set PCL command 1947 * @num_channels: Number of channels 1948 * @freq: Channel Frequency list 1949 */ 1950 struct fw_scan_channels { 1951 uint8_t num_channels; 1952 uint32_t freq[NUM_CHANNELS]; 1953 }; 1954 1955 /** 1956 * struct wlan_mlme_lfr_cfg - MLME LMAC fast roaming config 1957 * @mawc_roam_enabled: Enable/Disable MAWC during roaming 1958 * @enable_fast_roam_in_concurrency: Enable LFR roaming on STA during 1959 * concurrency 1960 * @vendor_btm_param: Vendor WTC roam trigger parameters 1961 * @roam_rt_stats: Roam event stats vendor command parameters 1962 * @lfr3_roaming_offload: Enable/disable roam offload feature 1963 * @lfr3_dual_sta_roaming_enabled: Enable/Disable dual sta roaming offload 1964 * feature 1965 * @enable_self_bss_roam: enable roaming to connected BSSID 1966 * @enable_disconnect_roam_offload: enable disassoc/deauth roam scan. 1967 * @enable_idle_roam: flag to enable/disable idle roam in fw 1968 * @idle_roam_rssi_delta: rssi delta of connected ap which is used to 1969 * identify if the AP is idle or in motion 1970 * @idle_roam_inactive_time: Timeout value in seconds, above which the 1971 * connection is idle 1972 * @idle_data_packet_count: data packet count measured during inactive time, 1973 * below which the connection is idle. 1974 * @idle_roam_band: Bands on which idle roam scan is allowed 1975 * @idle_roam_min_rssi: Minimum rssi of connected AP to be considered for 1976 * idle roam trigger. 1977 * @enable_roam_reason_vsie: Enable/disable incluison of roam reason 1978 * vsie in Re(assoc) frame 1979 * @roam_trigger_bitmap: Bitmap of roaming triggers. 1980 * @sta_roam_disable: STA roaming disabled by interfaces 1981 * @roam_info_stats_num: STA roaming information cache number 1982 * @roam_high_rssi_delta: Delta change in high RSSI at which roam scan is 1983 * triggered in 2.4/5 GHz. 1984 * @early_stop_scan_enable: Set early stop scan 1985 * @enable_5g_band_pref: Enable preference for 5G from INI 1986 * @ese_enabled: Enable ESE feature 1987 * @lfr_enabled: Enable fast roaming 1988 * @mawc_enabled: Enable MAWC 1989 * @fast_transition_enabled: Enable fast transition 1990 * @wes_mode_enabled: Enable WES mode 1991 * @mawc_roam_traffic_threshold: Configure traffic threshold 1992 * @mawc_roam_ap_rssi_threshold: Best AP RSSI threshold 1993 * @mawc_roam_rssi_high_adjust: Adjust MAWC roam high RSSI 1994 * @mawc_roam_rssi_low_adjust: Adjust MAWC roam low RSSI 1995 * @roam_rssi_abs_threshold: The min RSSI of the candidate AP 1996 * @rssi_threshold_offset_5g: Lookup threshold offset for 5G band 1997 * @early_stop_scan_min_threshold: Set early stop scan min 1998 * @early_stop_scan_max_threshold: Set early stop scan max 1999 * @roam_dense_traffic_threshold: Dense traffic threshold 2000 * @roam_dense_rssi_thre_offset: Sets dense roam RSSI threshold diff 2001 * @roam_dense_min_aps: Sets minimum number of AP for dense roam 2002 * @roam_bg_scan_bad_rssi_threshold:RSSI threshold for background roam 2003 * @roam_bg_scan_client_bitmap: Bitmap used to identify the scan clients 2004 * @roam_bg_scan_bad_rssi_offset_2g:RSSI threshold offset for 2G to 5G roam 2005 * @roam_data_rssi_threshold_triggers: triggers of bad data RSSI threshold to 2006 * roam 2007 * @roam_data_rssi_threshold: Bad data RSSI threshold to roam 2008 * @rx_data_inactivity_time: Rx duration to check data RSSI 2009 * @adaptive_roamscan_dwell_mode: Sets dwell time adaptive mode 2010 * @per_roam_enable: To enabled/disable PER based roaming in FW 2011 * @per_roam_config_high_rate_th: Rate at which PER based roam will stop 2012 * @per_roam_config_low_rate_th: Rate at which PER based roam will start 2013 * @per_roam_config_rate_th_percent:Percentage at which FW will issue roam scan 2014 * @per_roam_rest_time: FW will wait once it issues a roam scan. 2015 * @per_roam_monitor_time: Min time to be considered as valid scenario 2016 * @per_roam_min_candidate_rssi: Min roamable AP RSSI for candidate selection 2017 * @lfr3_disallow_duration: Disallow duration before roaming 2018 * @lfr3_rssi_channel_penalization: RSSI penalization 2019 * @lfr3_num_disallowed_aps: Max number of AP's to maintain in LCA list 2020 * @rssi_boost_threshold_5g: Boost threshold above which 5 GHz is favored 2021 * @rssi_boost_factor_5g: Factor by which 5GHz RSSI is boosted 2022 * @max_rssi_boost_5g: Maximum boost that can be applied to 5G RSSI 2023 * @rssi_penalize_threshold_5g: Penalize thres above which 5G isn't favored 2024 * @rssi_penalize_factor_5g: Factor by which 5GHz RSSI is penalizeed 2025 * @max_rssi_penalize_5g: Max penalty that can be applied to 5G RSSI 2026 * @max_num_pre_auth: Configure max number of pre-auth 2027 * @roam_preauth_retry_count: Configure the max number of preauth retry 2028 * @roam_preauth_no_ack_timeout: Configure the no ack timeout period 2029 * @roam_rssi_diff: Enable roam based on rssi 2030 * @roam_rssi_diff_6ghz: RSSI diff value to be used for roaming to 6 GHz AP. 2031 * @bg_rssi_threshold: Background RSSI threshold 2032 * @roam_scan_offload_enabled: Enable Roam Scan Offload 2033 * @neighbor_scan_timer_period: Neighbor scan timer period 2034 * @neighbor_scan_min_timer_period: Min neighbor scan timer period 2035 * @neighbor_lookup_rssi_threshold: Neighbor lookup rssi threshold 2036 * @opportunistic_scan_threshold_diff: Set oppurtunistic threshold diff 2037 * @roam_rescan_rssi_diff: Sets RSSI for Scan trigger in firmware 2038 * @neighbor_scan_min_chan_time: Neighbor scan channel min time 2039 * @neighbor_scan_max_chan_time: Neighbor scan channel max time 2040 * @passive_max_channel_time: Passive scan channel max time 2041 * @neighbor_scan_results_refresh_period: Neighbor scan refresh period 2042 * @empty_scan_refresh_period: Empty scan refresh period 2043 * @roam_bmiss_first_bcnt: First beacon miss count 2044 * @roam_bmiss_final_bcnt: Final beacon miss count 2045 * @roam_beacon_rssi_weight: Beacon miss weight 2046 * @roaming_dfs_channel: Allow dfs channel in roam 2047 * @roam_scan_hi_rssi_maxcount: 5GHz maximum scan count 2048 * @roam_scan_hi_rssi_delta: RSSI Delta for scan trigger 2049 * @roam_scan_hi_rssi_delay: Minimum delay between 5GHz scans 2050 * @roam_scan_hi_rssi_ub: Upper bound after which 5GHz scan 2051 * @roam_prefer_5ghz: Prefer roaming to 5GHz Bss 2052 * @roam_intra_band: Prefer roaming within Band 2053 * @enable_adaptive_11r: Flag to check if adaptive 11r ini is enabled 2054 * @tgt_adaptive_11r_cap: Flag to check if target supports adaptive 11r 2055 * @enable_ft_im_roaming: Flag to enable/disable FT-IM roaming 2056 * @roam_scan_home_away_time: The home away time to firmware 2057 * @roam_scan_n_probes: The number of probes to be sent for firmware roaming 2058 * @delay_before_vdev_stop: Wait time for tx complete before vdev stop 2059 * @neighbor_scan_channel_list: Neighbor scan channel list 2060 * @neighbor_scan_channel_list_num: Neighbor scan channel list number 2061 * @enable_lfr_subnet_detection: Enable LFR3 subnet detection 2062 * @ho_delay_for_rx: Delay hand-off by this duration to receive 2063 * @min_delay_btw_roam_scans: Min duration 2064 * @roam_trigger_reason_bitmask: Contains roam_trigger_reasons 2065 * @enable_ftopen: Enable/disable FT open feature 2066 * @roam_force_rssi_trigger: Force RSSI trigger or not 2067 * @bss_load_trig: configuration of BSS load roam trigger 2068 * @roaming_scan_policy: Config roaming scan policy in fw 2069 * @roam_scan_inactivity_time: Device inactivity monitoring time in 2070 * milliseconds for which the device is considered to be inactive. 2071 * @roam_inactive_data_packet_count: Maximum allowed data packets count 2072 * during roam_scan_inactivity_time. 2073 * @fw_akm_bitmap: Supported Akm suites of firmware 2074 * @roam_full_scan_period: Idle period in seconds between two successive 2075 * full channel roam scans 2076 * @saved_freq_list: Valid channel list 2077 * @sae_single_pmk_feature_enabled: Contains value of ini 2078 * sae_single_pmk_feature_enabled 2079 * @rso_user_config: RSO user config 2080 * @enable_ft_over_ds: Enable FT over DS 2081 * @beaconloss_timeout_onwakeup: time in sec to configure FW BMISS event 2082 * during wakeup. 2083 * @beaconloss_timeout_onsleep: time in sec to configure FW BMISS event 2084 * during sleep. 2085 * @roam_ho_delay_config: Roam HO delay value 2086 * @exclude_rm_partial_scan_freq: Exclude the channels in roam full scan that 2087 * are already scanned as part of partial scan. 2088 * @roam_full_scan_6ghz_on_disc: Include the 6 GHz channels in roam full scan 2089 * only on prior discovery of any 6 GHz support in the environment. 2090 * @disconnect_on_nud_roam_invoke_fail: indicate whether disconnect ap when 2091 * roam invoke fail on nud. 2092 * @hs20_btm_offload_disable: indicate whether btm offload is enable/disable 2093 * for Hotspot 2.0 2094 */ 2095 struct wlan_mlme_lfr_cfg { 2096 bool mawc_roam_enabled; 2097 bool enable_fast_roam_in_concurrency; 2098 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 2099 struct wlan_cm_roam_vendor_btm_params vendor_btm_param; 2100 struct wlan_cm_roam_rt_stats roam_rt_stats; 2101 bool lfr3_roaming_offload; 2102 bool lfr3_dual_sta_roaming_enabled; 2103 bool enable_self_bss_roam; 2104 bool enable_disconnect_roam_offload; 2105 bool enable_idle_roam; 2106 uint32_t idle_roam_rssi_delta; 2107 uint32_t idle_roam_inactive_time; 2108 uint32_t idle_data_packet_count; 2109 uint32_t idle_roam_band; 2110 int32_t idle_roam_min_rssi; 2111 bool enable_roam_reason_vsie; 2112 uint32_t roam_trigger_bitmap; 2113 uint32_t sta_roam_disable; 2114 uint32_t roam_info_stats_num; 2115 uint8_t roam_high_rssi_delta; 2116 #endif 2117 bool early_stop_scan_enable; 2118 bool enable_5g_band_pref; 2119 #ifdef FEATURE_WLAN_ESE 2120 bool ese_enabled; 2121 #endif 2122 bool lfr_enabled; 2123 bool mawc_enabled; 2124 bool fast_transition_enabled; 2125 bool wes_mode_enabled; 2126 uint32_t mawc_roam_traffic_threshold; 2127 uint32_t mawc_roam_ap_rssi_threshold; 2128 uint8_t mawc_roam_rssi_high_adjust; 2129 uint8_t mawc_roam_rssi_low_adjust; 2130 uint32_t roam_rssi_abs_threshold; 2131 uint8_t rssi_threshold_offset_5g; 2132 int8_t early_stop_scan_min_threshold; 2133 int8_t early_stop_scan_max_threshold; 2134 uint32_t roam_dense_traffic_threshold; 2135 uint32_t roam_dense_rssi_thre_offset; 2136 uint32_t roam_dense_min_aps; 2137 uint32_t roam_bg_scan_bad_rssi_threshold; 2138 uint32_t roam_bg_scan_client_bitmap; 2139 uint32_t roam_bg_scan_bad_rssi_offset_2g; 2140 uint32_t roam_data_rssi_threshold_triggers; 2141 int32_t roam_data_rssi_threshold; 2142 uint32_t rx_data_inactivity_time; 2143 uint32_t adaptive_roamscan_dwell_mode; 2144 uint32_t per_roam_enable; 2145 uint32_t per_roam_config_high_rate_th; 2146 uint32_t per_roam_config_low_rate_th; 2147 uint32_t per_roam_config_rate_th_percent; 2148 uint32_t per_roam_rest_time; 2149 uint32_t per_roam_monitor_time; 2150 uint32_t per_roam_min_candidate_rssi; 2151 uint32_t lfr3_disallow_duration; 2152 uint32_t lfr3_rssi_channel_penalization; 2153 uint32_t lfr3_num_disallowed_aps; 2154 uint32_t rssi_boost_threshold_5g; 2155 uint32_t rssi_boost_factor_5g; 2156 uint32_t max_rssi_boost_5g; 2157 uint32_t rssi_penalize_threshold_5g; 2158 uint32_t rssi_penalize_factor_5g; 2159 uint32_t max_rssi_penalize_5g; 2160 uint32_t max_num_pre_auth; 2161 uint32_t roam_preauth_retry_count; 2162 uint32_t roam_preauth_no_ack_timeout; 2163 uint8_t roam_rssi_diff; 2164 uint8_t roam_rssi_diff_6ghz; 2165 uint8_t bg_rssi_threshold; 2166 bool roam_scan_offload_enabled; 2167 uint32_t neighbor_scan_timer_period; 2168 uint32_t neighbor_scan_min_timer_period; 2169 uint32_t neighbor_lookup_rssi_threshold; 2170 uint32_t opportunistic_scan_threshold_diff; 2171 uint32_t roam_rescan_rssi_diff; 2172 uint16_t neighbor_scan_min_chan_time; 2173 uint16_t neighbor_scan_max_chan_time; 2174 uint32_t passive_max_channel_time; 2175 uint32_t neighbor_scan_results_refresh_period; 2176 uint32_t empty_scan_refresh_period; 2177 uint8_t roam_bmiss_first_bcnt; 2178 uint8_t roam_bmiss_final_bcnt; 2179 enum roaming_dfs_channel_type roaming_dfs_channel; 2180 uint32_t roam_scan_hi_rssi_maxcount; 2181 uint32_t roam_scan_hi_rssi_delta; 2182 uint32_t roam_scan_hi_rssi_delay; 2183 uint32_t roam_scan_hi_rssi_ub; 2184 bool roam_prefer_5ghz; 2185 bool roam_intra_band; 2186 #ifdef WLAN_ADAPTIVE_11R 2187 bool enable_adaptive_11r; 2188 bool tgt_adaptive_11r_cap; 2189 #endif 2190 bool enable_ft_im_roaming; 2191 uint16_t roam_scan_home_away_time; 2192 uint32_t roam_scan_n_probes; 2193 uint8_t delay_before_vdev_stop; 2194 uint8_t neighbor_scan_channel_list[CFG_VALID_CHANNEL_LIST_LEN]; 2195 uint8_t neighbor_scan_channel_list_num; 2196 #ifdef FEATURE_LFR_SUBNET_DETECTION 2197 bool enable_lfr_subnet_detection; 2198 #endif 2199 uint8_t ho_delay_for_rx; 2200 uint8_t min_delay_btw_roam_scans; 2201 uint32_t roam_trigger_reason_bitmask; 2202 bool enable_ftopen; 2203 bool roam_force_rssi_trigger; 2204 struct bss_load_trigger bss_load_trig; 2205 bool roaming_scan_policy; 2206 uint32_t roam_scan_inactivity_time; 2207 uint32_t roam_inactive_data_packet_count; 2208 uint32_t fw_akm_bitmap; 2209 uint32_t roam_full_scan_period; 2210 struct fw_scan_channels saved_freq_list; 2211 #if defined(WLAN_SAE_SINGLE_PMK) && defined(WLAN_FEATURE_ROAM_OFFLOAD) 2212 bool sae_single_pmk_feature_enabled; 2213 #endif 2214 struct rso_config_params rso_user_config; 2215 bool enable_ft_over_ds; 2216 uint8_t beaconloss_timeout_onwakeup; 2217 uint8_t beaconloss_timeout_onsleep; 2218 uint16_t roam_ho_delay_config; 2219 uint8_t exclude_rm_partial_scan_freq; 2220 uint8_t roam_full_scan_6ghz_on_disc; 2221 bool disconnect_on_nud_roam_invoke_fail; 2222 bool hs20_btm_offload_disable; 2223 }; 2224 2225 /** 2226 * struct wlan_mlme_wmm_config - WMM configuration 2227 * @wmm_mode: Enable WMM feature 2228 * @b80211e_is_enabled: Enable 802.11e feature 2229 * @uapsd_mask: what ACs to setup U-APSD for at assoc 2230 */ 2231 struct wlan_mlme_wmm_config { 2232 uint8_t wmm_mode; 2233 bool b80211e_is_enabled; 2234 uint8_t uapsd_mask; 2235 }; 2236 2237 /** 2238 * struct wlan_mlme_wmm_tspec_element - Default TSPEC parameters 2239 * from the wmm spec 2240 * @inactivity_intv: inactivity_interval as per wmm spec 2241 * @burst_size_def: TS burst size 2242 * @ts_ack_policy: TS Info ACK policy 2243 * @ts_acm_is_off: ACM is off for AC 2244 */ 2245 struct wlan_mlme_wmm_tspec_element { 2246 #ifdef FEATURE_WLAN_ESE 2247 uint32_t inactivity_intv; 2248 #endif 2249 bool burst_size_def; 2250 enum mlme_ts_info_ack_policy ts_ack_policy; 2251 bool ts_acm_is_off; 2252 }; 2253 2254 /** 2255 * struct wlan_mlme_wmm_ac_vo - Default TSPEC parameters 2256 * for AC_VO 2257 * @dir_ac_vo: TSPEC direction for VO 2258 * @nom_msdu_size_ac_vo: normal MSDU size for VO 2259 * @mean_data_rate_ac_vo: mean data rate for VO 2260 * @min_phy_rate_ac_vo: min PHY rate for VO 2261 * @sba_ac_vo: surplus bandwidth allowance for VO 2262 * @uapsd_vo_srv_intv: Uapsd service interval for voice 2263 * @uapsd_vo_sus_intv: Uapsd suspension interval for voice 2264 */ 2265 struct wlan_mlme_wmm_ac_vo { 2266 uint8_t dir_ac_vo; 2267 uint16_t nom_msdu_size_ac_vo; 2268 uint32_t mean_data_rate_ac_vo; 2269 uint32_t min_phy_rate_ac_vo; 2270 uint16_t sba_ac_vo; 2271 uint32_t uapsd_vo_srv_intv; 2272 uint32_t uapsd_vo_sus_intv; 2273 }; 2274 2275 /** 2276 * struct wlan_mlme_wmm_ac_vi - Default TSPEC parameters 2277 * for AC_VI 2278 * @dir_ac_vi: TSPEC direction for VI 2279 * @nom_msdu_size_ac_vi: normal MSDU size for VI 2280 * @mean_data_rate_ac_vi: mean data rate for VI 2281 * @min_phy_rate_ac_vi: min PHY rate for VI 2282 * @sba_ac_vi: surplus bandwidth allowance for VI 2283 * @uapsd_vi_srv_intv: Uapsd service interval for VI 2284 * @uapsd_vi_sus_intv: Uapsd suspension interval for VI 2285 */ 2286 struct wlan_mlme_wmm_ac_vi { 2287 uint8_t dir_ac_vi; 2288 uint16_t nom_msdu_size_ac_vi; 2289 uint32_t mean_data_rate_ac_vi; 2290 uint32_t min_phy_rate_ac_vi; 2291 uint16_t sba_ac_vi; 2292 uint32_t uapsd_vi_srv_intv; 2293 uint32_t uapsd_vi_sus_intv; 2294 }; 2295 2296 /** 2297 * struct wlan_mlme_wmm_ac_be - Default TSPEC parameters 2298 * for AC_BE 2299 * @dir_ac_be: TSPEC direction for BE 2300 * @nom_msdu_size_ac_be: normal MSDU size for BE 2301 * @mean_data_rate_ac_be: mean data rate for BE 2302 * @min_phy_rate_ac_be: min PHY rate for BE 2303 * @sba_ac_be: surplus bandwidth allowance for BE 2304 * @uapsd_be_srv_intv: Uapsd service interval for BE 2305 * @uapsd_be_sus_intv: Uapsd suspension interval for BE 2306 */ 2307 struct wlan_mlme_wmm_ac_be { 2308 uint8_t dir_ac_be; 2309 uint16_t nom_msdu_size_ac_be; 2310 uint32_t mean_data_rate_ac_be; 2311 uint32_t min_phy_rate_ac_be; 2312 uint16_t sba_ac_be; 2313 uint32_t uapsd_be_srv_intv; 2314 uint32_t uapsd_be_sus_intv; 2315 2316 }; 2317 2318 /** 2319 * struct wlan_mlme_wmm_ac_bk - Default TSPEC parameters 2320 * for AC_BK 2321 * @dir_ac_bk: TSPEC direction for BK 2322 * @nom_msdu_size_ac_bk: normal MSDU size for BK 2323 * @mean_data_rate_ac_bk: mean data rate for BK 2324 * @min_phy_rate_ac_bk: min PHY rate for BK 2325 * @sba_ac_bk: surplus bandwidth allowance for BK 2326 * @uapsd_bk_srv_intv: Uapsd service interval for BK 2327 * @uapsd_bk_sus_intv: Uapsd suspension interval for BK 2328 */ 2329 struct wlan_mlme_wmm_ac_bk { 2330 uint8_t dir_ac_bk; 2331 uint16_t nom_msdu_size_ac_bk; 2332 uint32_t mean_data_rate_ac_bk; 2333 uint32_t min_phy_rate_ac_bk; 2334 uint16_t sba_ac_bk; 2335 uint32_t uapsd_bk_srv_intv; 2336 uint32_t uapsd_bk_sus_intv; 2337 }; 2338 2339 /** 2340 * struct wlan_mlme_wmm_params - WMM CFG Items 2341 * @qos_enabled: AP is enabled with 11E 2342 * @wme_enabled: AP is enabled with WMM 2343 * @max_sp_length: Maximum SP Length 2344 * @wsm_enabled: AP is enabled with WSM 2345 * @edca_profile: WMM Edca profile 2346 * @wmm_config: WMM configuration 2347 * @wmm_tspec_element: Default TSPEC parameters 2348 * @ac_vo: Default TSPEC parameters for AC_VO 2349 * @ac_vi: Default TSPEC parameters for AC_VI 2350 * @ac_be: Default TSPEC parameters for AC_BE 2351 * @ac_bk: Default TSPEC parameters for AC_BK 2352 * @delayed_trigger_frm_int: delay int(in ms) of UAPSD auto trigger 2353 */ 2354 struct wlan_mlme_wmm_params { 2355 bool qos_enabled; 2356 bool wme_enabled; 2357 uint8_t max_sp_length; 2358 bool wsm_enabled; 2359 uint32_t edca_profile; 2360 struct wlan_mlme_wmm_config wmm_config; 2361 struct wlan_mlme_wmm_tspec_element wmm_tspec_element; 2362 struct wlan_mlme_wmm_ac_vo ac_vo; 2363 struct wlan_mlme_wmm_ac_vi ac_vi; 2364 struct wlan_mlme_wmm_ac_be ac_be; 2365 struct wlan_mlme_wmm_ac_bk ac_bk; 2366 uint32_t delayed_trigger_frm_int; 2367 }; 2368 2369 /** 2370 * struct wlan_mlme_weight_config - weight params to 2371 * calculate best candidate 2372 * @rssi_weightage: RSSI weightage 2373 * @ht_caps_weightage: HT caps weightage 2374 * @vht_caps_weightage: VHT caps weightage 2375 * @he_caps_weightage: HE caps weightage 2376 * @chan_width_weightage: Channel width weightage 2377 * @chan_band_weightage: Channel band weightage 2378 * @nss_weightage: NSS weightage 2379 * @beamforming_cap_weightage: Beamforming caps weightage 2380 * @pcl_weightage: PCL weightage 2381 * @channel_congestion_weightage: channel congestion weightage 2382 * @oce_wan_weightage: OCE WAN metrics weightage 2383 * @oce_ap_tx_pwr_weightage: weightage based on ap tx power 2384 * @oce_subnet_id_weightage: weightage based on subnet id 2385 * @sae_pk_ap_weightage:SAE-PK AP weightage 2386 */ 2387 struct wlan_mlme_weight_config { 2388 uint8_t rssi_weightage; 2389 uint8_t ht_caps_weightage; 2390 uint8_t vht_caps_weightage; 2391 uint8_t he_caps_weightage; 2392 uint8_t chan_width_weightage; 2393 uint8_t chan_band_weightage; 2394 uint8_t nss_weightage; 2395 uint8_t beamforming_cap_weightage; 2396 uint8_t pcl_weightage; 2397 uint8_t channel_congestion_weightage; 2398 uint8_t oce_wan_weightage; 2399 uint8_t oce_ap_tx_pwr_weightage; 2400 uint8_t oce_subnet_id_weightage; 2401 uint8_t sae_pk_ap_weightage; 2402 }; 2403 2404 /** 2405 * struct wlan_mlme_rssi_cfg_score - RSSI params to 2406 * calculate best candidate 2407 * @best_rssi_threshold: Best RSSI threshold 2408 * @good_rssi_threshold: Good RSSI threshold 2409 * @bad_rssi_threshold: Bad RSSI threshold 2410 * @good_rssi_pcnt: Good RSSI Percentage 2411 * @bad_rssi_pcnt: Bad RSSI Percentage 2412 * @good_rssi_bucket_size: Good RSSI Bucket Size 2413 * @bad_rssi_bucket_size: Bad RSSI Bucket Size 2414 * @rssi_pref_5g_rssi_thresh: Preferred 5G RSSI threshold 2415 */ 2416 struct wlan_mlme_rssi_cfg_score { 2417 uint32_t best_rssi_threshold; 2418 uint32_t good_rssi_threshold; 2419 uint32_t bad_rssi_threshold; 2420 uint32_t good_rssi_pcnt; 2421 uint32_t bad_rssi_pcnt; 2422 uint32_t good_rssi_bucket_size; 2423 uint32_t bad_rssi_bucket_size; 2424 uint32_t rssi_pref_5g_rssi_thresh; 2425 }; 2426 2427 /** 2428 * struct wlan_mlme_roam_scoring_cfg - MLME roam related scoring config 2429 * @enable_scoring_for_roam: Enable/disable BSS Scoring for Roaming 2430 * @roam_trigger_bitmap: bitmap for various roam triggers 2431 * @roam_score_delta: percentage delta in roam score 2432 * @apsd_enabled: Enable automatic power save delivery 2433 * @min_roam_score_delta: Minimum difference between connected AP's and 2434 * candidate AP's roam score to start roaming. 2435 */ 2436 struct wlan_mlme_roam_scoring_cfg { 2437 bool enable_scoring_for_roam; 2438 uint32_t roam_trigger_bitmap; 2439 uint32_t roam_score_delta; 2440 bool apsd_enabled; 2441 uint32_t min_roam_score_delta; 2442 }; 2443 2444 /* struct wlan_mlme_threshold - Threshold related config items 2445 * @rts_threshold: set rts threshold 2446 * @frag_threshold: set fragmentation threshold 2447 */ 2448 struct wlan_mlme_threshold { 2449 uint32_t rts_threshold; 2450 uint32_t frag_threshold; 2451 }; 2452 2453 /* struct mlme_max_tx_power_24 - power related items 2454 * @max_len: max length of string 2455 * @len: actual len of string 2456 * @data: Data in string format 2457 */ 2458 struct mlme_max_tx_power_24 { 2459 qdf_size_t max_len; 2460 qdf_size_t len; 2461 uint8_t data[CFG_MAX_TX_POWER_2_4_LEN]; 2462 }; 2463 2464 /* struct mlme_max_tx_power_5 - power related items 2465 * @max_len: max length of string 2466 * @len: actual len of string 2467 * @data: Data in string format 2468 */ 2469 struct mlme_max_tx_power_5 { 2470 qdf_size_t max_len; 2471 qdf_size_t len; 2472 uint8_t data[CFG_MAX_TX_POWER_5_LEN]; 2473 }; 2474 2475 /* struct mlme_power_usage - power related items 2476 * @max_len: max length of string 2477 * @len: actual len of string 2478 * @data: Data in string format 2479 */ 2480 struct mlme_power_usage { 2481 qdf_size_t max_len; 2482 qdf_size_t len; 2483 char data[CFG_POWER_USAGE_MAX_LEN]; 2484 }; 2485 2486 /** 2487 * struct wlan_mlme_power - power related config items 2488 * @max_tx_power_24: max power Tx for 2.4 ghz, this is based on frequencies 2489 * @max_tx_power_5: max power Tx for 5 ghz, this is based on frequencies 2490 * @max_tx_power_24_chan: max power Tx for 2.4 ghz, this is based on channel 2491 * numbers, this is added to parse the ini values to maintain the backward 2492 * compatibility, these channel numbers are converted to frequencies and copied 2493 * to max_tx_power_24 structure, once this conversion is done this structure 2494 * should not be used. 2495 * @max_tx_power_5_chan: max power Tx for 5 ghz, this is based on channel 2496 * numbers, this is added to parse the ini values to maintain the backward 2497 * compatibility, these channel numbers are converted to frequencies and copied 2498 * to max_tx_power_24 structure, once this conversion is done this structure 2499 * should not be used. 2500 * @power_usage: power usage mode, min, max, mod 2501 * @tx_power_2g: limit tx power in 2.4 ghz 2502 * @tx_power_5g: limit tx power in 5 ghz 2503 * @current_tx_power_level: current tx power level 2504 * @local_power_constraint: local power constraint 2505 * @skip_tpe: option to not consider TPE values in 2.4G/5G bands 2506 */ 2507 struct wlan_mlme_power { 2508 struct mlme_max_tx_power_24 max_tx_power_24; 2509 struct mlme_max_tx_power_5 max_tx_power_5; 2510 struct mlme_max_tx_power_24 max_tx_power_24_chan; 2511 struct mlme_max_tx_power_5 max_tx_power_5_chan; 2512 struct mlme_power_usage power_usage; 2513 uint8_t tx_power_2g; 2514 uint8_t tx_power_5g; 2515 uint8_t current_tx_power_level; 2516 uint8_t local_power_constraint; 2517 bool skip_tpe; 2518 }; 2519 2520 /** 2521 * struct wlan_mlme_timeout - mlme timeout related config items 2522 * @join_failure_timeout: join failure timeout (can be changed in connect req) 2523 * @probe_req_retry_timeout: Probe req retry timeout during join time 2524 * @join_failure_timeout_ori: original value of above join timeout 2525 * @auth_failure_timeout: authenticate failure timeout 2526 * @auth_rsp_timeout: authenticate response timeout 2527 * @assoc_failure_timeout: assoc failure timeout 2528 * @reassoc_failure_timeout: re-assoc failure timeout 2529 * @olbc_detect_timeout: OLBC detect timeout 2530 * @addts_rsp_timeout: ADDTS rsp timeout value 2531 * @heart_beat_threshold: Heart beat threshold 2532 * @ap_keep_alive_timeout: AP keep alive timeout value 2533 * @ap_link_monitor_timeout: AP link monitor timeout value 2534 * @wmi_wq_watchdog_timeout: timeout period for wmi watchdog bite 2535 * @sae_auth_failure_timeout: SAE authentication failure timeout 2536 */ 2537 struct wlan_mlme_timeout { 2538 uint32_t join_failure_timeout; 2539 uint32_t probe_req_retry_timeout; 2540 uint32_t join_failure_timeout_ori; 2541 uint32_t auth_failure_timeout; 2542 uint32_t auth_rsp_timeout; 2543 uint32_t assoc_failure_timeout; 2544 uint32_t reassoc_failure_timeout; 2545 uint32_t olbc_detect_timeout; 2546 uint32_t addts_rsp_timeout; 2547 uint32_t heart_beat_threshold; 2548 uint32_t ap_keep_alive_timeout; 2549 uint32_t ap_link_monitor_timeout; 2550 uint32_t wmi_wq_watchdog_timeout; 2551 uint32_t sae_auth_failure_timeout; 2552 }; 2553 2554 /** 2555 * struct wlan_mlme_oce - OCE related config items 2556 * @enable_bcast_probe_rsp: enable broadcast probe response 2557 * @oce_sta_enabled: enable/disable oce feature for sta 2558 * @oce_sap_enabled: enable/disable oce feature for sap 2559 * @fils_enabled: enable/disable fils support 2560 * @feature_bitmap: oce feature bitmap 2561 * 2562 */ 2563 struct wlan_mlme_oce { 2564 bool enable_bcast_probe_rsp; 2565 bool oce_sta_enabled; 2566 bool oce_sap_enabled; 2567 bool fils_enabled; 2568 uint8_t feature_bitmap; 2569 }; 2570 2571 /** 2572 * enum wep_key_id - values passed to get/set wep default keys 2573 * @MLME_WEP_DEFAULT_KEY_1: wep default key 1 2574 * @MLME_WEP_DEFAULT_KEY_2: wep default key 2 2575 * @MLME_WEP_DEFAULT_KEY_3: wep default key 3 2576 * @MLME_WEP_DEFAULT_KEY_4: wep default key 4 2577 */ 2578 enum wep_key_id { 2579 MLME_WEP_DEFAULT_KEY_1 = 0, 2580 MLME_WEP_DEFAULT_KEY_2, 2581 MLME_WEP_DEFAULT_KEY_3, 2582 MLME_WEP_DEFAULT_KEY_4 2583 }; 2584 2585 /** 2586 * struct wlan_mlme_wep_cfg - WEP related configs 2587 * @is_privacy_enabled: Flag to check if encryption is enabled 2588 * @is_shared_key_auth: Flag to check if the auth type is shared key 2589 * @is_auth_open_system: Flag to check if the auth type is open 2590 * @auth_type: Authentication type value 2591 * @wep_default_key_id: Default WEP key id 2592 */ 2593 struct wlan_mlme_wep_cfg { 2594 bool is_privacy_enabled; 2595 bool is_shared_key_auth; 2596 bool is_auth_open_system; 2597 uint8_t auth_type; 2598 uint8_t wep_default_key_id; 2599 }; 2600 2601 /** 2602 * struct wlan_mlme_wifi_pos_cfg - WIFI POS configs 2603 * @fine_time_meas_cap: fine timing measurement capability information 2604 * @oem_6g_support_disable: oem is 6Ghz disabled if set 2605 */ 2606 struct wlan_mlme_wifi_pos_cfg { 2607 uint32_t fine_time_meas_cap; 2608 bool oem_6g_support_disable; 2609 }; 2610 2611 #define MLME_SET_BIT(value, bit_offset) ((value) |= (1 << (bit_offset))) 2612 #define MLME_CLEAR_BIT(value, bit_offset) ((value) &= ~(1 << (bit_offset))) 2613 2614 /* Mask to check if BTM offload is enabled/disabled*/ 2615 #define BTM_OFFLOAD_ENABLED_MASK 0x01 2616 2617 #define BTM_OFFLOAD_CONFIG_BIT_0 0 2618 #define BTM_OFFLOAD_CONFIG_BIT_8 8 2619 #define BTM_OFFLOAD_CONFIG_BIT_7 7 2620 2621 /** 2622 * struct wlan_mlme_btm - BTM related configs 2623 * @prefer_btm_query: flag to prefer btm query over 11k 2624 * @abridge_flag: set this flag to enable firmware to sort candidates based on 2625 * roam score rather than selecting preferred APs. 2626 * @btm_offload_config: configure btm offload 2627 * @btm_solicited_timeout: configure timeout value for waiting BTM request 2628 * @btm_max_attempt_cnt: configure maximum attempt for sending BTM query to ESS 2629 * @btm_sticky_time: configure Stick time after roaming to new AP by BTM 2630 * @rct_validity_timer: Timeout values for roam cache table entries 2631 * @disassoc_timer_threshold: Disassociation timeout till which roam scan need 2632 * not be triggered 2633 * @btm_query_bitmask: Bitmask to send BTM query with candidate list on 2634 * various roam 2635 * @btm_trig_min_candidate_score: Minimum score to consider the AP as candidate 2636 * when the roam trigger is BTM. 2637 */ 2638 struct wlan_mlme_btm { 2639 bool prefer_btm_query; 2640 bool abridge_flag; 2641 uint32_t btm_offload_config; 2642 uint32_t btm_solicited_timeout; 2643 uint32_t btm_max_attempt_cnt; 2644 uint32_t btm_sticky_time; 2645 uint32_t rct_validity_timer; 2646 uint32_t disassoc_timer_threshold; 2647 uint32_t btm_query_bitmask; 2648 uint32_t btm_trig_min_candidate_score; 2649 }; 2650 2651 /** 2652 * struct wlan_mlme_fe_wlm - WLM related configs 2653 * @latency_enable: Flag to check if latency is enabled 2654 * @latency_reset: Flag to check if latency reset is enabled 2655 * @latency_level: WLM latency level 2656 * @latency_flags: WLM latency flags setting 2657 * @latency_host_flags: WLM latency host flags setting 2658 * @multi_client_ll_support: To check whether host support multi client feature 2659 */ 2660 struct wlan_mlme_fe_wlm { 2661 bool latency_enable; 2662 bool latency_reset; 2663 uint8_t latency_level; 2664 uint32_t latency_flags[MLME_NUM_WLM_LATENCY_LEVEL]; 2665 uint32_t latency_host_flags[MLME_NUM_WLM_LATENCY_LEVEL]; 2666 #ifdef MULTI_CLIENT_LL_SUPPORT 2667 bool multi_client_ll_support; 2668 #endif 2669 }; 2670 2671 /** 2672 * struct wlan_mlme_fe_rrm - RRM related configs 2673 * @rrm_enabled: Flag to check if RRM is enabled for STA 2674 * @sap_rrm_enabled: Flag to check if RRM is enabled for SAP 2675 * @rrm_rand_interval: RRM randomization interval 2676 * @rm_capability: RM enabled capabilities IE 2677 */ 2678 struct wlan_mlme_fe_rrm { 2679 bool rrm_enabled; 2680 bool sap_rrm_enabled; 2681 uint8_t rrm_rand_interval; 2682 uint8_t rm_capability[MLME_RMENABLEDCAP_MAX_LEN]; 2683 }; 2684 2685 #ifdef MWS_COEX 2686 /** 2687 * struct wlan_mlme_mwc - MWC related configs 2688 * @mws_coex_4g_quick_tdm: bitmap to set mws-coex 5g-nr power limit 2689 * @mws_coex_5g_nr_pwr_limit: bitmap to set mws-coex 5g-nr power limit 2690 * @mws_coex_pcc_channel_avoid_delay: PCC avoidance delay in seconds 2691 * @mws_coex_scc_channel_avoid_delay: SCC avoidance delay in seconds 2692 **/ 2693 struct wlan_mlme_mwc { 2694 uint32_t mws_coex_4g_quick_tdm; 2695 uint32_t mws_coex_5g_nr_pwr_limit; 2696 uint32_t mws_coex_pcc_channel_avoid_delay; 2697 uint32_t mws_coex_scc_channel_avoid_delay; 2698 }; 2699 #else 2700 struct wlan_mlme_mwc { 2701 }; 2702 #endif 2703 2704 /** 2705 * enum mlme_reg_srd_master_modes - Bitmap of SRD master modes supported 2706 * @MLME_SRD_MASTER_MODE_SAP: SRD master mode for SAP 2707 * @MLME_SRD_MASTER_MODE_P2P_GO: SRD master mode for P2P-GO 2708 * @MLME_SRD_MASTER_MODE_NAN: SRD master mode for NAN 2709 */ 2710 enum mlme_reg_srd_master_modes { 2711 MLME_SRD_MASTER_MODE_SAP = 1, 2712 MLME_SRD_MASTER_MODE_P2P_GO = 2, 2713 MLME_SRD_MASTER_MODE_NAN = 4, 2714 }; 2715 2716 /** 2717 * struct wlan_mlme_reg - REG related configs 2718 * @self_gen_frm_pwr: self-generated frame power in tx chain mask 2719 * for CCK rates 2720 * @etsi_srd_chan_in_master_mode: etsi srd chan in master mode 2721 * @fcc_5dot9_ghz_chan_in_master_mode: fcc 5.9 GHz chan in master mode 2722 * @restart_beaconing_on_ch_avoid: restart beaconing on ch avoid 2723 * @indoor_channel_support: indoor channel support 2724 * @scan_11d_interval: scan 11d interval 2725 * @valid_channel_freq_list: array for valid channel list 2726 * @valid_channel_list_num: valid channel list number 2727 * @enable_11d_in_world_mode: Whether to enable 11d scan in world mode or not 2728 * @avoid_acs_freq_list: List of the frequencies which need to be avoided 2729 * during acs 2730 * @avoid_acs_freq_list_num: Number of the frequencies to be avoided during acs 2731 * @ignore_fw_reg_offload_ind: Ignore fw regulatory offload indication 2732 * @enable_pending_chan_list_req: enables/disables scan channel 2733 * list command to FW till the current scan is complete. 2734 * @retain_nol_across_regdmn_update: Retain the NOL list across the regdomain. 2735 * @enable_nan_on_indoor_channels: Enable nan on Indoor channels 2736 * @enable_6ghz_sp_pwrmode_supp: Enable 6 GHz SP mode support 2737 * @afc_disable_timer_check: Disable AFC timer check 2738 * @afc_disable_request_id_check: Disable AFC request id check 2739 * @is_afc_reg_noaction: Whether no action to AFC power event 2740 * @coex_unsafe_chan_nb_user_prefer: Honor coex unsafe freq event from firmware 2741 * or not 2742 * @coex_unsafe_chan_reg_disable: To disable reg channels for received coex 2743 * unsafe channels list 2744 */ 2745 struct wlan_mlme_reg { 2746 uint32_t self_gen_frm_pwr; 2747 uint8_t etsi_srd_chan_in_master_mode; 2748 bool fcc_5dot9_ghz_chan_in_master_mode; 2749 enum restart_beaconing_on_ch_avoid_rule 2750 restart_beaconing_on_ch_avoid; 2751 bool indoor_channel_support; 2752 uint32_t scan_11d_interval; 2753 uint32_t valid_channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN]; 2754 uint32_t valid_channel_list_num; 2755 bool enable_11d_in_world_mode; 2756 #ifdef SAP_AVOID_ACS_FREQ_LIST 2757 uint16_t avoid_acs_freq_list[CFG_VALID_CHANNEL_LIST_LEN]; 2758 uint8_t avoid_acs_freq_list_num; 2759 #endif 2760 bool ignore_fw_reg_offload_ind; 2761 bool enable_pending_chan_list_req; 2762 bool retain_nol_across_regdmn_update; 2763 bool enable_nan_on_indoor_channels; 2764 #if defined(CONFIG_AFC_SUPPORT) && defined(CONFIG_BAND_6GHZ) 2765 bool enable_6ghz_sp_pwrmode_supp; 2766 bool afc_disable_timer_check; 2767 bool afc_disable_request_id_check; 2768 bool is_afc_reg_noaction; 2769 #endif 2770 #ifdef FEATURE_WLAN_CH_AVOID_EXT 2771 uint32_t coex_unsafe_chan_nb_user_prefer; 2772 bool coex_unsafe_chan_reg_disable; 2773 #endif 2774 }; 2775 2776 #define IOT_AGGR_INFO_MAX_NUM 32 2777 2778 /** 2779 * struct wlan_iot_aggr - IOT related AGGR rule 2780 * 2781 * @oui: OUI for the rule 2782 * @oui_len: length of the OUI 2783 * @ampdu_sz: max aggregation size in no. of MPDUs 2784 * @amsdu_sz: max aggregation size in no. of MSDUs 2785 */ 2786 struct wlan_iot_aggr { 2787 uint8_t oui[OUI_LENGTH]; 2788 uint32_t oui_len; 2789 uint32_t ampdu_sz; 2790 uint32_t amsdu_sz; 2791 }; 2792 2793 /** 2794 * struct wlan_mlme_iot - IOT related CFG Items 2795 * 2796 * @aggr: aggr rules 2797 * @aggr_num: number of the configured aggr rules 2798 */ 2799 struct wlan_mlme_iot { 2800 struct wlan_iot_aggr aggr[IOT_AGGR_INFO_MAX_NUM]; 2801 uint32_t aggr_num; 2802 }; 2803 2804 /** 2805 * struct wlan_mlme_cfg - MLME config items 2806 * @chainmask_cfg: VHT chainmask related cfg items 2807 * @edca_params: edca related CFG items 2808 * @gen: Generic CFG items 2809 * @ht_caps: HT related CFG Items 2810 * @he_caps: HE related cfg items 2811 * @eht_caps: EHT related cfg items 2812 * @lfr: LFR related CFG Items 2813 * @ibss: IBSS related CFG items 2814 * @obss_ht40:obss ht40 CFG Items 2815 * @mbo_cfg: Multiband Operation related CFG items 2816 * @vht_caps: VHT related CFG Items 2817 * @qos_mlme_params: QOS CFG Items 2818 * @rates: Rates related cfg items 2819 * @product_details: product details related CFG Items 2820 * @dfs_cfg: DFS related CFG Items 2821 * @sap_protection_cfg: SAP erp protection related CFG items 2822 * @sap_cfg: sap CFG items 2823 * @nss_chains_ini_cfg: Per vdev nss, chains related CFG items 2824 * @sta: sta CFG Items 2825 * @stats: stats CFG Items 2826 * @roam_scoring: BSS Scoring related CFG Items 2827 * @oce: OCE related CFG items 2828 * @threshold: threshold related cfg items 2829 * @timeouts: mlme timeout related CFG items 2830 * @twt_cfg: TWT CFG Items 2831 * @power: power related items 2832 * @acs: ACS related CFG items 2833 * @feature_flags: Feature flag config items 2834 * @ps_params: Powersave related ini configs 2835 * @wep_params: WEP related config items 2836 * @wifi_pos_cfg: WIFI POS config 2837 * @wmm_params: WMM related CFG & INI Items 2838 * @wps_params: WPS related CFG itmes 2839 * @btm: BTM related CFG itmes 2840 * @wlm_config: WLM related CFG items 2841 * @rrm_config: RRM related CFG items 2842 * @mwc: MWC related CFG items 2843 * @dot11_mode: dot11 mode supported 2844 * @reg: REG related CFG itmes 2845 * @trig_score_delta: Roam score delta value for various roam triggers 2846 * @trig_min_rssi: Expected minimum RSSI value of candidate AP for 2847 * various roam triggers 2848 * @ratemask_cfg: ratemask configuration 2849 * @iot: IOT related CFG items 2850 * @connection_roaming_ini_flag: To indicate whether connection_roaming related 2851 * ini file is present or not. 2852 * @eml_cap: EML capability subfield present in ML IE common info 2853 * @dynamic_nss_chains_support : intersection of host and fw capability of 2854 * dynamic NSS chain support 2855 */ 2856 struct wlan_mlme_cfg { 2857 struct wlan_mlme_chainmask chainmask_cfg; 2858 struct wlan_mlme_edca_params edca_params; 2859 struct wlan_mlme_generic gen; 2860 struct wlan_mlme_ht_caps ht_caps; 2861 #ifdef WLAN_FEATURE_11AX 2862 struct wlan_mlme_he_caps he_caps; 2863 #endif 2864 #ifdef WLAN_FEATURE_11BE 2865 struct wlan_mlme_eht_caps eht_caps; 2866 #endif 2867 struct wlan_mlme_lfr_cfg lfr; 2868 struct wlan_mlme_obss_ht40 obss_ht40; 2869 struct wlan_mlme_mbo mbo_cfg; 2870 struct wlan_mlme_vht_caps vht_caps; 2871 struct wlan_mlme_qos qos_mlme_params; 2872 struct wlan_mlme_rates rates; 2873 struct wlan_mlme_product_details_cfg product_details; 2874 struct wlan_mlme_dfs_cfg dfs_cfg; 2875 struct wlan_mlme_sap_protection sap_protection_cfg; 2876 struct wlan_mlme_cfg_sap sap_cfg; 2877 struct wlan_mlme_nss_chains nss_chains_ini_cfg; 2878 struct wlan_mlme_sta_cfg sta; 2879 struct wlan_mlme_stats_cfg stats; 2880 struct wlan_mlme_roam_scoring_cfg roam_scoring; 2881 struct wlan_mlme_oce oce; 2882 struct wlan_mlme_threshold threshold; 2883 struct wlan_mlme_timeout timeouts; 2884 struct wlan_mlme_cfg_twt twt_cfg; 2885 struct wlan_mlme_power power; 2886 struct wlan_mlme_acs acs; 2887 struct wlan_mlme_feature_flag feature_flags; 2888 struct wlan_mlme_powersave ps_params; 2889 struct wlan_mlme_wep_cfg wep_params; 2890 struct wlan_mlme_wifi_pos_cfg wifi_pos_cfg; 2891 struct wlan_mlme_wmm_params wmm_params; 2892 struct wlan_mlme_wps_params wps_params; 2893 struct wlan_mlme_btm btm; 2894 struct wlan_mlme_fe_wlm wlm_config; 2895 struct wlan_mlme_fe_rrm rrm_config; 2896 struct wlan_mlme_mwc mwc; 2897 struct wlan_mlme_dot11_mode dot11_mode; 2898 struct wlan_mlme_reg reg; 2899 struct roam_trigger_score_delta trig_score_delta[NUM_OF_ROAM_TRIGGERS]; 2900 struct roam_trigger_min_rssi trig_min_rssi[NUM_OF_ROAM_MIN_RSSI]; 2901 struct wlan_mlme_ratemask ratemask_cfg; 2902 struct wlan_mlme_iot iot; 2903 bool connection_roaming_ini_flag; 2904 struct wlan_mlme_eml_cap eml_cap; 2905 bool dynamic_nss_chains_support; 2906 }; 2907 2908 /** 2909 * struct mlme_pmk_info - SAE Roaming using single pmk info 2910 * @pmk: pmk 2911 * @pmk_len: pmk length 2912 * @spmk_timeout_period: Time to generate new SPMK in seconds. 2913 * @spmk_timestamp: System timestamp at which the Single PMK entry was added. 2914 */ 2915 struct mlme_pmk_info { 2916 uint8_t pmk[CFG_MAX_PMK_LEN]; 2917 uint8_t pmk_len; 2918 uint16_t spmk_timeout_period; 2919 qdf_time_t spmk_timestamp; 2920 }; 2921 2922 /** 2923 * struct wlan_mlme_sae_single_pmk - SAE Roaming using single pmk configuration 2924 * structure 2925 * @sae_single_pmk_ap: Current connected AP has VSIE or not 2926 * @pmk_info: pmk information 2927 */ 2928 struct wlan_mlme_sae_single_pmk { 2929 bool sae_single_pmk_ap; 2930 struct mlme_pmk_info pmk_info; 2931 }; 2932 2933 #define ROAM_FRAME_INFO_FRAME_TYPE_EXT 3 2934 /** 2935 * struct mlme_roam_debug_info - Roam debug information storage structure. 2936 * @trigger: Roam trigger related data 2937 * @scan: Roam scan related data structure. 2938 * @result: Roam result parameters. 2939 * @data_11kv: Neighbor report/BTM parameters. 2940 * @btm_rsp: BTM response information 2941 * @roam_init_info: Roam initial info 2942 * @roam_msg_info: roam related message information 2943 * @frame_info: Information related to mgmt/eapol frames exchanged 2944 * during roaming. 2945 */ 2946 struct mlme_roam_debug_info { 2947 struct wmi_roam_trigger_info trigger; 2948 struct wmi_roam_scan_data scan; 2949 struct wmi_roam_result result; 2950 struct wmi_neighbor_report_data data_11kv; 2951 struct roam_btm_response_data btm_rsp; 2952 struct roam_initial_data roam_init_info; 2953 struct roam_msg_info roam_msg_info; 2954 struct roam_frame_info frame_info[WLAN_ROAM_MAX_FRAME_INFO]; 2955 }; 2956 2957 /** 2958 * struct wlan_change_bi - Message struct to update beacon interval 2959 * @message_type: type of message 2960 * @length: length of message 2961 * @beacon_interval: beacon interval to update to (seconds) 2962 * @bssid: BSSID of vdev 2963 * @session_id: session ID of vdev 2964 */ 2965 struct wlan_change_bi { 2966 uint16_t message_type; 2967 uint16_t length; 2968 uint16_t beacon_interval; 2969 struct qdf_mac_addr bssid; 2970 uint8_t session_id; 2971 }; 2972 2973 #ifdef FEATURE_SET 2974 /** 2975 * enum wlan_mlme_iface_combinations - Iface combinations 2976 * @MLME_IFACE_STA_P2P_SUPPORT: STA + P2P concurrency bit 2977 * @MLME_IFACE_STA_SAP_SUPPORT: STA + SAP concurrency bit 2978 * @MLME_IFACE_STA_NAN_SUPPORT: STA + NAN concurrency bit 2979 * @MLME_IFACE_STA_TDLS_SUPPORT: STA + TDLS concurrency bit 2980 * @MLME_IFACE_STA_DUAL_P2P_SUPPORT: STA + P2P + P2P concurrency bit 2981 * @MLME_IFACE_STA_SAP_P2P_SUPPORT: STA + SAP + P2P concurrency bit 2982 * @MLME_IFACE_STA_SAP_NAN_SUPPORT: STA + SAP + NAN concurrency bit 2983 * @MLME_IFACE_STA_P2P_NAN_SUPPORT: STA + P2P + NAN concurrency bit 2984 * @MLME_IFACE_STA_P2P_TDLS_SUPPORT: STA + P2P + TDLS concurrency bit 2985 * @MLME_IFACE_STA_SAP_TDLS_SUPPORT: STA + SAP + TDLS concurrency bit 2986 * @MLME_IFACE_STA_NAN_TDLS_SUPPORT: STA + NAN + TDLS concurrency bit 2987 * @MLME_IFACE_STA_SAP_P2P_TDLS_SUPPORT: STA + SAP + P2P + TDLS concurrency bit 2988 * @MLME_IFACE_STA_SAP_NAN_TDLS_SUPPORT: STA + SAP + NAN + TDLS concurrency bit 2989 * @MLME_IFACE_STA_P2P_P2P_TDLS_SUPPORT: STA + P2P + P2P + TDLS concurrency bit 2990 * @MLME_IFACE_STA_P2P_NAN_TDLS_SUPPORT: STA + P2P + NAN + TDLS concurrency bit 2991 */ 2992 enum wlan_mlme_iface_combinations { 2993 MLME_IFACE_STA_P2P_SUPPORT = 0x1, 2994 MLME_IFACE_STA_SAP_SUPPORT = 0x2, 2995 MLME_IFACE_STA_NAN_SUPPORT = 0x4, 2996 MLME_IFACE_STA_TDLS_SUPPORT = 0x8, 2997 MLME_IFACE_STA_DUAL_P2P_SUPPORT = 0x10, 2998 MLME_IFACE_STA_SAP_P2P_SUPPORT = 0x20, 2999 MLME_IFACE_STA_SAP_NAN_SUPPORT = 0x40, 3000 MLME_IFACE_STA_P2P_NAN_SUPPORT = 0x80, 3001 MLME_IFACE_STA_P2P_TDLS_SUPPORT = 0x100, 3002 MLME_IFACE_STA_SAP_TDLS_SUPPORT = 0x200, 3003 MLME_IFACE_STA_NAN_TDLS_SUPPORT = 0x400, 3004 MLME_IFACE_STA_SAP_P2P_TDLS_SUPPORT = 0x800, 3005 MLME_IFACE_STA_SAP_NAN_TDLS_SUPPORT = 0x1000, 3006 MLME_IFACE_STA_P2P_P2P_TDLS_SUPPORT = 0x2000, 3007 MLME_IFACE_STA_P2P_NAN_TDLS_SUPPORT = 0x4000, 3008 }; 3009 3010 /** 3011 * struct wlan_mlme_features - Mlme feature set structure 3012 * @enable_wifi_optimizer: indicates wifi optimizer is enabled or disabled 3013 * @sap_max_num_clients: maximum number of SoftAP clients 3014 * @roaming_high_cu_roam_trigger: Roaming high CPU trigger enabled or disabled 3015 * @roaming_emergency_trigger: Roaming emergency trigger enabled or disabled 3016 * @roaming_btm_trihgger: Roaming btm trigger enabled or disabled 3017 * @roaming_idle_trigger: Roaming idle trigger enabled or disabled 3018 * @roaming_wtc_trigger: Roaming wtc trigger enabled or disabled 3019 * @roaming_btcoex_trigger: Roaming btcoex trigger enabled or disabled 3020 * @roaming_btw_wpa_wpa2: Roaming btw wpa wpa2 enabled or disabled 3021 * @roaming_manage_chan_list_api: Roaming manage chan list api enabled or 3022 * disabled 3023 * @roaming_adaptive_11r: Roaming adaptive 11r enabled or disabled 3024 * @roaming_ctrl_api_get_set: Roaming ctrl api get set enabled or disabled 3025 * @roaming_ctrl_api_reassoc: Roaming ctrl api reassoc enabled or disabled 3026 * @roaming_ctrl_get_cu: Roaming ctrl get cu enabled or disabled 3027 * @vendor_req_1_version: Vendor requirement version 1 3028 * @vendor_req_2_version: Vendor requirement version 2 3029 * @enable2x2: Enable 2x2 3030 * @iface_combinations: iface combination bitmask 3031 */ 3032 struct wlan_mlme_features { 3033 bool enable_wifi_optimizer; 3034 uint8_t sap_max_num_clients; 3035 bool roaming_high_cu_roam_trigger; 3036 bool roaming_emergency_trigger; 3037 bool roaming_btm_trihgger; 3038 bool roaming_idle_trigger; 3039 bool roaming_wtc_trigger; 3040 bool roaming_btcoex_trigger; 3041 bool roaming_btw_wpa_wpa2; 3042 bool roaming_manage_chan_list_api; 3043 bool roaming_adaptive_11r; 3044 bool roaming_ctrl_api_get_set; 3045 bool roaming_ctrl_api_reassoc; 3046 bool roaming_ctrl_get_cu; 3047 WMI_HOST_VENDOR1_REQ1_VERSION vendor_req_1_version; 3048 WMI_HOST_VENDOR1_REQ2_VERSION vendor_req_2_version; 3049 bool enable2x2; 3050 uint32_t iface_combinations; 3051 }; 3052 #endif 3053 3054 /** 3055 * enum host_concurrent_ap_policy - Host concurrent AP policy value 3056 * @HOST_CONCURRENT_AP_POLICY_UNSPECIFIED: Unspecified concurrent policy value 3057 * @HOST_CONCURRENT_AP_POLICY_GAMING_AUDIO: Gaming audio concurrent policy value 3058 * @HOST_CONCURRENT_AP_POLICY_LOSSLESS_AUDIO_STREAMING: Lossless audio 3059 * concurrent streaming policy value 3060 * @HOST_CONCURRENT_AP_POLICY_XR: Concurrent policy to meet AR/VR requirements. 3061 */ 3062 enum host_concurrent_ap_policy { 3063 HOST_CONCURRENT_AP_POLICY_UNSPECIFIED = 0, 3064 HOST_CONCURRENT_AP_POLICY_GAMING_AUDIO = 1, 3065 HOST_CONCURRENT_AP_POLICY_LOSSLESS_AUDIO_STREAMING = 2, 3066 HOST_CONCURRENT_AP_POLICY_XR = 3 3067 }; 3068 3069 /** 3070 * enum ll_ap_type - low latency AP type 3071 * @LL_AP_TYPE_HT: low latency AP type high throughput 3072 * @LL_AP_TYPE_LT: low latency AP type low latency 3073 * @LL_AP_TYPE_ANY: low latency AP type any 3074 */ 3075 enum ll_ap_type { 3076 LL_AP_TYPE_HT = 0, 3077 LL_AP_TYPE_LT = 1, 3078 LL_AP_TYPE_ANY = 2, 3079 }; 3080 3081 /** 3082 * struct sap_ch_info - Structure holding all the information required to make 3083 * a decision for the best operating channel based on dfs formula. 3084 * @chan_freq: Channel frequency found in scanresult 3085 * @bss_count: Bss found in scanresult for this channel 3086 * @rssi_agr: Max value of rssi among all BSS(es) from scan result 3087 * for this channel. 3088 * @weight: Weightage of this channel 3089 * @weight_copy: copy of the original weight 3090 * @valid: Is this a valid center frequency for regulatory domain 3091 * @weight_calc_done: Weight calculation done for this channel 3092 */ 3093 struct sap_ch_info { 3094 uint32_t chan_freq; 3095 uint16_t bss_count; 3096 int32_t rssi_agr; 3097 uint32_t weight; 3098 uint32_t weight_copy; 3099 bool valid; 3100 bool weight_calc_done; 3101 }; 3102 3103 /** 3104 * struct sap_sel_ch_info - Wrapper of sap_ch_info structure. 3105 * @ch_info: Ptr to the channel information. 3106 * @num_ch: Total num of channels. 3107 */ 3108 struct sap_sel_ch_info { 3109 struct sap_ch_info *ch_info; 3110 uint8_t num_ch; 3111 }; 3112 3113 /** 3114 * enum mlme_peer_oper_mode_ind - Peer mode indication type 3115 * @mlme_peer_ind_smps: spatial multiplexing power save 3116 * @mlme_peer_ind_omn: Operating mode notification 3117 * @mlme_peer_ind_omi: Operating mode indication 3118 */ 3119 enum mlme_peer_oper_mode_ind { 3120 mlme_peer_ind_smps, 3121 mlme_peer_ind_omn, 3122 mlme_peer_ind_omi, 3123 }; 3124 3125 /** 3126 * struct peer_oper_mode_event - structure for peer oper mode indication data 3127 * @peer_mac_address: mac address of peer 3128 * @ind_type: indication type of type @enum mlme_peer_oper_mode_ind 3129 * @new_rxnss: New Rx NSS 3130 * @new_bw: New bandwidth 3131 * @new_txnss: New Tx NSS, valid only for mlme_peer_ind_omi 3132 * @new_disablemu: Disabled MU mode, valid only for mlme_peer_ind_omi 3133 */ 3134 struct peer_oper_mode_event { 3135 struct qdf_mac_addr peer_mac_address; 3136 uint32_t ind_type; 3137 uint32_t new_rxnss; 3138 uint32_t new_bw; 3139 uint32_t new_txnss; 3140 uint32_t new_disablemu; 3141 }; 3142 #endif 3143