1 /* 2 * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 /** 20 * DOC: service_ready_param.h 21 * 22 * Public structures to access (ext)service ready data 23 */ 24 #ifndef _SERVICE_READY_PARAM_H_ 25 #define _SERVICE_READY_PARAM_H_ 26 27 #include "qdf_types.h" 28 #ifdef WLAN_SUPPORT_RF_CHARACTERIZATION 29 #include "wmi_unified_param.h" 30 #endif 31 #ifdef WLAN_FEATURE_11BE_MLO 32 #include "wlan_mlo_mgr_public_structs.h" 33 #endif 34 #ifdef CONFIG_AFC_SUPPORT 35 #include "wlan_reg_afc.h" 36 #endif 37 38 /** 39 * struct wlan_psoc_hal_reg_capability - hal reg table in psoc 40 * @eeprom_rd: regdomain value specified in EEPROM 41 * @eeprom_rd_ext: regdomain 42 * @regcap1: CAP1 capabilities bit map 43 * @regcap2: REGDMN EEPROM CAP 44 * @wireless_modes: REGDMN MODE 45 * @low_2ghz_chan: lower 2.4GHz channels 46 * @high_2ghz_chan: higher 2.4 GHz channels 47 * @low_5ghz_chan: lower 5 GHz channels 48 * @high_5ghz_chan: higher 5 GHz channels 49 */ 50 struct wlan_psoc_hal_reg_capability { 51 uint32_t eeprom_rd; 52 uint32_t eeprom_rd_ext; 53 uint32_t regcap1; 54 uint32_t regcap2; 55 uint32_t wireless_modes; 56 uint32_t low_2ghz_chan; 57 uint32_t high_2ghz_chan; 58 uint32_t low_5ghz_chan; 59 uint32_t high_5ghz_chan; 60 }; 61 62 /** 63 * struct wlan_psoc_target_capability_info - target capabilities in psoc 64 * @phy_capability: PHY capabilities 65 * @max_frag_entry: Maximum frag entries 66 * @num_rf_chains: Number of RF chains supported 67 * @ht_cap_info: HT cap info 68 * @vht_cap_info: VHT cap info 69 * @vht_supp_mcs: VHT Supported MCS 70 * @hw_min_tx_power: HW minimum tx power 71 * @hw_max_tx_power: HW maximum tx power 72 * @sys_cap_info: sys capability info 73 * @min_pkt_size_enable: Enterprise mode short pkt enable 74 * @max_bcn_ie_size: Max beacon and probe rsp IE offload size 75 * @max_num_scan_channels: Max scan channels 76 * @max_supported_macs: max supported MCS 77 * @wmi_fw_sub_feat_caps: FW sub feature capabilities 78 * @txrx_chainmask: TXRX chain mask 79 * @default_dbs_hw_mode_index: DBS hw mode index 80 * @num_msdu_desc: number of msdu desc 81 * @fw_version: FW build version 82 * @fw_version_1: Second dword of FW version (Valid for non-tlv FW) 83 */ 84 struct wlan_psoc_target_capability_info { 85 uint32_t phy_capability; 86 uint32_t max_frag_entry; 87 uint32_t num_rf_chains; 88 uint32_t ht_cap_info; 89 uint32_t vht_cap_info; 90 uint32_t vht_supp_mcs; 91 uint32_t hw_min_tx_power; 92 uint32_t hw_max_tx_power; 93 uint32_t sys_cap_info; 94 uint32_t min_pkt_size_enable; 95 uint32_t max_bcn_ie_size; 96 uint32_t max_num_scan_channels; 97 uint32_t max_supported_macs; 98 uint32_t wmi_fw_sub_feat_caps; 99 uint32_t txrx_chainmask; 100 uint32_t default_dbs_hw_mode_index; 101 uint32_t num_msdu_desc; 102 uint32_t fw_version; 103 uint32_t fw_version_1; 104 }; 105 106 /** 107 * struct wlan_psoc_host_ppe_threshold - PPE threshold 108 * @numss_m1: NSS - 1 109 * @ru_bit_mask: RU bit mask indicating the supported RU's 110 * @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss 111 */ 112 struct wlan_psoc_host_ppe_threshold { 113 uint32_t numss_m1; 114 uint32_t ru_bit_mask; 115 uint32_t ppet16_ppet8_ru3_ru0[PSOC_HOST_MAX_NUM_SS]; 116 }; 117 118 /** 119 * struct wlan_psoc_host_hal_reg_cap_ext - extended regulatory capabilities 120 * recvd in EXT service 121 * @wireless_modes: REGDMN MODE 122 * @low_2ghz_chan: lower 2.4GHz channels 123 * @high_2ghz_chan: higher 2.4 GHz channels 124 * @low_5ghz_chan: lower 5 GHz channels 125 * @high_5ghz_chan: higher 5 GHz channels 126 */ 127 struct wlan_psoc_host_hal_reg_cap_ext { 128 uint64_t wireless_modes; 129 uint32_t low_2ghz_chan; 130 uint32_t high_2ghz_chan; 131 uint32_t low_5ghz_chan; 132 uint32_t high_5ghz_chan; 133 }; 134 135 /** 136 * struct wlan_psoc_host_mac_phy_caps - Phy caps recvd in EXT service 137 * @hw_mode_id: identify a particular set of HW characteristics, 138 * as specified by the subsequent fields. WMI_MAC_PHY_CAPABILITIES 139 * element must be mapped to its parent WMI_HW_MODE_CAPABILITIES 140 * element using hw_mode_id. No particular ordering of 141 * WMI_MAC_PHY_CAPABILITIES elements should be 142 * assumed, though in practice the elements may always be ordered 143 * by hw_mode_id. 144 * @pdev_id: pdev_id starts with 1. pdev_id 1 => phy_id 0, pdev_id 2 => phy_id 1 145 * @phy_id: Starts with 0 146 * @phy_idx: Index to mac phy caps structure for the given hw_mode_id and phy_id 147 * @hw_mode_config_type: holds the enum wmi_hw_mode_config_type 148 * @supports_11b: is 802.11b supported 149 * @supports_11g: is 802.11g supported 150 * @supports_11a: is 802.11a supported 151 * @supports_11n: is 802.11n supported 152 * @supports_11ac: is 802.11ac supported 153 * @supports_11ax: is 802.11ax supported 154 * @supports_11be: is 802.11be supported 155 * @supported_bands: supported bands, enum WLAN_BAND_CAPABILITY 156 * @ampdu_density: ampdu density 0 for no restriction, 1 for 1/4 us, 157 * 2 for 1/2 us, 3 for 1 us,4 for 2 us, 5 for 4 us, 158 * 6 for 8 us,7 for 16 us 159 * @max_bw_supported_2G: max bw supported 2G, enum wmi_channel_width 160 * @ht_cap_info_2G: WMI HT Capability, WMI_HT_CAP defines 161 * @vht_cap_info_2G: VHT capability info field of 802.11ac, WMI_VHT_CAP defines 162 * @vht_supp_mcs_2G: VHT Supported MCS Set field Rx/Tx same 163 * The max VHT-MCS for n SS subfield (where n = 1,...,8) is encoded as 164 * follows 165 * - 0 indicates support for VHT-MCS 0-7 for n spatial streams 166 * - 1 indicates support for VHT-MCS 0-8 for n spatial streams 167 * - 2 indicates support for VHT-MCS 0-9 for n spatial streams 168 * - 3 indicates that n spatial streams is not supported 169 * @he_cap_info_2G: HE capability info field of 802.11ax, WMI_HE_CAP defines 170 * @he_supp_mcs_2G: HE Supported MCS Set field Rx/Tx same 171 * @tx_chain_mask_2G: Valid Transmit chain mask 172 * @rx_chain_mask_2G: Valid Receive chain mask 173 * @max_bw_supported_5G: max bw supported 5G, enum wmi_channel_width 174 * @ht_cap_info_5G: WMI HT Capability, WMI_HT_CAP defines 175 * @vht_cap_info_5G: VHT capability info field of 802.11ac, WMI_VHT_CAP defines 176 * @vht_supp_mcs_5G: VHT Supported MCS Set field Rx/Tx same 177 * The max VHT-MCS for n SS subfield (where n = 1,...,8) is encoded as 178 * follows 179 * - 0 indicates support for VHT-MCS 0-7 for n spatial streams 180 * - 1 indicates support for VHT-MCS 0-8 for n spatial streams 181 * - 2 indicates support for VHT-MCS 0-9 for n spatial streams 182 * - 3 indicates that n spatial streams is not supported 183 * @he_cap_info_5G: HE capability info field of 802.11ax, WMI_HE_CAP defines 184 * @he_supp_mcs_5G: HE Supported MCS Set field Rx/Tx same 185 * @tx_chain_mask_5G: Valid Transmit chain mask 186 * @rx_chain_mask_5G: Valid Receive chain mask 187 * @he_cap_phy_info_2G: 2G HE capability phy field 188 * @he_cap_phy_info_5G: 5G HE capability phy field 189 * @he_cap_info_internal: HE PHY internal feature capability 190 * @he_ppet2G: 2G HE PPET info 191 * @he_ppet5G: 5G HE PPET info 192 * @chainmask_table_id: chain mask table id 193 * @lmac_id: hw mac id 194 * @reg_cap_ext: extended regulatory capabilities 195 * @tgt_pdev_id: target pdev id assigned and used by firmware 196 * @nss_ratio_enabled: This flag is set if nss ratio is received from FW as part 197 * of service ready ext event. 198 * @nss_ratio_info: nss ratio is used to calculate the NSS value for 160MHz. 199 * @hw_link_id: Unique link id across SoCs used to identify link in Multi-SoC ML 200 */ 201 struct wlan_psoc_host_mac_phy_caps { 202 uint32_t hw_mode_id; 203 uint32_t pdev_id; 204 uint32_t phy_id; 205 uint8_t phy_idx; 206 int hw_mode_config_type; 207 uint32_t supports_11b:1, 208 supports_11g:1, 209 supports_11a:1, 210 supports_11n:1, 211 supports_11ac:1, 212 supports_11ax:1, 213 #ifdef WLAN_FEATURE_11BE 214 supports_11be:1, 215 #endif 216 reserved:25; 217 uint32_t supported_bands; 218 uint32_t ampdu_density; 219 uint32_t max_bw_supported_2G; 220 uint32_t ht_cap_info_2G; 221 uint32_t vht_cap_info_2G; 222 uint32_t vht_supp_mcs_2G; 223 uint32_t he_cap_info_2G[PSOC_HOST_MAX_MAC_SIZE]; 224 uint32_t he_supp_mcs_2G; 225 uint32_t tx_chain_mask_2G; 226 uint32_t rx_chain_mask_2G; 227 uint32_t max_bw_supported_5G; 228 uint32_t ht_cap_info_5G; 229 uint32_t vht_cap_info_5G; 230 uint32_t vht_supp_mcs_5G; 231 uint32_t he_cap_info_5G[PSOC_HOST_MAX_MAC_SIZE]; 232 uint32_t he_supp_mcs_5G; 233 uint32_t tx_chain_mask_5G; 234 uint32_t rx_chain_mask_5G; 235 uint32_t he_cap_phy_info_2G[PSOC_HOST_MAX_PHY_SIZE]; 236 uint32_t he_cap_phy_info_5G[PSOC_HOST_MAX_PHY_SIZE]; 237 uint32_t he_cap_info_internal; 238 struct wlan_psoc_host_ppe_threshold he_ppet2G; 239 struct wlan_psoc_host_ppe_threshold he_ppet5G; 240 uint32_t chainmask_table_id; 241 uint32_t lmac_id; 242 struct wlan_psoc_host_hal_reg_cap_ext reg_cap_ext; 243 uint32_t tgt_pdev_id; 244 bool nss_ratio_enabled; 245 uint8_t nss_ratio_info; 246 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) 247 uint16_t hw_link_id; 248 #endif 249 }; 250 251 /** 252 * struct wlan_psoc_host_hw_mode_caps - HW mode capabilities in EXT event 253 * @hw_mode_id: identify a particular set of HW characteristics, 254 * as specified by the subsequent fields 255 * @phy_id_map: BIT0 represents phy_id 0, BIT1 represent phy_id 1 and so on 256 * @hw_mode_config_type: HW mode config type 257 */ 258 struct wlan_psoc_host_hw_mode_caps { 259 uint32_t hw_mode_id; 260 uint32_t phy_id_map; 261 uint32_t hw_mode_config_type; 262 }; 263 264 /** 265 * struct wlan_psoc_host_mac_phy_caps_ext2 - Phy caps received in EXT2 service 266 * @hw_mode_id: HW mode id 267 * @pdev_id: Pdev id 268 * @phy_id: Phy id 269 * @wireless_modes_ext: Extended wireless modes 270 * @eht_cap_info_2G: EHT capability info field of 802.11ax, WMI_HE_CAP defines 271 * @eht_supp_mcs_2G: EHT Supported MCS Set field Rx/Tx same 272 * @eht_cap_info_5G: EHT capability info field of 802.11ax, WMI_HE_CAP defines 273 * @eht_supp_mcs_5G: EHT Supported MCS Set field Rx/Tx same 274 * @eht_cap_phy_info_2G: 2G EHT capability phy field 275 * @eht_cap_phy_info_5G: 5G EHT capability phy field 276 * @eht_cap_info_internal: EHT PHY internal feature capability 277 * @eht_supp_mcs_ext_2G: 2G EHT Supported MCS Set for Rx/Tx as per 11be D1.2 278 * @eht_supp_mcs_ext_5G: 5G EHT Supported MCS Set for Rx/Tx as per 11be D1.2 279 * @eht_ppet2G: 2G EHT PPET info 280 * @eht_ppet5G: 5G EHT PPET info 281 * @emlcap: EML Capabilities info 282 * @mldcap: MLD Capabilities info 283 * @msdcap: Medium Synchronization Delay capabilities info 284 */ 285 struct wlan_psoc_host_mac_phy_caps_ext2 { 286 uint32_t hw_mode_id; 287 uint32_t pdev_id; 288 uint32_t phy_id; 289 uint64_t wireless_modes_ext; 290 #ifdef WLAN_FEATURE_11BE 291 uint32_t eht_cap_info_2G[PSOC_HOST_MAX_EHT_MAC_SIZE]; 292 uint32_t eht_supp_mcs_2G; 293 uint32_t eht_cap_info_5G[PSOC_HOST_MAX_EHT_MAC_SIZE]; 294 uint32_t eht_supp_mcs_5G; 295 uint32_t eht_cap_phy_info_2G[PSOC_HOST_MAX_EHT_PHY_SIZE]; 296 uint32_t eht_cap_phy_info_5G[PSOC_HOST_MAX_EHT_PHY_SIZE]; 297 uint32_t eht_cap_info_internal; 298 uint32_t eht_supp_mcs_ext_2G[PSOC_HOST_EHT_MCS_NSS_MAP_2G_SIZE]; 299 uint32_t eht_supp_mcs_ext_5G[PSOC_HOST_EHT_MCS_NSS_MAP_5G_SIZE]; 300 struct wlan_psoc_host_ppe_threshold eht_ppet2G; 301 struct wlan_psoc_host_ppe_threshold eht_ppet5G; 302 #endif 303 #ifdef WLAN_FEATURE_11BE_MLO 304 struct wlan_mlo_eml_cap emlcap; 305 struct wlan_mlo_mld_cap mldcap; 306 struct wlan_mlo_msd_cap msdcap; 307 #endif 308 }; 309 310 /* 311 * struct wlan_psoc_host_scan_radio_caps - scan radio capabilities 312 * @phy_id: phy id 313 * @scan_radio_supported: indicates scan radio support 314 * @dfs_en: indicates DFS needs to be enabled/disabled for scan radio vap 315 * @blanking_en: Indicates whether scan blanking feature is enabled 316 */ 317 struct wlan_psoc_host_scan_radio_caps { 318 uint32_t phy_id; 319 bool scan_radio_supported; 320 bool dfs_en; 321 bool blanking_en; 322 }; 323 324 /** 325 * struct wlan_psoc_host_dbr_ring_caps - Direct buffer rx module ring 326 * capability maintained by PSOC 327 * @pdev_id: Pdev id of the pdev 328 * @mod_id: Module id 329 * @ring_elems_min: Minimum number of pointers in the ring 330 * @min_buf_size: Minimum size of each buffer entry in the ring 331 * @min_buf_align: Minimum alignment of the addresses in the ring 332 */ 333 struct wlan_psoc_host_dbr_ring_caps { 334 uint32_t pdev_id; 335 uint32_t mod_id; 336 uint32_t ring_elems_min; 337 uint32_t min_buf_size; 338 uint32_t min_buf_align; 339 }; 340 341 /** 342 * struct wlan_psoc_host_spectral_scaling_params - Spectral scaling params 343 * @pdev_id: Pdev id of the pdev 344 * @formula_id: Formula id 345 * @low_level_offset: Low level offset 346 * @high_level_offset: High level offset 347 * @rssi_thr: RSSI threshold 348 * @default_agc_max_gain: Default agc max gain 349 */ 350 struct wlan_psoc_host_spectral_scaling_params { 351 uint32_t pdev_id; 352 uint32_t formula_id; 353 uint32_t low_level_offset; 354 uint32_t high_level_offset; 355 uint32_t rssi_thr; 356 uint32_t default_agc_max_gain; 357 }; 358 359 #ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT 360 /** 361 * struct wlan_psoc_host_rcc_enh_aoa_caps_ext2 - aoa capabilities 362 * @max_agc_gain_tbls: max number of AGC gain tables supported 363 * @max_agc_gain_per_tbl_2g: max AGC gain value per each table on 2GHz band. 364 * Each entry in max_agc_gain_per_table indicates 365 * max AGC gain value corresponding AGC gain table 366 * index. 367 * @max_agc_gain_per_tbl_5g: max AGC gain value per each table on 5GHz band. 368 * Each entry in max_agc_gain_per_table indicates 369 * max AGC gain value corresponding AGC gain table 370 * index. 371 * @max_agc_gain_per_tbl_6g: max AGC gain value per each table on 5GHz band. 372 * Each entry in max_agc_gain_per_table indicates 373 * max AGC gain value corresponding AGC gain table 374 * index. 375 * @max_bdf_entries_per_tbl: max entries in phase_array and gain_array per 376 * each gain table index. Each entry in this array 377 * indicates max entries used to store required data 378 * for corresponding AGC gain table index. 379 */ 380 struct wlan_psoc_host_rcc_enh_aoa_caps_ext2 { 381 uint32_t max_agc_gain_tbls; 382 uint16_t max_agc_gain_per_tbl_2g[PSOC_MAX_NUM_AGC_GAIN_TBLS]; 383 uint16_t max_agc_gain_per_tbl_5g[PSOC_MAX_NUM_AGC_GAIN_TBLS]; 384 uint16_t max_agc_gain_per_tbl_6g[PSOC_MAX_NUM_AGC_GAIN_TBLS]; 385 uint8_t max_bdf_entries_per_tbl[PSOC_MAX_NUM_AGC_GAIN_TBLS]; 386 }; 387 #endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */ 388 389 /** 390 * struct wlan_psoc_host_chainmask_capabilities - chain mask capabilities list 391 * @supports_chan_width_20: channel width 20 support for this chain mask. 392 * @supports_chan_width_40: channel width 40 support for this chain mask. 393 * @supports_chan_width_80: channel width 80 support for this chain mask. 394 * @supports_chan_width_160: channel width 160 support for this chain mask. 395 * @supports_chan_width_80P80: channel width 80P80 support for this chain mask. 396 * @supports_aSpectral: Agile Spectral support for this chain mask. 397 * @supports_aSpectral_160: Agile Spectral support in 160 MHz. 398 * @supports_aDFS_160: Agile DFS support in 160 MHz for this chain mask. 399 * @supports_aDFS_320: Agile DFS support in 320 MHz for this chain mask. 400 * @chain_mask_2G: 2G support for this chain mask. 401 * @chain_mask_5G: 5G support for this chain mask. 402 * @chain_mask_tx: Tx support for this chain mask. 403 * @chain_mask_rx: Rx support for this chain mask. 404 * @supports_aDFS: Agile DFS support for this chain mask. 405 * @chainmask: chain mask value. 406 */ 407 struct wlan_psoc_host_chainmask_capabilities { 408 uint32_t supports_chan_width_20:1, 409 supports_chan_width_40:1, 410 supports_chan_width_80:1, 411 supports_chan_width_160:1, 412 supports_chan_width_80P80:1, 413 #ifdef WLAN_FEATURE_11BE 414 supports_chan_width_320:1, 415 #endif 416 supports_aSpectral:1, 417 supports_aSpectral_160:1, 418 supports_aDFS_160:1, 419 #ifdef WLAN_FEATURE_11BE 420 supports_aDFS_320:1, 421 #endif 422 reserved:17, 423 chain_mask_2G:1, 424 chain_mask_5G:1, 425 chain_mask_tx:1, 426 chain_mask_rx:1, 427 supports_aDFS:1; 428 uint32_t chainmask; 429 }; 430 431 /** 432 * struct wlan_psoc_host_chainmask_table - chain mask table 433 * @table_id: tableid. 434 * @num_valid_chainmasks: num valid chainmasks. 435 * @cap_list: pointer to wlan_psoc_host_chainmask_capabilities list. 436 */ 437 struct wlan_psoc_host_chainmask_table { 438 uint32_t table_id; 439 uint32_t num_valid_chainmasks; 440 struct wlan_psoc_host_chainmask_capabilities *cap_list; 441 }; 442 443 /* struct wlan_psoc_host_aux_dev_caps - wlan psoc aux dev capability. 444 * retrieved from wmi_aux_dev_capabilities. 445 * 446 * @aux_index: aux index 447 * @hw_mode_id:hw mode which defined in WMI_HW_MODE_CONFIG_TYPE 448 * @supported_modes_bitmap: indicate which mode this AUX supports for the 449 * HW mode defined in hw_mode_id. bitmap defined in 450 * WMI_AUX_DEV_CAPS_SUPPORTED_MODE. 451 * @listen_pdev_id_map: indicate which AUX MAC can listen/scan for the HW mode 452 * described in hw_mode_id 453 * @emlsr_pdev_id_map: indicate which AUX MAC can perform eMLSR for the HW mode 454 * described in hw_mode_id. 455 */ 456 struct wlan_psoc_host_aux_dev_caps { 457 uint32_t aux_index; 458 uint32_t hw_mode_id; 459 uint32_t supported_modes_bitmap; 460 uint32_t listen_pdev_id_map; 461 uint32_t emlsr_pdev_id_map; 462 }; 463 464 /** 465 * struct wlan_psoc_host_service_ext_param - EXT service base params in event 466 * @default_conc_scan_config_bits: Default concurrenct scan config 467 * @default_fw_config_bits: Default HW config bits 468 * @ppet: Host PPE threshold struct 469 * @he_cap_info: HE capabality info 470 * @mpdu_density: units are microseconds 471 * @max_bssid_rx_filters: Maximum no of BSSID based RX filters host can program 472 * Value 0 means FW hasn't given any limit to host. 473 * @fw_build_vers_ext: Extended FW build version info. 474 * bits 27:0 rsvd 475 * bits 31:28 CRM sub ID 476 * @num_hw_modes: Number of HW modes in event 477 * @num_phy: Number of Phy mode. 478 * @num_chainmask_tables: Number of chain mask tables. 479 * @num_dbr_ring_caps: Number of direct buf rx ring capabilities 480 * @max_bssid_indicator: Maximum number of VAPs in MBSS IE 481 * @num_bin_scaling_params: Number of Spectral bin scaling parameters 482 * @chainmask_table: Available chain mask tables. 483 * @sar_version: SAR version info 484 * 485 * Following fields are used to save the values that are received in service 486 * ready EXT event. Currently, used by RF path switch code. 487 * @wireless_modes: Regdmn modes 488 * @low_2ghz_chan: 2 GHz channel low 489 * @high_2ghz_chan: 2 GHz channel High 490 * @low_5ghz_chan: 5 GHz channel low 491 * @high_5ghz_chan: 5 GHz channel High 492 * 493 */ 494 struct wlan_psoc_host_service_ext_param { 495 uint32_t default_conc_scan_config_bits; 496 uint32_t default_fw_config_bits; 497 struct wlan_psoc_host_ppe_threshold ppet; 498 uint32_t he_cap_info; 499 uint32_t mpdu_density; 500 uint32_t max_bssid_rx_filters; 501 uint32_t fw_build_vers_ext; 502 uint32_t num_hw_modes; 503 uint32_t num_phy; 504 uint32_t num_chainmask_tables; 505 uint32_t num_dbr_ring_caps; 506 uint32_t max_bssid_indicator; 507 uint32_t num_bin_scaling_params; 508 struct wlan_psoc_host_chainmask_table 509 chainmask_table[PSOC_MAX_CHAINMASK_TABLES]; 510 uint32_t sar_version; 511 uint64_t wireless_modes; 512 uint32_t low_2ghz_chan; 513 uint32_t high_2ghz_chan; 514 uint32_t low_5ghz_chan; 515 uint32_t high_5ghz_chan; 516 }; 517 518 /** 519 * struct wlan_psoc_host_service_ext2_param - EXT service base params in event 520 * @reg_db_version_major: REG DB version major number 521 * @reg_db_version_minor: REG DB version minor number 522 * @bdf_reg_db_version_major: BDF REG DB version major number 523 * @bdf_reg_db_version_minor: BDF REG DB version minor number 524 * @num_dbr_ring_caps: Number of direct buf rx ring capabilities 525 * @chwidth_num_peer_caps: Peer limit for peer_chan_width_switch WMI cmd 526 * @max_ndp_sessions: Max number of ndp session fw supports 527 * @max_nan_pairing_sessions: max number of PASN pairing session allowed on NAN 528 * @preamble_puncture_bw_cap: Preamble Puncturing Tx support 529 * @num_scan_radio_caps: Number of scan radio capabilities 530 * @max_users_dl_ofdma: Max number of users per-PPDU for Downlink OFDMA 531 * @max_users_ul_ofdma: Max number of users per-PPDU for Uplink OFDMA 532 * @max_users_dl_mumimo: Max number of users per-PPDU for Downlink MU-MIMO 533 * @max_users_ul_mumimo: Max number of users per-PPDU for Uplink MU-MIMO 534 * @twt_ack_support_cap: TWT ack capability support 535 * @sap_coex_fixed_chan_support: Indicates if fw supports coex SAP in 536 * fixed chan config 537 * @target_cap_flags: Rx peer metadata version number used by target 538 * @dp_peer_meta_data_ver: DP peer metadata version reported by target 539 * @ul_mumimo_tx_2g: UL MUMIMO Tx support for 2GHz 540 * @ul_mumimo_tx_5g: UL MUMIMO Tx support for 5GHz 541 * @ul_mumimo_tx_6g: UL MUMIMO Tx support for 6GHz 542 * @ul_mumimo_rx_2g: UL MUMIMO Rx support for 2GHz 543 * @ul_mumimo_rx_5g: UL MUMIMO Rx support for 5GHz 544 * @ul_mumimo_rx_6g: UL MUMIMO Rx support for 6GHz 545 * @afc_dev_type: AFC deployment type 546 * @num_msdu_idx_qtype_map: Number of HTT_MSDUQ_INDEX to HTT_MSDU_QTYPE 547 * mapping 548 * @is_multipass_sap: Multipass sap flag 549 * @num_max_mlo_link_per_ml_bss_supp: max link number per MLD FW supports. 550 * @num_aux_dev_caps: number of aux dev capabilities 551 * 552 * Following fields are used to save the values that are received in service 553 * ready EXT2 event. Currently, used by RF path switch code. 554 * @wireless_modes_ext: REGDMN MODE, see REGDMN_MODE_ enum 555 * @low_2ghz_chan_ext: 2 GHz channel ext low 556 * @high_2ghz_chan_ext: 2 GHz channel ext High 557 * @low_5ghz_chan_ext: 5 GHz channel ext low 558 * @high_5ghz_chan_ext: 5 GHz channel ext High 559 */ 560 struct wlan_psoc_host_service_ext2_param { 561 uint8_t reg_db_version_major; 562 uint8_t reg_db_version_minor; 563 uint8_t bdf_reg_db_version_major; 564 uint8_t bdf_reg_db_version_minor; 565 uint32_t num_dbr_ring_caps; 566 uint32_t chwidth_num_peer_caps; 567 uint32_t max_ndp_sessions; 568 uint32_t max_nan_pairing_sessions; 569 uint32_t preamble_puncture_bw_cap; 570 uint8_t num_scan_radio_caps; 571 uint16_t max_users_dl_ofdma; 572 uint16_t max_users_ul_ofdma; 573 uint16_t max_users_dl_mumimo; 574 uint16_t max_users_ul_mumimo; 575 uint32_t twt_ack_support_cap:1; 576 uint32_t sap_coex_fixed_chan_support:1; 577 uint32_t target_cap_flags; 578 uint8_t dp_peer_meta_data_ver; 579 uint8_t ul_mumimo_tx_2g:1, 580 ul_mumimo_tx_5g:1, 581 ul_mumimo_tx_6g:1, 582 ul_mumimo_rx_2g:1, 583 ul_mumimo_rx_5g:1, 584 ul_mumimo_rx_6g:1; 585 #if defined(CONFIG_AFC_SUPPORT) 586 enum reg_afc_dev_deploy_type afc_dev_type; 587 #endif 588 uint32_t num_msdu_idx_qtype_map; 589 #ifdef QCA_MULTIPASS_SUPPORT 590 bool is_multipass_sap; 591 #endif 592 uint32_t num_max_mlo_link_per_ml_bss_supp; 593 uint32_t num_aux_dev_caps; 594 595 uint64_t wireless_modes_ext; 596 uint32_t low_2ghz_chan_ext; 597 uint32_t high_2ghz_chan_ext; 598 uint32_t low_5ghz_chan_ext; 599 uint32_t high_5ghz_chan_ext; 600 }; 601 602 #endif /* _SERVICE_READY_PARAM_H_*/ 603