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

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

#include <linux/devcoredump.h>

#include "main.h"
#include "regd.h"
#include "fw.h"
#include "ps.h"
#include "sec.h"
#include "mac.h"
#include "coex.h"
#include "phy.h"
#include "reg.h"
#include "efuse.h"
#include "tx.h"
#include "debug.h"
#include "bf.h"
#include "sar.h"
#include "sdio.h"

bool rtw_disable_lps_deep_mode;
EXPORT_SYMBOL();
bool rtw_bf_support =;
unsigned int rtw_debug_mask;
EXPORT_SYMBOL();
/* EDCCA is enabled during normal behavior. For debugging purpose in
 * a noisy environment, it can be disabled via edcca debugfs. Because
 * all rtw88 devices will probably be affected if environment is noisy,
 * rtw_edcca_enabled is just declared by driver instead of by device.
 * So, turning it off will take effect for all rtw88 devices before
 * there is a tough reason to maintain rtw_edcca_enabled by device.
 */
bool rtw_edcca_enabled =;

module_param_named(disable_lps_deep, rtw_disable_lps_deep_mode, bool, 0644);
module_param_named(support_bf, rtw_bf_support, bool, 0644);
module_param_named(debug_mask, rtw_debug_mask, uint, 0644);

MODULE_PARM_DESC();
MODULE_PARM_DESC();
MODULE_PARM_DESC();

static struct ieee80211_channel rtw_channeltable_2g[] =;

static struct ieee80211_channel rtw_channeltable_5g[] =;

static struct ieee80211_rate rtw_ratetable[] =;

static const struct ieee80211_iface_limit rtw_iface_limits[] =;

static const struct ieee80211_iface_combination rtw_iface_combs[] =;

u16 rtw_desc_to_bitrate(u8 desc_rate)
{}

static struct ieee80211_supported_band rtw_band_2ghz =;

static struct ieee80211_supported_band rtw_band_5ghz =;

struct rtw_watch_dog_iter_data {};

static void rtw_dynamic_csi_rate(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif)
{}

static void rtw_vif_watch_dog_iter(void *data, struct ieee80211_vif *vif)
{}

/* process TX/RX statistics periodically for hardware,
 * the information helps hardware to enhance performance
 */
static void rtw_watch_dog_work(struct work_struct *work)
{}

static void rtw_c2h_work(struct work_struct *work)
{}

static void rtw_ips_work(struct work_struct *work)
{}

static void rtw_sta_rc_work(struct work_struct *work)
{}

int rtw_sta_add(struct rtw_dev *rtwdev, struct ieee80211_sta *sta,
		struct ieee80211_vif *vif)
{}

void rtw_sta_remove(struct rtw_dev *rtwdev, struct ieee80211_sta *sta,
		    bool fw_exist)
{}

struct rtw_fwcd_hdr {} __packed;

static int rtw_fwcd_prep(struct rtw_dev *rtwdev)
{}

static u8 *rtw_fwcd_next(struct rtw_dev *rtwdev, u32 item, u32 size)
{}

static void rtw_fwcd_dump(struct rtw_dev *rtwdev)
{}

static void rtw_fwcd_free(struct rtw_dev *rtwdev, bool free_self)
{}

static int rtw_fw_dump_crash_log(struct rtw_dev *rtwdev)
{}

int rtw_dump_fw(struct rtw_dev *rtwdev, const u32 ocp_src, u32 size,
		u32 fwcd_item)
{}
EXPORT_SYMBOL();

int rtw_dump_reg(struct rtw_dev *rtwdev, const u32 addr, const u32 size)
{}
EXPORT_SYMBOL();

void rtw_vif_assoc_changed(struct rtw_vif *rtwvif,
			   struct ieee80211_bss_conf *conf)
{}

static void rtw_reset_key_iter(struct ieee80211_hw *hw,
			       struct ieee80211_vif *vif,
			       struct ieee80211_sta *sta,
			       struct ieee80211_key_conf *key,
			       void *data)
{}

static void rtw_reset_sta_iter(void *data, struct ieee80211_sta *sta)
{}

static void rtw_reset_vif_iter(void *data, u8 *mac, struct ieee80211_vif *vif)
{}

void rtw_fw_recovery(struct rtw_dev *rtwdev)
{}

static void __fw_recovery_work(struct rtw_dev *rtwdev)
{}

static void rtw_fw_recovery_work(struct work_struct *work)
{}

struct rtw_txq_ba_iter_data {};

static void rtw_txq_ba_iter(void *data, struct ieee80211_sta *sta)
{}

static void rtw_txq_ba_work(struct work_struct *work)
{}

void rtw_set_rx_freq_band(struct rtw_rx_pkt_stat *pkt_stat, u8 channel)
{}
EXPORT_SYMBOL();

void rtw_set_dtim_period(struct rtw_dev *rtwdev, int dtim_period)
{}

void rtw_update_channel(struct rtw_dev *rtwdev, u8 center_channel,
			u8 primary_channel, enum rtw_supported_band band,
			enum rtw_bandwidth bandwidth)
{}

void rtw_get_channel_params(struct cfg80211_chan_def *chandef,
			    struct rtw_channel_params *chan_params)
{}

void rtw_set_channel(struct rtw_dev *rtwdev)
{}

void rtw_chip_prepare_tx(struct rtw_dev *rtwdev)
{}

static void rtw_vif_write_addr(struct rtw_dev *rtwdev, u32 start, u8 *addr)
{}

void rtw_vif_port_config(struct rtw_dev *rtwdev,
			 struct rtw_vif *rtwvif,
			 u32 config)
{}

static u8 hw_bw_cap_to_bitamp(u8 bw_cap)
{}

static void rtw_hw_config_rf_ant_num(struct rtw_dev *rtwdev, u8 hw_ant_num)
{}

