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