#include <linux/iopoll.h>
#include "main.h"
#include "coex.h"
#include "fw.h"
#include "tx.h"
#include "reg.h"
#include "sec.h"
#include "debug.h"
#include "util.h"
#include "wow.h"
#include "ps.h"
#include "phy.h"
#include "mac.h"
static const struct rtw_hw_reg_desc fw_h2c_regs[] = …;
static const struct rtw_hw_reg_desc fw_c2h_regs[] = …;
static const struct rtw_hw_reg_desc fw_core_regs[] = …;
static void _rtw_fw_dump_dbg_info(struct rtw_dev *rtwdev,
const struct rtw_hw_reg_desc regs[], u32 size)
{ … }
void rtw_fw_dump_dbg_info(struct rtw_dev *rtwdev)
{ … }
static void rtw_fw_c2h_cmd_handle_ext(struct rtw_dev *rtwdev,
struct sk_buff *skb)
{ … }
static u16 get_max_amsdu_len(u32 bit_rate)
{ … }
struct rtw_fw_iter_ra_data { … };
static void rtw_fw_ra_report_iter(void *data, struct ieee80211_sta *sta)
{ … }
static void rtw_fw_ra_report_handle(struct rtw_dev *rtwdev, u8 *payload,
u8 length)
{ … }
struct rtw_beacon_filter_iter_data { … };
static void rtw_fw_bcn_filter_notify_vif_iter(void *data,
struct ieee80211_vif *vif)
{ … }
static void rtw_fw_bcn_filter_notify(struct rtw_dev *rtwdev, u8 *payload,
u8 length)
{ … }
static void rtw_fw_scan_result(struct rtw_dev *rtwdev, u8 *payload,
u8 length)
{ … }
static void rtw_fw_adaptivity_result(struct rtw_dev *rtwdev, u8 *payload,
u8 length)
{ … }
void rtw_fw_c2h_cmd_handle(struct rtw_dev *rtwdev, struct sk_buff *skb)
{ … }
void rtw_fw_c2h_cmd_rx_irqsafe(struct rtw_dev *rtwdev, u32 pkt_offset,
struct sk_buff *skb)
{ … }
EXPORT_SYMBOL(…);
void rtw_fw_c2h_cmd_isr(struct rtw_dev *rtwdev)
{ … }
EXPORT_SYMBOL(…);
static void rtw_fw_send_h2c_command_register(struct rtw_dev *rtwdev,
struct rtw_h2c_register *h2c)
{ … }
static void rtw_fw_send_h2c_command(struct rtw_dev *rtwdev,
u8 *h2c)
{ … }
void rtw_fw_h2c_cmd_dbg(struct rtw_dev *rtwdev, u8 *h2c)
{ … }
static void rtw_fw_send_h2c_packet(struct rtw_dev *rtwdev, u8 *h2c_pkt)
{ … }
void
rtw_fw_send_general_info(struct rtw_dev *rtwdev)
{ … }
void
rtw_fw_send_phydm_info(struct rtw_dev *rtwdev)
{ … }
void rtw_fw_do_iqk(struct rtw_dev *rtwdev, struct rtw_iqk_para *para)
{ … }
EXPORT_SYMBOL(…);
void rtw_fw_inform_rfk_status(struct rtw_dev *rtwdev, bool start)
{ … }
EXPORT_SYMBOL(…);
void rtw_fw_query_bt_info(struct rtw_dev *rtwdev)
{ … }
void rtw_fw_default_port(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif)
{ … }
void rtw_fw_wl_ch_info(struct rtw_dev *rtwdev, u8 link, u8 ch, u8 bw)
{ … }
void rtw_fw_query_bt_mp_info(struct rtw_dev *rtwdev,
struct rtw_coex_info_req *req)
{ … }
void rtw_fw_force_bt_tx_power(struct rtw_dev *rtwdev, u8 bt_pwr_dec_lvl)
{ … }
void rtw_fw_bt_ignore_wlan_action(struct rtw_dev *rtwdev, bool enable)
{ … }
void rtw_fw_coex_tdma_type(struct rtw_dev *rtwdev,
u8 para1, u8 para2, u8 para3, u8 para4, u8 para5)
{ … }
void rtw_fw_coex_query_hid_info(struct rtw_dev *rtwdev, u8 sub_id, u8 data)
{ … }
void rtw_fw_bt_wifi_control(struct rtw_dev *rtwdev, u8 op_code, u8 *data)
{ … }
void rtw_fw_send_rssi_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si)
{ … }
void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si,
bool reset_ra_mask)
{ … }
void rtw_fw_media_status_report(struct rtw_dev *rtwdev, u8 mac_id, bool connect)
{ … }
void rtw_fw_update_wl_phy_info(struct rtw_dev *rtwdev)
{ … }
void rtw_fw_beacon_filter_config(struct rtw_dev *rtwdev, bool connect,
struct ieee80211_vif *vif)
{ … }
void rtw_fw_set_pwr_mode(struct rtw_dev *rtwdev)
{ … }
void rtw_fw_set_keep_alive_cmd(struct rtw_dev *rtwdev, bool enable)
{ … }
void rtw_fw_set_disconnect_decision_cmd(struct rtw_dev *rtwdev, bool enable)
{ … }
void rtw_fw_set_wowlan_ctrl_cmd(struct rtw_dev *rtwdev, bool enable)
{ … }
void rtw_fw_set_aoac_global_info_cmd(struct rtw_dev *rtwdev,
u8 pairwise_key_enc,
u8 group_key_enc)
{ … }
void rtw_fw_set_remote_wake_ctrl_cmd(struct rtw_dev *rtwdev, bool enable)
{ … }
static u8 rtw_get_rsvd_page_location(struct rtw_dev *rtwdev,
enum rtw_rsvd_packet_type type)
{ … }
void rtw_fw_set_nlo_info(struct rtw_dev *rtwdev, bool enable)
{ … }
void rtw_fw_set_recover_bt_device(struct rtw_dev *rtwdev)
{ … }
void rtw_fw_set_pg_info(struct rtw_dev *rtwdev)
{ … }
static u8 rtw_get_rsvd_page_probe_req_location(struct rtw_dev *rtwdev,
struct cfg80211_ssid *ssid)
{ … }
static u16 rtw_get_rsvd_page_probe_req_size(struct rtw_dev *rtwdev,
struct cfg80211_ssid *ssid)
{ … }
void rtw_send_rsvd_page_h2c(struct rtw_dev *rtwdev)
{ … }
static struct sk_buff *rtw_nlo_info_get(struct ieee80211_hw *hw)
{ … }
static struct sk_buff *rtw_cs_channel_info_get(struct ieee80211_hw *hw)
{ … }
static struct sk_buff *rtw_lps_pg_dpk_get(struct ieee80211_hw *hw)
{ … }
static struct sk_buff *rtw_lps_pg_info_get(struct ieee80211_hw *hw)
{ … }
static struct sk_buff *rtw_get_rsvd_page_skb(struct ieee80211_hw *hw,
struct rtw_rsvd_page *rsvd_pkt)
{ … }
static void rtw_fill_rsvd_page_desc(struct rtw_dev *rtwdev, struct sk_buff *skb,
enum rtw_rsvd_packet_type type)
{ … }
static inline u8 rtw_len_to_page(unsigned int len, u8 page_size)
{ … }
static void rtw_rsvd_page_list_to_buf(struct rtw_dev *rtwdev, u8 page_size,
u8 page_margin, u32 page, u8 *buf,
struct rtw_rsvd_page *rsvd_pkt)
{ … }
static struct rtw_rsvd_page *rtw_alloc_rsvd_page(struct rtw_dev *rtwdev,
enum rtw_rsvd_packet_type type,
bool txdesc)
{ … }
static void rtw_insert_rsvd_page(struct rtw_dev *rtwdev,
struct rtw_vif *rtwvif,
struct rtw_rsvd_page *rsvd_pkt)
{ … }
static void rtw_add_rsvd_page(struct rtw_dev *rtwdev,
struct rtw_vif *rtwvif,
enum rtw_rsvd_packet_type type,
bool txdesc)
{ … }
static void rtw_add_rsvd_page_probe_req(struct rtw_dev *rtwdev,
struct rtw_vif *rtwvif,
struct cfg80211_ssid *ssid)
{ … }
void rtw_remove_rsvd_page(struct rtw_dev *rtwdev,
struct rtw_vif *rtwvif)
{ … }
void rtw_add_rsvd_page_bcn(struct rtw_dev *rtwdev,
struct rtw_vif *rtwvif)
{ … }
void rtw_add_rsvd_page_pno(struct rtw_dev *rtwdev,
struct rtw_vif *rtwvif)
{ … }
void rtw_add_rsvd_page_sta(struct rtw_dev *rtwdev,
struct rtw_vif *rtwvif)
{ … }
int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr,
u8 *buf, u32 size)
{ … }
static int rtw_download_drv_rsvd_page(struct rtw_dev *rtwdev, u8 *buf, u32 size)
{ … }
static void __rtw_build_rsvd_page_reset(struct rtw_dev *rtwdev)
{ … }
static void rtw_build_rsvd_page_iter(void *data, u8 *mac,
struct ieee80211_vif *vif)
{ … }
static int __rtw_build_rsvd_page_from_vifs(struct rtw_dev *rtwdev)
{ … }
static u8 *rtw_build_rsvd_page(struct rtw_dev *rtwdev, u32 *size)
{ … }
static int rtw_download_beacon(struct rtw_dev *rtwdev)
{ … }
int rtw_fw_download_rsvd_page(struct rtw_dev *rtwdev)
{ … }
void rtw_fw_update_beacon_work(struct work_struct *work)
{ … }
static void rtw_fw_read_fifo_page(struct rtw_dev *rtwdev, u32 offset, u32 size,
u32 *buf, u32 residue, u16 start_pg)
{ … }
static void rtw_fw_read_fifo(struct rtw_dev *rtwdev, enum rtw_fw_fifo_sel sel,
u32 offset, u32 size, u32 *buf)
{ … }
static bool rtw_fw_dump_check_size(struct rtw_dev *rtwdev,
enum rtw_fw_fifo_sel sel,
u32 start_addr, u32 size)
{ … }
int rtw_fw_dump_fifo(struct rtw_dev *rtwdev, u8 fifo_sel, u32 addr, u32 size,
u32 *buffer)
{ … }
static void __rtw_fw_update_pkt(struct rtw_dev *rtwdev, u8 pkt_id, u16 size,
u8 location)
{ … }
void rtw_fw_update_pkt_probe_req(struct rtw_dev *rtwdev,
struct cfg80211_ssid *ssid)
{ … }
void rtw_fw_channel_switch(struct rtw_dev *rtwdev, bool enable)
{ … }
void rtw_fw_adaptivity(struct rtw_dev *rtwdev)
{ … }
void rtw_fw_scan_notify(struct rtw_dev *rtwdev, bool start)
{ … }
static int rtw_append_probe_req_ie(struct rtw_dev *rtwdev, struct sk_buff *skb,
struct sk_buff_head *list, u8 *bands,
struct rtw_vif *rtwvif)
{ … }
static int _rtw_hw_scan_update_probe_req(struct rtw_dev *rtwdev, u8 num_probes,
struct sk_buff_head *probe_req_list)
{ … }
static int rtw_hw_scan_update_probe_req(struct rtw_dev *rtwdev,
struct rtw_vif *rtwvif)
{ … }
static int rtw_add_chan_info(struct rtw_dev *rtwdev, struct rtw_chan_info *info,
struct rtw_chan_list *list, u8 *buf)
{ … }
static int rtw_add_chan_list(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif,
struct rtw_chan_list *list, u8 *buf)
{ … }
static void rtw_fw_set_scan_offload(struct rtw_dev *rtwdev,
struct rtw_ch_switch_option *opt,
struct rtw_vif *rtwvif,
struct rtw_chan_list *list)
{ … }
void rtw_hw_scan_start(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
struct ieee80211_scan_request *scan_req)
{ … }
void rtw_hw_scan_complete(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
bool aborted)
{ … }
static int rtw_hw_scan_prehandle(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif,
struct rtw_chan_list *list)
{ … }
int rtw_hw_scan_offload(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
bool enable)
{ … }
void rtw_hw_scan_abort(struct rtw_dev *rtwdev)
{ … }
void rtw_hw_scan_status_report(struct rtw_dev *rtwdev, struct sk_buff *skb)
{ … }
void rtw_store_op_chan(struct rtw_dev *rtwdev, bool backup)
{ … }
void rtw_clear_op_chan(struct rtw_dev *rtwdev)
{ … }
static bool rtw_is_op_chan(struct rtw_dev *rtwdev, u8 channel)
{ … }
void rtw_hw_scan_chan_switch(struct rtw_dev *rtwdev, struct sk_buff *skb)
{ … }