xref: /wlan-driver/qca-wifi-host-cmn/target_if/init_deinit/inc/service_ready_param.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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