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