xref: /wlan-driver/qcacld-3.0/core/wma/inc/wma_tgt_cfg.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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