linux/drivers/net/wireless/realtek/rtw88/fw.c

// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
/* Copyright(c) 2018-2019  Realtek Corporation
 */

#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)
{}