xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852bs/phl/hal_g6/hal_api_mac.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /******************************************************************************
2  *
3  * Copyright(c) 2019 - 2020 Realtek Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  *****************************************************************************/
15 #ifndef _HAL_API_MAC_H_
16 #define _HAL_API_MAC_H_
17 #include "mac/mac_ax.h"
18 
19 
20 #define POLLING_HALMAC_TIME 5
21 #define POLLING_HALMAC_CNT 100
22 
23 #define hal_to_mac(_halinfo)	((struct mac_ax_adapter *)((_halinfo)->mac))
24 
25 #ifdef CONFIG_SDIO_HCI
26 u8 hal_mac_sdio_read8(struct rtw_hal_com_t *hal, u32 addr);
27 u16 hal_mac_sdio_read16(struct rtw_hal_com_t *hal, u32 addr);
28 u32 hal_mac_sdio_read32(struct rtw_hal_com_t *hal, u32 addr);
29 int hal_mac_sdio_write8(struct rtw_hal_com_t *hal, u32 addr, u8 value);
30 int hal_mac_sdio_write16(struct rtw_hal_com_t *hal, u32 addr, u16 value);
31 int hal_mac_sdio_write32(struct rtw_hal_com_t *hal, u32 addr, u32 value);
32 void hal_mac_sdio_read_mem(struct rtw_hal_com_t *hal,
33 					u32 addr, u32 cnt, u8 *pmem);
34 
35 #ifdef CONFIG_SDIO_INDIRECT_ACCESS
36 u8 hal_mac_sdio_iread8(struct rtw_hal_com_t *hal, u32 addr);
37 u16 hal_mac_sdio_iread16(struct rtw_hal_com_t *hal, u32 addr);
38 u32 hal_mac_sdio_iread32(struct rtw_hal_com_t *hal, u32 addr);
39 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */
40 
41 #endif /* CONFIG_SDIO_HCI */
42 
43 void rtw_hal_mac_get_version(char *ver_str, u16 len);
44 void rtw_hal_mac_get_fw_ver(struct hal_info_t *hal_info, char *ver_str, u16 len);
45 
46 u16 hal_mac_get_macid_num(struct hal_info_t *hal);
47 void hal_mac_get_hwinfo(struct hal_info_t *hal, struct hal_spec_t *hal_spec);
48 
49 #ifdef DBG_PHL_MAC_REG_RW
50 bool rtw_hal_mac_reg_chk(struct rtw_hal_com_t *hal_com, u32 addr);
51 #endif
52 
53 u32 rtw_hal_mac_init(struct rtw_phl_com_t *phl_com,
54 					struct hal_info_t *hal_info);
55 u32 rtw_hal_mac_deinit(struct rtw_phl_com_t *phl_com,
56 					struct hal_info_t *hal_info);
57 bool rtw_hal_mac_proc_cmd(struct hal_info_t *hal_info, struct rtw_proc_cmd *incmd,
58 						char *output, u32 out_len);
59 
60 enum rtw_hal_status rtw_hal_mac_get_pwr_state(struct hal_info_t *hal_info,
61 						enum rtw_mac_pwr_st *pwr_state);
62 
63 enum rtw_hal_status rtw_hal_mac_power_switch(struct rtw_phl_com_t *phl_com,
64 					     struct hal_info_t *hal_info,
65 					     u8 on_off);
66 
67 enum rtw_hal_status rtw_hal_mac_dbcc_pre_cfg(struct rtw_phl_com_t *phl_com,
68 					     struct hal_info_t *hal_info,
69 					     u8 dbcc_en);
70 enum rtw_hal_status rtw_hal_mac_dbcc_cfg(struct rtw_phl_com_t *phl_com,
71 					 struct hal_info_t *hal_info,
72 					 u8 dbcc_en);
73 enum rtw_hal_status
74 rtw_hal_mac_poll_hw_tx_done(struct hal_info_t *hal_info);
75 enum rtw_hal_status
76 rtw_hal_mac_hw_tx_resume(struct hal_info_t *hal_info);
77 enum rtw_hal_status
78 rtw_hal_mac_poll_hw_rx_done(struct hal_info_t *hal_info);
79 enum rtw_hal_status
80 rtw_hal_mac_hw_rx_resume(struct hal_info_t *hal_info);
81 
82 enum rtw_hal_status rtw_hal_mac_watchdog(struct hal_info_t *hal_info);
83 #ifdef CONFIG_PCI_HCI
84 enum rtw_hal_status rtw_hal_mac_set_pcicfg(struct hal_info_t *hal_info,
85 					struct mac_ax_pcie_cfgspc_param *pci_cfgspc);
86 enum rtw_hal_status rtw_hal_mac_ltr_set_pcie(struct hal_info_t *hal_info,
87 					enum rtw_pcie_bus_func_cap_t hw_ctrl,
88 					u8 idle_ctrl, u32 idle_val, u8 act_ctrl, u32 act_val);
89 
90 enum rtw_hal_status rtw_hal_mac_ltr_sw_trigger(struct hal_info_t *hal_info, enum rtw_pcie_ltr_state state);
91 enum rtw_hal_status hal_mac_set_l2_leave(struct hal_info_t *hal_info);
92 
93 enum rtw_hal_status rtw_hal_mac_poll_txdma_idle(struct hal_info_t *hal,
94 					struct mac_ax_txdma_ch_map *ch_map);
95 
96 enum rtw_hal_status rtw_hal_mac_poll_rxdma_idle(struct hal_info_t *hal,
97 					struct mac_ax_rxdma_ch_map *ch_map);
98 
99 enum rtw_hal_status rtw_hal_mac_clr_bdidx(struct hal_info_t *hal);
100 
101 enum rtw_hal_status rtw_hal_mac_rst_bdram(struct hal_info_t *hal);
102 
103 enum rtw_hal_status rtw_hal_mac_cfg_txdma(struct hal_info_t *hal,
104 					struct mac_ax_txdma_ch_map *ch_map);
105 
106 enum rtw_hal_status rtw_hal_mac_cfg_dma_io(struct hal_info_t *hal, u8 en);
107 
108 #endif
109 
110 
111 #ifdef CONFIG_USB_HCI
112 u8 hal_mac_get_bulkout_id(struct hal_info_t *hal, u8 ch_dma, u8 mode);
113 u32 hal_mac_usb_tx_agg_cfg(struct hal_info_t *hal, u8* wd_buf, u8 agg_num);
114 u32 hal_mac_usb_rx_agg_cfg(struct hal_info_t *hal, u8 agg_mode,
115 	u8 drv_define, u8 timeout, u8 size, u8 pkt_num);
116 u8 hal_mac_usb_get_max_bulkout_wd_num(struct hal_info_t *hal);
117 enum rtw_hal_status hal_mac_force_usb_switch(struct hal_info_t *hal);
118 u32 hal_mac_get_cur_usb_mode(struct hal_info_t *hal);
119 u32 hal_mac_get_usb_support_ability(struct hal_info_t *hal);
120 #endif
121 
122 #ifdef CONFIG_SDIO_HCI
123 void rtw_hal_mac_sdio_cfg(struct rtw_phl_com_t *phl_com,
124 	struct hal_info_t *hal_info, struct rtw_ic_info *ic_info);
125 void rtw_hal_mac_sdio_tx_cfg(struct rtw_hal_com_t *hal);
126 void rtw_hal_mac_sdio_rx_agg_cfg(struct rtw_hal_com_t *hal, bool enable,
127 				 u8 drv_define, u8 timeout, u8 size, u8 pkt_num);
128 bool rtw_hal_mac_sdio_check_tx_allow(struct rtw_hal_com_t *hal, u8 dma_ch,
129 				     u8 *buf, u32 len, u8 agg_count,
130 				     u16 *pkt_len, u8 *wp_offset, u32 *txaddr,
131 				     u32 *txlen);
132 int rtw_hal_mac_sdio_parse_rx(struct rtw_hal_com_t *hal,
133 			      struct rtw_rx_buf *rxbuf);
134 int rtw_hal_mac_sdio_rx(struct rtw_hal_com_t *hal,
135 			struct rtw_rx_buf *rxbuf);
136 #endif
137 
138 struct hal_init_info_t {
139 	struct mac_ax_trx_info trx_info;
140 	struct mac_ax_intf_info intf_info;
141 	char *ic_name;
142 };
143 enum rtw_hal_status
144 rtw_hal_mac_init_mac(void *mac, struct hal_init_info_t *init_info);
145 
146 enum rtw_hal_status
147 rtw_hal_mac_trx_init(void *mac, struct hal_init_info_t *init_info);
148 
149 enum rtw_hal_status
150 rtw_hal_mac_hal_init(struct rtw_phl_com_t *phl_com,
151 		     struct hal_info_t *hal_info,
152 		     struct hal_init_info_t *init_info);
153 
154 enum rtw_hal_status
155 rtw_hal_mac_hal_fast_init(struct rtw_phl_com_t *phl_com,
156 			  struct hal_info_t *hal_info,
157 			  struct hal_init_info_t *init_info);
158 
159 enum rtw_hal_status
160 rtw_hal_mac_hal_deinit(struct rtw_phl_com_t *phl_com, struct hal_info_t *hal_info);
161 
162 enum rtw_hal_status rtw_hal_mac_chk_allq_empty(struct hal_info_t *hal_info, u8 *empty);
163 
164 #ifdef CONFIG_WOWLAN
165 enum rtw_hal_status
166 rtw_hal_mac_cfg_wow_sleep(struct hal_info_t *hal_info, u8 sleep);
167 enum rtw_hal_status
168 rtw_hal_mac_get_wow_fw_status(struct hal_info_t *hal_info, u8 *status, u8 func_en);
169 
170 enum rtw_hal_status
171 rtw_hal_mac_cfg_wow_wake(struct hal_info_t *hal_info, u16 macid, u8 en, struct rtw_wow_wake_info *info);
172 
173 enum rtw_hal_status
174 rtw_hal_mac_cfg_disc_dec(struct hal_info_t *hal_info, u16 macid, u8 en, struct rtw_disc_det_info *info);
175 
176 enum rtw_hal_status
177 rtw_hal_mac_cfg_dev2hst_gpio(struct hal_info_t *hal_info, u8 en, struct rtw_wow_gpio_info *cfg);
178 
179 enum rtw_hal_status
180 rtw_hal_mac_cfg_keep_alive(struct hal_info_t *hal_info, u16 macid, u8 en, struct rtw_keep_alive_info *info);
181 
182 enum rtw_hal_status
183 rtw_hal_mac_cfg_ndp_ofld(struct hal_info_t *hal_info, u16 macid, u8 en, struct rtw_ndp_ofld_info *cfg);
184 
185 enum rtw_hal_status
186 rtw_hal_mac_cfg_arp_ofld(struct hal_info_t *hal_info, u16 macid, u8 en, struct rtw_arp_ofld_info *cfg);
187 
188 enum rtw_hal_status
189 rtw_hal_mac_cfg_gtk_ofld(struct hal_info_t *hal_info, u16 macid, u8 en, struct rtw_gtk_ofld_info *cfg);
190 
191 enum rtw_hal_status
192 rtw_hal_mac_cfg_realwow(struct hal_info_t *hal_info, u16 macid, u8 en, struct rtw_realwow_info *cfg);
193 
194 enum rtw_hal_status rtw_hal_mac_get_wake_rsn(struct hal_info_t *hal_info, u8 *wake_rsn, u8 *reset);
195 
196 enum rtw_hal_status
197 rtw_hal_mac_cfg_wow_cam(struct hal_info_t *hal_info, u16 macid, u8 en, struct rtw_pattern_match_info *cfg);
198 
199 enum rtw_hal_status
200 rtw_hal_mac_get_aoac_rpt(struct hal_info_t *hal_info, struct rtw_aoac_report *aoac_info, u8 rx_ready);
201 
202 enum rtw_hal_status rtw_hal_mac_set_wowlan(struct hal_info_t *hal, u8 enter);
203 enum rtw_hal_status rtw_hal_mac_wow_chk_txq_empty(struct hal_info_t *hal, u8 *empty);
204 enum rtw_hal_status rtw_hal_mac_wow_wde_drop(struct hal_info_t *hal, u8 band);
205 
206 enum rtw_hal_status
207 rtw_hal_mac_scan_ofld_add_ch(struct hal_info_t *hal,
208 struct scan_ofld_ch_info *cfg, bool ofld);
209 
210 enum rtw_hal_status
211 rtw_hal_mac_scan_ofld_fw_busy(struct hal_info_t *hal);
212 
213 enum rtw_hal_status
214 rtw_hal_mac_scan_ofld_chlist_busy(struct hal_info_t *hal);
215 
216 enum rtw_hal_status
217 rtw_hal_mac_scan_ofld(struct hal_info_t *hal, u16 mac_id, u8 hw_band, u8 hw_port,
218 	struct scan_ofld_info *cfg);
219 
220 enum rtw_hal_status
221 rtw_hal_mac_cfg_nlo(struct hal_info_t *hal, u16 macid, u8 en,
222 	struct rtw_nlo_info *cfg);
223 
224 #endif /* CONFIG_WOWLAN */
225 
226 enum rtw_hal_status
227 rtw_hal_mac_ax_fill_txdesc(void *mac, struct rtw_xmit_req *treq,
228 					u8 *wd_buf, u32 *wd_len);
229 
230 enum rtw_hal_status
231 rtw_hal_mac_enable_cpu(struct hal_info_t *hal_info, u8 reason, u8 dlfw);
232 
233 enum rtw_hal_status
234 rtw_hal_mac_disable_cpu(struct hal_info_t *hal_info);
235 
236 enum rtw_hal_status
237 rtw_hal_mac_romdl(struct hal_info_t *hal_info, u8 *rom_buf, u32 rom_size);
238 
239 enum rtw_hal_status
240 rtw_hal_mac_fwdl(struct hal_info_t *hal_info, u8 *fw_buf, u32 fw_size);
241 
242 enum rtw_hal_status
243 rtw_hal_mac_enable_fw(struct hal_info_t *hal_info, u8 fw_type);
244 
245 enum rtw_hal_status
246 rtw_hal_mac_set_hw_ampdu_cfg(struct hal_info_t *hal_info, u8 band,
247 								  u16 max_agg_num, u8 max_agg_time);
248 
249 enum rtw_hal_status rtw_hal_dmc_tbl_cfg(struct hal_info_t *hal_info,
250 					struct mac_ax_dctl_info *dctl_info,
251 					struct mac_ax_dctl_info *dctl_info_mask,
252 					u16 macid);
253 
254 enum rtw_hal_status rtw_hal_cmc_tbl_cfg(struct hal_info_t *hal_info,
255 				struct rtw_hal_mac_ax_cctl_info *cctl_info,
256 				struct rtw_hal_mac_ax_cctl_info *cctl_info_mask,
257 				u16 macid);
258 
259 enum rtw_hal_status rtw_hal_bacam_cfg(struct hal_info_t *hal_info,
260 				      struct mac_ax_bacam_info *ba_cam);
261 
262 enum rtw_hal_status
263 rtw_hal_mac_port_init(struct hal_info_t *hal_info,
264 			struct rtw_wifi_role_t *wifi_role);
265 
266 enum rtw_hal_status
267 rtw_hal_mac_port_cfg(struct hal_info_t *hal_info,
268 			struct rtw_wifi_role_t *wifi_role,
269 			enum pcfg_type type, void *param);
270 
271 enum rtw_hal_status
272 rtw_hal_mac_role_sync(struct hal_info_t *hal_info,
273 	struct rtw_phl_stainfo_t *sta);
274 
275 enum rtw_hal_status
276 rtw_hal_mac_addr_cam_add_entry(struct hal_info_t *hal_info,
277 					struct rtw_phl_stainfo_t *sta);
278 enum rtw_hal_status
279 rtw_hal_mac_addr_cam_change_entry(struct hal_info_t *hal_info,
280 					struct rtw_phl_stainfo_t *sta,
281 					enum phl_upd_mode mode,
282 					bool is_connect);
283 enum rtw_hal_status
284 rtw_hal_mac_addr_cam_del_entry(struct hal_info_t *hal_info,
285 					struct rtw_phl_stainfo_t *sta);
286 
287 enum rtw_hal_status
288 rtw_hal_mac_add_key(struct hal_info_t *hal_info, u8 macid, u8 type, u8 ext_key,
289 					u8 spp,	u8 keyid, u8 keytype, u8 *keybuf);
290 enum rtw_hal_status
291 rtw_hal_mac_delete_key(struct hal_info_t *hal_info, u8 macid, u8 type,
292 						u8 ext_key, u8 spp, u8 keyid, u8 keytype);
293 
294 u32
295 rtw_hal_mac_search_key_idx(struct hal_info_t *hal_info, u8 macid, u8 keyid, u8 keytype);
296 
297 u32
298 rtw_hal_mac_ser_reset_wdt_intr(struct hal_info_t *hal_info);
299 
300 enum rtw_hal_status
301 rtw_hal_mac_ser_get_error_status(struct hal_info_t *hal_info, u32 *err);
302 
303 enum rtw_hal_status
304 rtw_hal_mac_ser_set_error_status(struct hal_info_t *hal_info, enum RTW_PHL_SER_RCVY_STEP err);
305 
306 enum rtw_hal_status
307 rtw_hal_mac_trigger_cmac_err(struct hal_info_t *hal_info);
308 
309 enum rtw_hal_status
310 rtw_hal_mac_trigger_dmac_err(struct hal_info_t *hal_info);
311 
312 enum rtw_hal_status
313 rtw_hal_mac_lv1_rcvy(struct hal_info_t *hal_info, enum rtw_phl_ser_lv1_recv_step step);
314 
315 enum rtw_hal_status rtw_hal_mac_ser_ctrl(struct hal_info_t *hal_info, bool en);
316 
317 enum rtw_hal_status
318 rtw_hal_mac_dump_fw_rsvd_ple(struct hal_info_t *hal_info);
319 
320 enum rtw_hal_status
321 rtw_hal_mac_set_bw(struct hal_info_t *hal_info,	u8 band_idx, u8 pri_ch,
322 		u8 central_ch_seg0, u8 central_ch_seg1,	enum band_type band, enum channel_width bw);
323 
324 enum rtw_hal_status
325 rtw_hal_mac_ax_set_bf_entry(void *mac, u8 band, u8 macid,
326 			    u8 bfee_idx, u16 txbf_idx, u16 buffer_idx);
327 
328 enum rtw_hal_status
329 rtw_hal_mac_ax_get_snd_sts(void *mac, u8 band, u8 bfee_idx);
330 
331 enum rtw_hal_status
332 rtw_hal_mac_ax_bfee_para_reg(void *mac, struct rtw_phl_stainfo_t *sta);
333 
334 enum rtw_hal_status
335 rtw_hal_mac_ax_bfee_para_cctl(void *mac, struct rtw_phl_stainfo_t *sta);
336 
337 enum rtw_hal_status
338 rtw_hal_mac_bfee_set_vht_gid(struct hal_info_t *hal,
339 			     u8 band, struct rtw_phl_gid_pos_tbl *tbl);
340 
341 enum rtw_hal_status
342 rtw_hal_mac_ax_hw_snd_control(void *mac, u8 band, u8 hw_snd_ctrl);
343 
344 enum rtw_hal_status
345 rtw_hal_mac_ax_mu_sta_upd(void *mac, u8 macid, u8 bfmu_idx,
346 			enum rtw_hal_protection_type prot_type,
347 			enum rtw_hal_ack_resp_type resp_type, u8 mugrp_bm);
348 
349 enum rtw_hal_status
350 rtw_hal_mac_ax_mu_decision_para(void *mac, u32 mu_thold,
351 	bool bypass_thold, bool bypass_tp);
352 
353 enum rtw_hal_status
354 rtw_hal_mac_ax_set_mu_fix_mode(
355 	void *mac, u8 gid, enum rtw_hal_protection_type prot_type,
356 	enum rtw_hal_ack_resp_type resp_type,
357 	bool fix_mu, bool he, bool fix_resp, bool fix_prot);
358 
359 enum rtw_hal_status
360 rtw_hal_mac_ax_set_mu_table_whole(void *mac, void *hal_score_tbl);
361 
362 enum rtw_hal_status
363 rtw_hal_mac_ax_snd_fx_cmd(void *mac, u8 *cmd_buf);
364 
365 enum rtw_hal_status
366 rtw_hal_mac_parse_c2h(void *hal, u8 *buf, u32 buf_len, void *c2h);
367 
368 enum rtw_hal_status
369 rtw_hal_mac_ax_parse_ppdu_sts(void *hal, u8 mac_valid, u8 *buf, u16 buf_l,
370 							  void *ppdu_sts, void *rx_mdata);
371 enum rtw_hal_status
372 rtw_hal_hdr_conv_cfg(struct hal_info_t *hal_info, u8 en_hdr_conv);
373 enum rtw_hal_status
374 rtw_hal_mac_enable_bb_rf(struct hal_info_t *hal_info, u8 enable);
375 
376 #ifdef RTW_PHL_BCN
377 enum rtw_hal_status
378 hal_mac_ax_config_beacon(struct hal_info_t *hal, struct rtw_bcn_entry *bcn_entry);
379 
380 enum rtw_hal_status
381 hal_mac_ax_send_beacon(struct hal_info_t *hal, struct rtw_bcn_entry *bcn_entry);
382 #endif
383 
384 enum rtw_hal_status
385 rtw_hal_mac_ppdu_stat_cfg(struct hal_info_t *hal_info,
386 				u8 band_idx, bool ppdu_stat_en,
387 				u8 appen_info, u8 filter);
388 enum rtw_hal_status rtw_hal_mac_config_hw_mgnt_sec( struct hal_info_t *hal_info, u8 en);
389 enum rtw_hal_status rtw_hal_mac_get_append_fcs(struct hal_info_t *hal_info, u8 *val);
390 enum rtw_hal_status rtw_hal_mac_get_acpt_icv_err(struct hal_info_t *hal_info, u8 *val);
391 
392 
393 #ifdef CONFIG_PHL_CHANNEL_INFO
394 enum rtw_hal_status
395 rtw_hal_mac_chan_info_cfg(struct hal_info_t *hal_info,
396 				bool chinfo_en, u8 macid,
397 				u8 mode, u8 filter, u8 sg_size);
398 #endif
399 
400 void rtw_hal_mac_dbg_status_dump(struct hal_info_t *hal, struct hal_mac_dbg_dump_cfg *cfg);
401 
402 #ifdef CONFIG_PHL_DFS
403 enum rtw_hal_status
404 rtw_hal_mac_dfs_rpt_cfg(struct hal_info_t *hal_info,
405 				bool rpt_en, u8 rpt_num, u8 rpt_to);
406 enum rtw_hal_status
407 rtw_hal_mac_parse_dfs(struct hal_info_t *hal_info,
408 			u8 *buf, u32 buf_len, struct mac_ax_dfs_rpt *dfs_rpt);
409 #endif /*CONFIG_PHL_DFS*/
410 u32
411 rtw_hal_mac_lamode_trig(struct rtw_hal_com_t *hal_com, u8 trig);
412 
413 enum rtw_hal_status
414 rtw_hal_mac_lamode_cfg_buf(struct rtw_hal_com_t *hal_com, u8 buf_sel,
415 			   u32 *addr_start, u32 *addr_end);
416 
417 enum rtw_hal_status
418 rtw_hal_mac_lamode_cfg(struct rtw_hal_com_t *hal_com, u8 func_en,
419 		       u8 restart_en, u8 timeout_en, u8 timeout_val,
420 		       u8 data_loss_imr, u8 la_tgr_tu_sel, u8 tgr_time_val);
421 enum rtw_hal_status
422 rtw_hal_mac_get_lamode_st(struct rtw_hal_com_t *hal_com, u8 *la_state,
423 			  u16 *la_finish_addr, bool *la_round_up,
424 			  bool *la_loss_data);
425 
426 void
427 rtl_hal_dump_sec_cam_tbl(struct rtw_hal_com_t *hal_com);
428 
429 enum rtw_hal_status
430 rtw_hal_mac_set_rxfltr_by_mode(struct rtw_hal_com_t *hal_com, u8 band,
431 			       enum rtw_rx_fltr_mode mode);
432 enum rtw_hal_status
433 rtw_hal_mac_set_rxfltr_acpt_crc_err(struct rtw_hal_com_t *hal_com,
434 				    u8 band, u8 enable);
435 enum rtw_hal_status
436 rtw_hal_mac_set_rxfltr_mpdu_size(struct rtw_hal_com_t *hal_com,
437 				 u8 band, u16 size);
438 enum rtw_hal_status
439 rtw_hal_mac_set_rxfltr_by_type(struct rtw_hal_com_t *hal_com, u8 band,
440 			       u8 type, u8 target);
441 enum rtw_hal_status
442 rtw_hal_mac_set_rxfltr_by_subtype(struct rtw_hal_com_t *hal_com, u8 band,
443 				  u8 type, u8 subtype, u8 target);
444 
445 enum rtw_hal_status
446 rtw_hal_mac_fw_log_cfg(struct rtw_hal_com_t *hal_com,
447 			struct rtw_hal_fw_log_cfg *fl_cfg);
448 
449 enum rtw_hal_status rtw_hal_set_macid_pause(void *hinfo,
450                                             u16 macid,
451                                             bool pause);
452 
453 void
454 rtw_hal_mac_get_buffer_data(struct rtw_hal_com_t *hal_com, u32 strt_addr,
455 			    u8 *buf, u32 len, u32 dbg_path);
456 
457 enum rtw_hal_status rtw_hal_mac_pkt_ofld(struct hal_info_t *hal, u8 *id, u8 op,
458 						u8 *pkt, u16 *len);
459 enum rtw_hal_status rtw_hal_mac_pkt_update_ids(struct hal_info_t *hal,
460 						struct pkt_ofld_entry *entry);
461 
462 enum rtw_hal_status rtw_hal_mac_reset_pkt_ofld_state(struct hal_info_t *hal_info);
463 
464 
465 enum rtw_hal_status
466 rtw_hal_mac_set_edca(struct rtw_hal_com_t *hal_com,
467                      u8 band,
468                      u8 wmm,
469                      u8 ac,
470                      u32 param);
471 enum rtw_hal_status
472 rtw_hal_mac_get_ampdu_cfg(struct rtw_hal_com_t *hal_com,
473                           u8 band,
474                           struct mac_ax_ampdu_cfg *cfg);
475 enum rtw_hal_status
476 rtw_hal_mac_set_rty_lmt(struct rtw_hal_com_t *hal_com, u8 macid,
477 	u8 rts_lmt_sel, u8 rts_lmt_val, u8 data_lmt_sel, u8 data_lmt_val);
478 enum rtw_hal_status
479 rtw_hal_mac_is_tx_mgnt_empty(struct hal_info_t *hal_info, u8 band, u8 *st);
480 
481 enum rtw_hal_status
482 rtw_hal_mac_fw_dbg_dump(struct hal_info_t *hal_info);
483 enum rtw_hal_status
484 rtw_hal_mac_ps_notify_wake(struct hal_info_t *hal_info);
485 enum rtw_hal_status
486 rtw_hal_mac_req_pwr_state(struct hal_info_t *hal_info, u8 pwr_state);
487 enum rtw_hal_status
488 rtw_hal_mac_chk_pwr_state(struct hal_info_t *hal_info, u8 pwr_state, u32 *mac_sts);
489 enum rtw_hal_status
490 rtw_hal_mac_lps_cfg(struct hal_info_t *hal_info,
491 			struct rtw_hal_lps_info *lps_info);
492 enum rtw_hal_status
493 rtw_hal_mac_lps_chk_leave(struct hal_info_t *hal_info, u16 macid, u32 *mac_sts);
494 enum rtw_hal_status
495 rtw_hal_mac_ips_cfg(struct hal_info_t *hal_info, u16 macid, bool enable);
496 enum rtw_hal_status
497 rtw_hal_mac_ips_chk_leave(struct hal_info_t *hal_info, u16 macid);
498 
499 enum rtw_hal_status
500 rtw_hal_mac_lps_chk_access(struct hal_info_t *hal_info, u32 offset);
501 
502 enum rtw_hal_status
503 hal_mac_ax_send_fw_snd(struct hal_info_t *hal_info,
504 		       struct hal_ax_fwcmd_snd *hal_cmd);
505 
506 enum rtw_hal_status
507 rtw_hal_mac_tx_mode_sel(struct hal_info_t *hal_info, u8 fw_tx, u8 txop_wmm_en_bm);
508 
509 enum rtw_hal_status
510 rtw_hal_mac_get_rx_cnt(struct hal_info_t *hal_info, u8 cur_phy_idx, u8 type_idx, u32 *ret_value);
511 enum rtw_hal_status
512 rtw_hal_mac_set_reset_rx_cnt(struct hal_info_t *hal_info, u8 cur_phy_idx);
513 
514 #ifdef CONFIG_PHL_TWT
515 enum rtw_hal_status
516 rtw_hal_mac_twt_info_update(void *hal, struct rtw_phl_twt_info twt_info, struct rtw_wifi_role_t *role, u8 action);
517 
518 enum rtw_hal_status
519 rtw_hal_mac_twt_sta_update(void *hal, u8 macid, u8 twt_id, u8 action);
520 
521 enum rtw_hal_status
522 rtw_hal_mac_twt_sta_announce(void *hal, u8 macid);
523 #endif /* CONFIG_PHL_TWT */
524 
525 enum rtw_hal_status
526 rtw_hal_mac_ax_bfee_set_csi_rrsc(void *mac, u8 band, u32 rrsc);
527 
528 u32 rtw_hal_mac_process_c2h(void *hal, struct rtw_c2h_info *c2h);
529 
530 enum rtw_hal_status
531 rtw_hal_mac_f2p_test_cmd(struct hal_info_t *hal_info,
532 						struct mp_mac_ax_f2p_test_para *info,
533 						struct mp_mac_ax_f2p_wd *f2pwd,
534 						struct mp_mac_ax_f2p_tx_cmd *ptxcmd,
535 						u8 *psigb_addr);
536 enum rtw_hal_status
537 rtw_hal_mac_set_mu_edca(struct rtw_hal_com_t *hal_com, u8 band, u8 ac,
538 	u16 timer, u8 cw_min, u8 cw_max, u8 aifs);
539 enum rtw_hal_status
540 rtw_hal_mac_set_mu_edca_ctrl(struct rtw_hal_com_t *hal_com,
541 	u8 band, u8 wmm, u8 set);
542 
543 enum rtw_hal_status rtw_hal_mac_led_set_ctrl_mode(struct hal_info_t *hal_info,
544 						  enum mac_ax_led_mode mode,
545 						  u8 led_id);
546 enum rtw_hal_status rtw_hal_mac_led_ctrl(struct hal_info_t *hal_info, u8 high,
547 					 u8 led_id);
548 
549 enum rtw_hal_status rtw_hal_mac_sw_gpio_ctrl(struct hal_info_t *hal_info, u8 high,
550 					 u8 gpio);
551 enum rtw_hal_status rtw_hal_mac_set_sw_gpio_mode(struct hal_info_t *hal_info, enum rtw_gpio_mode mode,
552 					 u8 gpio);
553 
554 enum rtw_hal_status rtw_hal_mac_get_wl_dis_val(struct hal_info_t *hal_info, u8 *val);
555 
556 enum rtw_hal_status
557 rtw_hal_mac_pcie_trx_mit(struct hal_info_t *hal_info,
558 			 struct mac_ax_pcie_trx_mitigation *mit_info);
559 
560 enum rtw_hal_status
561 rtw_hal_mac_tsf_sync(struct hal_info_t *hal_info,
562 						u8 from_port, u8 to_port, enum phl_band_idx band,
563 						s32 sync_offset_tu, enum hal_tsf_sync_act action);
564 
565 enum rtw_hal_status
566 rtw_hal_mac_get_sec_cam(struct hal_info_t *hal_info, u16 num, u8 *buf, u16 size);
567 enum rtw_hal_status
568 rtw_hal_mac_get_addr_cam(struct hal_info_t *hal_info, u16 num, u8 *buf, u16 size);
569 
570 enum rtw_hal_status rtw_hal_mac_get_tsf(struct hal_info_t *hal, u8 *port,
571 					u32 *tsf_h, u32 *tsf_l);
572 
573 enum rtw_hal_status rtw_hal_mac_cfg_txhci(struct hal_info_t *hal,u8 en);
574 
575 enum rtw_hal_status rtw_hal_mac_cfg_rxhci(struct hal_info_t *hal,u8 en);
576 
577 #ifdef CONFIG_MCC_SUPPORT
578 enum rtw_hal_status rtw_hal_mac_add_mcc(struct hal_info_t *hal,
579 					struct rtw_phl_mcc_role *mcc_role);
580 
581 enum rtw_hal_status rtw_hal_mac_start_mcc(struct hal_info_t *hal,
582 		u8 group, u8 macid, u32 tsf_high, u32 tsf_low, u8 btc_in_group,
583 		u8 old_group_action, u8 old_group);
584 
585 enum rtw_hal_status rtw_hal_mac_stop_mcc(struct hal_info_t *hal, u8 group,
586 					u8 macid);
587 
588 enum rtw_hal_status rtw_hal_mac_reset_mcc_group(struct hal_info_t *hal, u8 group);
589 
590 enum rtw_hal_status rtw_hal_mac_del_mcc_group(struct hal_info_t *hal, u8 group);
591 
592 enum rtw_hal_status rtw_hal_mac_mcc_request_tsf(struct hal_info_t *hal,
593 					u8 group, u8 macid_x, u8 macid_y);
594 
595 enum rtw_hal_status rtw_hal_mac_mcc_macid_bitmap(struct hal_info_t *hal,
596 					u8 group, u8 macid, u8 *bitmap, u8 len);
597 
598 enum rtw_hal_status rtw_hal_mac_mcc_sync_enable(struct hal_info_t *hal,
599 				u8 group, u8 source, u8 target, u8 offset);
600 
601 enum rtw_hal_status rtw_hal_mac_set_duration(struct hal_info_t *hal,
602 					struct rtw_phl_mcc_en_info *en_info,
603 					struct rtw_phl_mcc_bt_info *bt_info);
604 
605 enum rtw_hal_status rtw_hal_mac_get_mcc_tsf_rpt(struct hal_info_t *hal,
606 					u8 group, u32 *tsf_x_h, u32 *tsf_x_l,
607 					u32 *tsf_y_h, u32 *tsf_y_l);
608 
609 enum rtw_hal_status rtw_hal_mac_get_mcc_status_rpt(struct hal_info_t *hal,
610 				u8 group, u8 *status, u32 *tsf_h, u32 *tsf_l);
611 
612 enum rtw_hal_status rtw_hal_mac_get_mcc_group(struct hal_info_t *hal, u8 *group);
613 #endif /* CONFIG_MCC_SUPPORT */
614 void rtw_hal_mac_notification(struct hal_info_t *hal_info,
615                               enum phl_msg_evt_id event,
616                               u8 band);
617 
618 void rtw_hal_mac_cmd_notification(struct hal_info_t *hal_info,
619                               void *hal_cmd,
620                               u8 band);
621 
622 enum rtw_hal_status rtw_hal_mac_set_hw_rts_th(struct hal_info_t *hal, u8 band,
623 					      u16 time_th, u16 len_th);
624 
625 enum rtw_hal_status rtw_hal_mac_set_dfs_tb_ctrl(struct hal_info_t *hal, u8 set);
626 
627 enum rtw_hal_status
628 rtw_hal_mac_trigger_fw_conflict(struct hal_info_t *hal_com, u32 addr, u8 vol);
629 
630 u8 rtw_hal_mac_get_efuse_ver_len(struct rtw_hal_com_t *hal_com);
631 
632 #ifdef CONFIG_PHL_P2PPS
633 enum rtw_hal_status rtw_hal_mac_noa_init(struct hal_info_t *hal,
634 	struct rtw_phl_noa_info *noa_info,
635 	struct rtw_phl_noa_desc *in_desc,
636 	u16 macid);
637 
638 enum rtw_hal_status rtw_hal_mac_noa_update(struct hal_info_t *hal,
639 	struct rtw_phl_noa_info *noa_info,
640 	struct rtw_phl_noa_desc *in_desc,
641 	u16 macid);
642 
643 enum rtw_hal_status rtw_hal_mac_noa_remove(struct hal_info_t *hal,
644 	struct rtw_phl_noa_info *noa_info,
645 	struct rtw_phl_noa_desc *in_desc,
646 	u16 macid);
647 
648 enum rtw_hal_status rtw_hal_mac_noa_terminate(struct hal_info_t *hal,
649 	struct rtw_phl_noa_info *noa_info,
650 	struct rtw_phl_noa_desc *in_desc,
651 	u16 macid);
652 
653 enum rtw_hal_status rtw_hal_mac_tsf32_tog_enable(struct hal_info_t *hal,
654 	u8 hw_band,
655 	u8 port,
656 	u16 early);
657 
658 enum rtw_hal_status rtw_hal_mac_tsf32_tog_disable(struct hal_info_t *hal,
659 	u8 hw_band,
660 	u8 port);
661 
662 enum rtw_hal_status rtw_hal_mac_get_tsf32_tog_rpt(struct hal_info_t *hal,
663 	struct rtw_phl_tsf32_tog_rpt *rpt);
664 
665 #endif
666 enum rtw_hal_status
667 rtw_hal_mac_addr_cam_set_aid(struct hal_info_t *hal_info,
668 			     struct rtw_phl_stainfo_t *sta,
669 			     u16 aid);
670 
671 enum rtw_hal_status
672 rtw_hal_mac_set_tx_lifetime(struct hal_info_t *hal, enum phl_band_idx band,
673 			    bool acq_en, bool mgq_en, u16 acq_val, u16 mgq_val);
674 
675 enum rtw_hal_status
676 rtw_hal_mac_patch_rx_rate(struct hal_info_t *hal_info, struct rtw_r_meta_data *mdata);
677 enum rtw_hal_status
678 rtw_hal_mac_set_tx_duty(struct hal_info_t *hal_info,
679 			u16 pause_interval,
680 			u16 tx_interval);
681 
682 enum rtw_hal_status
683 rtw_hal_mac_stop_tx_duty(struct hal_info_t *hal_info);
684 #endif /*_HAL_API_MAC_H_*/
685