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