static u64 get_vht_ra_mask(struct ieee80211_sta *sta)
{}

static u8 get_rate_id(u8 wireless_set, enum rtw_bandwidth bw_mode, u8 tx_num)
{}

#define RA_MASK_CCK_RATES
#define RA_MASK_OFDM_RATES
#define RA_MASK_HT_RATES_1SS
#define RA_MASK_HT_RATES_2SS
#define RA_MASK_HT_RATES_3SS
#define RA_MASK_HT_RATES
#define RA_MASK_VHT_RATES_1SS
#define RA_MASK_VHT_RATES_2SS
#define RA_MASK_VHT_RATES_3SS
#define RA_MASK_VHT_RATES
#define RA_MASK_CCK_IN_BG
#define RA_MASK_CCK_IN_HT
#define RA_MASK_CCK_IN_VHT
#define RA_MASK_OFDM_IN_VHT
#define RA_MASK_OFDM_IN_HT_2G
#define RA_MASK_OFDM_IN_HT_5G

static u64 rtw_rate_mask_rssi(struct rtw_sta_info *si, u8 wireless_set)
{}

static u64 rtw_rate_mask_recover(u64 ra_mask, u64 ra_mask_bak)
{}

static u64 rtw_rate_mask_cfg(struct rtw_dev *rtwdev, struct rtw_sta_info *si,
			     u64 ra_mask, bool is_vht_enable)
{}

void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si,
			 bool reset_ra_mask)
{}

static int rtw_wait_firmware_completion(struct rtw_dev *rtwdev)
{}

static enum rtw_lps_deep_mode rtw_update_lps_deep_mode(struct rtw_dev *rtwdev,
						       struct rtw_fw_state *fw)
{}

static int rtw_power_on(struct rtw_dev *rtwdev)
{}

void rtw_core_fw_scan_notify(struct rtw_dev *rtwdev, bool start)
{}

void rtw_core_scan_start(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif,
			 const u8 *mac_addr, bool hw_scan)
{}

void rtw_core_scan_complete(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
			    bool hw_scan)
{}

int rtw_core_start(struct rtw_dev *rtwdev)
{}

static void rtw_power_off(struct rtw_dev *rtwdev)
{}

void rtw_core_stop(struct rtw_dev *rtwdev)
{}

static void rtw_init_ht_cap(struct rtw_dev *rtwdev,
			    struct ieee80211_sta_ht_cap *ht_cap)
{}

static void rtw_init_vht_cap(struct rtw_dev *rtwdev,
			     struct ieee80211_sta_vht_cap *vht_cap)
{}

static u16 rtw_get_max_scan_ie_len(struct rtw_dev *rtwdev)
{}

static void rtw_set_supported_band(struct ieee80211_hw *hw,
				   const struct rtw_chip_info *chip)
{}

static void rtw_unset_supported_band(struct ieee80211_hw *hw,
				     const struct rtw_chip_info *chip)
{}

static void rtw_vif_smps_iter(void *data, u8 *mac,
			      struct ieee80211_vif *vif)
{}

void rtw_set_txrx_1ss(struct rtw_dev *rtwdev, bool txrx_1ss)
{}

static void __update_firmware_feature(struct rtw_dev *rtwdev,
				      struct rtw_fw_state *fw)
{}

static void __update_firmware_info(struct rtw_dev *rtwdev,
				   struct rtw_fw_state *fw)
{}

static void __update_firmware_info_legacy(struct rtw_dev *rtwdev,
					  struct rtw_fw_state *fw)
{}

static void update_firmware_info(struct rtw_dev *rtwdev,
				 struct rtw_fw_state *fw)
{}

static void rtw_load_firmware_cb(const struct firmware *firmware, void *context)
{}

static int rtw_load_firmware(struct rtw_dev *rtwdev, enum rtw_fw_type type)
{}

static int rtw_chip_parameter_setup(struct rtw_dev *rtwdev)
{}

static int rtw_chip_efuse_enable(struct rtw_dev *rtwdev)
{}

static int rtw_dump_hw_feature(struct rtw_dev *rtwdev)
{}

static void rtw_chip_efuse_disable(struct rtw_dev *rtwdev)
{}

static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev)
{}

static int rtw_chip_board_info_setup(struct rtw_dev *rtwdev)
{}

int rtw_chip_info_setup(struct rtw_dev *rtwdev)
{}
EXPORT_SYMBOL();

static void rtw_stats_init(struct rtw_dev *rtwdev)
{}

int rtw_core_init(struct rtw_dev *rtwdev)
{}
EXPORT_SYMBOL();

void rtw_core_deinit(struct rtw_dev *rtwdev)
{}
EXPORT_SYMBOL();

int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw)
{}
EXPORT_SYMBOL();

void rtw_unregister_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw)
{}
EXPORT_SYMBOL();

static
void rtw_swap_reg_nbytes(struct rtw_dev *rtwdev, const struct rtw_hw_reg *reg1,
			 const struct rtw_hw_reg *reg2, u8 nbytes)
{}

static
void rtw_swap_reg_mask(struct rtw_dev *rtwdev, const struct rtw_hw_reg *reg1,
		       const struct rtw_hw_reg *reg2)
{}

struct rtw_iter_port_switch_data {};

static void rtw_port_switch_iter(void *data, struct ieee80211_vif *vif)
{}

void rtw_core_port_switch(struct rtw_dev *rtwdev, struct ieee80211_vif *vif)
{}

static void rtw_check_sta_active_iter(void *data, struct ieee80211_vif *vif)
{}

bool rtw_core_check_sta_active(struct rtw_dev *rtwdev)
{}

void rtw_core_enable_beacon(struct rtw_dev *rtwdev, bool enable)
{}

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();