1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2021-2024 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 #ifndef WMA_TGT_CFG_H 21*5113495bSYour Name #define WMA_TGT_CFG_H 22*5113495bSYour Name 23*5113495bSYour Name #include "wma_sar_public_structs.h" 24*5113495bSYour Name #include "nan_public_structs.h" 25*5113495bSYour Name 26*5113495bSYour Name /** 27*5113495bSYour Name * struct wma_tgt_services - target services 28*5113495bSYour Name * @sta_power_save: sta power save 29*5113495bSYour Name * @uapsd: uapsd 30*5113495bSYour Name * @ap_dfs: ap dfs 31*5113495bSYour Name * @en_11ac: enable 11ac 32*5113495bSYour Name * @arp_offload: arp offload 33*5113495bSYour Name * @early_rx: early rx 34*5113495bSYour Name * @pno_offload: pno offload 35*5113495bSYour Name * @beacon_offload: beacon offload 36*5113495bSYour Name * @lte_coex_ant_share: LTE coex ant share 37*5113495bSYour Name * @en_tdls: enable tdls 38*5113495bSYour Name * @en_tdls_offchan: enable tdls offchan 39*5113495bSYour Name * @en_tdls_uapsd_buf_sta: enable sta tdls uapsd buf 40*5113495bSYour Name * @en_tdls_uapsd_sleep_sta: enable sta tdls uapsd sleep 41*5113495bSYour Name * @en_tdls_wideband_support: Get TDLS wideband support 42*5113495bSYour Name * @en_tdls_11ax_support: Get TDLS ax support 43*5113495bSYour Name * @en_tdls_6g_support: Get TDLS 6g fw capability 44*5113495bSYour Name * @en_tdls_mlo_support: Get TDLS mlo fw support 45*5113495bSYour Name * @en_n_link_mlo_support: Get N-Link mlo fw support 46*5113495bSYour Name * @en_roam_offload: enable roam offload 47*5113495bSYour Name * @en_11ax: enable 11ax 48*5113495bSYour Name * @is_fw_mawc_capable: Motion Aided Wireless Connectivity feature 49*5113495bSYour Name * @twt_requestor: TWT requestor capability 50*5113495bSYour Name * @twt_responder: TWT responder capability 51*5113495bSYour Name * @bcn_reception_stats: Beacon Reception stats capability 52*5113495bSYour Name * @is_roam_scan_ch_to_host: Get roam scan channels from fw supported 53*5113495bSYour Name * @ll_stats_per_chan_rx_tx_time: Per channel tx and rx time support in ll stats 54*5113495bSYour Name * @is_get_station_clubbed_in_ll_stats_req: Get station req support within ll 55*5113495bSYour Name * stats req 56*5113495bSYour Name * @is_fw_therm_throt_supp: Get thermal throttling threshold 57*5113495bSYour Name * @igmp_offload_enable: Get igmp offload enable or disable 58*5113495bSYour Name * @en_11be: enable 11be 59*5113495bSYour Name * @dynamic_vdev_macaddr_support: Dynamic update of vdev MAC addr is 60*5113495bSYour Name * supported or not 61*5113495bSYour Name * @is_mlo_per_link_stats_supported: Per link mlo stats is supported or not 62*5113495bSYour Name * @en_mlo_tid_to_link_support: Get tid to link fw support 63*5113495bSYour Name */ 64*5113495bSYour Name struct wma_tgt_services { 65*5113495bSYour Name uint32_t sta_power_save; 66*5113495bSYour Name bool uapsd; 67*5113495bSYour Name uint32_t ap_dfs; 68*5113495bSYour Name uint32_t en_11ac; 69*5113495bSYour Name uint32_t arp_offload; 70*5113495bSYour Name uint32_t early_rx; 71*5113495bSYour Name #ifdef FEATURE_WLAN_SCAN_PNO 72*5113495bSYour Name bool pno_offload; 73*5113495bSYour Name #endif /* FEATURE_WLAN_SCAN_PNO */ 74*5113495bSYour Name bool beacon_offload; 75*5113495bSYour Name bool pmf_offload; 76*5113495bSYour Name uint32_t lte_coex_ant_share; 77*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS 78*5113495bSYour Name bool en_tdls; 79*5113495bSYour Name bool en_tdls_offchan; 80*5113495bSYour Name bool en_tdls_uapsd_buf_sta; 81*5113495bSYour Name bool en_tdls_uapsd_sleep_sta; 82*5113495bSYour Name bool en_tdls_wideband_support; 83*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 84*5113495bSYour Name bool en_tdls_11ax_support; 85*5113495bSYour Name bool en_tdls_6g_support; 86*5113495bSYour Name #endif 87*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 88*5113495bSYour Name bool en_tdls_mlo_support; 89*5113495bSYour Name bool en_n_link_mlo_support; 90*5113495bSYour Name #endif 91*5113495bSYour Name #endif /* FEATURE_WLAN_TDLS */ 92*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD 93*5113495bSYour Name bool en_roam_offload; 94*5113495bSYour Name #endif /* WLAN_FEATURE_ROAM_OFFLOAD */ 95*5113495bSYour Name bool en_11ax; 96*5113495bSYour Name bool get_peer_info_enabled; 97*5113495bSYour Name bool is_fils_roaming_supported; 98*5113495bSYour Name bool is_fw_mawc_capable; 99*5113495bSYour Name bool is_11k_offload_supported; 100*5113495bSYour Name bool twt_requestor; 101*5113495bSYour Name bool twt_responder; 102*5113495bSYour Name bool obss_scan_offload; 103*5113495bSYour Name bool bcn_reception_stats; 104*5113495bSYour Name bool is_roam_scan_ch_to_host; 105*5113495bSYour Name bool ll_stats_per_chan_rx_tx_time; 106*5113495bSYour Name #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION 107*5113495bSYour Name bool is_get_station_clubbed_in_ll_stats_req; 108*5113495bSYour Name #endif 109*5113495bSYour Name bool is_fw_therm_throt_supp; 110*5113495bSYour Name #ifdef WLAN_FEATURE_IGMP_OFFLOAD 111*5113495bSYour Name bool igmp_offload_enable; 112*5113495bSYour Name #endif 113*5113495bSYour Name bool en_11be; 114*5113495bSYour Name #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 115*5113495bSYour Name bool dynamic_vdev_macaddr_support; 116*5113495bSYour Name #endif 117*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 118*5113495bSYour Name bool is_mlo_per_link_stats_supported; 119*5113495bSYour Name #endif 120*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 121*5113495bSYour Name bool en_mlo_tid_to_link_support; 122*5113495bSYour Name #endif 123*5113495bSYour Name }; 124*5113495bSYour Name 125*5113495bSYour Name /** 126*5113495bSYour Name * struct wma_tgt_ht_cap - ht capabalitiy 127*5113495bSYour Name * @mpdu_density: mpdu density 128*5113495bSYour Name * @ht_rx_stbc: ht rx stbc 129*5113495bSYour Name * @ht_tx_stbc: ht tx stbc 130*5113495bSYour Name * @ht_rx_ldpc: ht rx ldpc 131*5113495bSYour Name * @ht_sgi_20: ht sgi 20 132*5113495bSYour Name * @ht_sgi_40: ht sgi 40 133*5113495bSYour Name * @num_rf_chains: num of rf chains 134*5113495bSYour Name * @dynamic_smps: Dynamic MIMO powersave 135*5113495bSYour Name */ 136*5113495bSYour Name struct wma_tgt_ht_cap { 137*5113495bSYour Name uint32_t mpdu_density; 138*5113495bSYour Name bool ht_rx_stbc; 139*5113495bSYour Name bool ht_tx_stbc; 140*5113495bSYour Name bool ht_rx_ldpc; 141*5113495bSYour Name bool ht_sgi_20; 142*5113495bSYour Name bool ht_sgi_40; 143*5113495bSYour Name uint32_t num_rf_chains; 144*5113495bSYour Name bool dynamic_smps; 145*5113495bSYour Name }; 146*5113495bSYour Name 147*5113495bSYour Name /** 148*5113495bSYour Name * struct wma_tgt_vht_cap - vht capabalities 149*5113495bSYour Name * @vht_max_mpdu: vht max mpdu 150*5113495bSYour Name * @supp_chan_width: supported channel width 151*5113495bSYour Name * @vht_rx_ldpc: vht rx ldpc 152*5113495bSYour Name * @vht_short_gi_80: vht short gi 80 153*5113495bSYour Name * @vht_short_gi_160: vht short gi 160 154*5113495bSYour Name * @vht_tx_stbc: vht tx stbc 155*5113495bSYour Name * @vht_rx_stbc: vht rx stbc 156*5113495bSYour Name * @vht_su_bformer: vht su bformer 157*5113495bSYour Name * @vht_su_bformee: vht su bformee 158*5113495bSYour Name * @vht_mu_bformer: vht mu bformer 159*5113495bSYour Name * @vht_mu_bformee: vht mu bformee 160*5113495bSYour Name * @vht_max_ampdu_len_exp: vht max ampdu len exp 161*5113495bSYour Name * @vht_txop_ps: vht txop ps 162*5113495bSYour Name * @vht_mcs_10_11_supp: VHT MCS 10 & 11 support 163*5113495bSYour Name */ 164*5113495bSYour Name struct wma_tgt_vht_cap { 165*5113495bSYour Name uint32_t vht_max_mpdu; 166*5113495bSYour Name uint32_t supp_chan_width; 167*5113495bSYour Name uint32_t vht_rx_ldpc; 168*5113495bSYour Name uint32_t vht_short_gi_80; 169*5113495bSYour Name uint32_t vht_short_gi_160; 170*5113495bSYour Name uint32_t vht_tx_stbc; 171*5113495bSYour Name uint32_t vht_rx_stbc; 172*5113495bSYour Name uint32_t vht_su_bformer; 173*5113495bSYour Name uint32_t vht_su_bformee; 174*5113495bSYour Name uint32_t vht_mu_bformer; 175*5113495bSYour Name uint32_t vht_mu_bformee; 176*5113495bSYour Name uint32_t vht_max_ampdu_len_exp; 177*5113495bSYour Name uint32_t vht_txop_ps; 178*5113495bSYour Name uint32_t vht_mcs_10_11_supp; 179*5113495bSYour Name }; 180*5113495bSYour Name 181*5113495bSYour Name /** 182*5113495bSYour Name * struct wma_tgt_aux_dev_caps - aux capability in wma layer 183*5113495bSYour Name * @supported_modes_bitmap: each bit define in WMI_AUX_DEV_CAPS_SUPPORTED_MODE 184*5113495bSYour Name * @listen_pdev_id_map: define which AUX MAC can listen/scan for the HW mode 185*5113495bSYour Name * @emlsr_pdev_id_map: define which AUX MAC can perform eMLSR for the HW mode 186*5113495bSYour Name */ 187*5113495bSYour Name struct wma_tgt_aux_dev_caps { 188*5113495bSYour Name uint32_t supported_modes_bitmap; 189*5113495bSYour Name uint32_t listen_pdev_id_map; 190*5113495bSYour Name uint32_t emlsr_pdev_id_map; 191*5113495bSYour Name }; 192*5113495bSYour Name 193*5113495bSYour Name /** 194*5113495bSYour Name * struct board_info - Structure for board related information 195*5113495bSYour Name * @bdf_version: board file version 196*5113495bSYour Name * @ref_design_id: reference design id 197*5113495bSYour Name * @customer_id: customer id 198*5113495bSYour Name * @project_id: project id 199*5113495bSYour Name * @board_data_rev: board data revision 200*5113495bSYour Name * 201*5113495bSYour Name * This board information will be stored in board file during the 202*5113495bSYour Name * calibration and customization. 203*5113495bSYour Name * 204*5113495bSYour Name */ 205*5113495bSYour Name struct board_info { 206*5113495bSYour Name uint32_t bdf_version; 207*5113495bSYour Name uint32_t ref_design_id; 208*5113495bSYour Name uint32_t customer_id; 209*5113495bSYour Name uint32_t project_id; 210*5113495bSYour Name uint32_t board_data_rev; 211*5113495bSYour Name }; 212*5113495bSYour Name 213*5113495bSYour Name /** 214*5113495bSYour Name * struct wma_tgt_cfg - target config 215*5113495bSYour Name * @target_fw_version: target fw version 216*5113495bSYour Name * @target_fw_vers_ext: target fw extended sub version 217*5113495bSYour Name * @band_cap: band capability bitmap 218*5113495bSYour Name * @reg_domain: reg domain 219*5113495bSYour Name * @eeprom_rd_ext: eeprom rd ext 220*5113495bSYour Name * @hw_macaddr: hw mcast addr 221*5113495bSYour Name * @services: struct wma_tgt_services 222*5113495bSYour Name * @ht_cap: struct wma_tgt_ht_cap 223*5113495bSYour Name * @vht_cap: struct wma_tgt_vht_cap 224*5113495bSYour Name * @max_intf_count: max interface count 225*5113495bSYour Name * @lpss_support: lpass support 226*5113495bSYour Name * @egap_support: enhanced green ap support 227*5113495bSYour Name * @nan_datapath_enabled: nan data path support 228*5113495bSYour Name * @he_cap: HE capability received from FW 229*5113495bSYour Name * @dfs_cac_offload: dfs and cac timer offloaded 230*5113495bSYour Name * @tx_bfee_8ss_enabled: Tx Beamformee support for 8x8 231*5113495bSYour Name * @dynamic_nss_chains_update: per vdev dynamic nss, chains update 232*5113495bSYour Name * @rcpi_enabled: for checking rcpi support 233*5113495bSYour Name * @obss_detection_offloaded: obss detection offloaded to firmware 234*5113495bSYour Name * @obss_color_collision_offloaded: obss color collision offloaded to firmware 235*5113495bSYour Name * @sar_version: Version of SAR supported by firmware 236*5113495bSYour Name * @legacy_bcast_twt_support: broadcast twt support 237*5113495bSYour Name * @restricted_80p80_bw_supp: Restricted 80+80MHz(165MHz BW) support 238*5113495bSYour Name * @twt_bcast_req_support: twt bcast requestor support 239*5113495bSYour Name * @twt_bcast_res_support: twt bcast responder support 240*5113495bSYour Name * @twt_nudge_enabled: twt nudge enable 241*5113495bSYour Name * @all_twt_enabled: all twt enabled 242*5113495bSYour Name * @twt_stats_enabled: twt stats enabled 243*5113495bSYour Name * 244*5113495bSYour Name */ 245*5113495bSYour Name struct wma_tgt_cfg { 246*5113495bSYour Name uint32_t target_fw_version; 247*5113495bSYour Name uint32_t target_fw_vers_ext; 248*5113495bSYour Name uint32_t band_cap; 249*5113495bSYour Name uint32_t reg_domain; 250*5113495bSYour Name uint32_t eeprom_rd_ext; 251*5113495bSYour Name struct qdf_mac_addr hw_macaddr; 252*5113495bSYour Name struct wma_tgt_services services; 253*5113495bSYour Name struct wma_tgt_ht_cap ht_cap; 254*5113495bSYour Name struct wma_tgt_vht_cap vht_cap; 255*5113495bSYour Name uint8_t max_intf_count; 256*5113495bSYour Name #ifdef WLAN_FEATURE_LPSS 257*5113495bSYour Name uint8_t lpss_support; 258*5113495bSYour Name #endif 259*5113495bSYour Name uint8_t ap_arpns_support; 260*5113495bSYour Name uint32_t fine_time_measurement_cap; 261*5113495bSYour Name #ifdef WLAN_FEATURE_NAN 262*5113495bSYour Name bool nan_datapath_enabled; 263*5113495bSYour Name #endif 264*5113495bSYour Name bool sub_20_support; 265*5113495bSYour Name uint16_t wmi_max_len; 266*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 267*5113495bSYour Name tDot11fIEhe_cap he_cap; 268*5113495bSYour Name uint8_t ppet_2g[HE_MAX_PPET_SIZE]; 269*5113495bSYour Name uint8_t ppet_5g[HE_MAX_PPET_SIZE]; 270*5113495bSYour Name tDot11fIEhe_cap he_cap_2g; 271*5113495bSYour Name tDot11fIEhe_cap he_cap_5g; 272*5113495bSYour Name uint16_t he_mcs_12_13_supp_2g; 273*5113495bSYour Name uint16_t he_mcs_12_13_supp_5g; 274*5113495bSYour Name #endif 275*5113495bSYour Name bool dfs_cac_offload; 276*5113495bSYour Name bool tx_bfee_8ss_enabled; 277*5113495bSYour Name bool dynamic_nss_chains_support; 278*5113495bSYour Name bool rcpi_enabled; 279*5113495bSYour Name bool obss_detection_offloaded; 280*5113495bSYour Name bool obss_color_collision_offloaded; 281*5113495bSYour Name uint32_t hw_bd_id; 282*5113495bSYour Name struct board_info hw_bd_info; 283*5113495bSYour Name enum sar_version sar_version; 284*5113495bSYour Name struct nan_tgt_caps nan_caps; 285*5113495bSYour Name bool legacy_bcast_twt_support; 286*5113495bSYour Name bool restricted_80p80_bw_supp; 287*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT 288*5113495bSYour Name bool twt_bcast_req_support; 289*5113495bSYour Name bool twt_bcast_res_support; 290*5113495bSYour Name bool twt_nudge_enabled; 291*5113495bSYour Name bool all_twt_enabled; 292*5113495bSYour Name bool twt_stats_enabled; 293*5113495bSYour Name #endif 294*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 295*5113495bSYour Name tDot11fIEeht_cap eht_cap; 296*5113495bSYour Name tDot11fIEeht_cap eht_cap_2g; 297*5113495bSYour Name tDot11fIEeht_cap eht_cap_5g; 298*5113495bSYour Name #endif 299*5113495bSYour Name struct wma_tgt_aux_dev_caps wma_aux0_dev_caps[WMI_HOST_HW_MODE_MAX]; 300*5113495bSYour Name }; 301*5113495bSYour Name #endif /* WMA_TGT_CFG_H */ 302