#include <linux/sched.h>
#include <linux/of.h>
#include "mt76.h"
#define CHAN2G(_idx, _freq) …
#define CHAN5G(_idx, _freq) …
#define CHAN6G(_idx, _freq) …
static const struct ieee80211_channel mt76_channels_2ghz[] = …;
static const struct ieee80211_channel mt76_channels_5ghz[] = …;
static const struct ieee80211_channel mt76_channels_6ghz[] = …;
static const struct ieee80211_tpt_blink mt76_tpt_blink[] = …;
struct ieee80211_rate mt76_rates[] = …;
EXPORT_SYMBOL_GPL(…);
static const struct cfg80211_sar_freq_ranges mt76_sar_freq_ranges[] = …;
static const struct cfg80211_sar_capa mt76_sar_capa = …;
static int mt76_led_init(struct mt76_phy *phy)
{ … }
static void mt76_led_cleanup(struct mt76_phy *phy)
{ … }
static void mt76_init_stream_cap(struct mt76_phy *phy,
struct ieee80211_supported_band *sband,
bool vht)
{ … }
void mt76_set_stream_caps(struct mt76_phy *phy, bool vht)
{ … }
EXPORT_SYMBOL_GPL(…);
static int
mt76_init_sband(struct mt76_phy *phy, struct mt76_sband *msband,
const struct ieee80211_channel *chan, int n_chan,
struct ieee80211_rate *rates, int n_rates,
bool ht, bool vht)
{ … }
static int
mt76_init_sband_2g(struct mt76_phy *phy, struct ieee80211_rate *rates,
int n_rates)
{ … }
static int
mt76_init_sband_5g(struct mt76_phy *phy, struct ieee80211_rate *rates,
int n_rates, bool vht)
{ … }
static int
mt76_init_sband_6g(struct mt76_phy *phy, struct ieee80211_rate *rates,
int n_rates)
{ … }
static void
mt76_check_sband(struct mt76_phy *phy, struct mt76_sband *msband,
enum nl80211_band band)
{ … }
static int
mt76_phy_init(struct mt76_phy *phy, struct ieee80211_hw *hw)
{ … }
struct mt76_phy *
mt76_alloc_phy(struct mt76_dev *dev, unsigned int size,
const struct ieee80211_ops *ops, u8 band_idx)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_register_phy(struct mt76_phy *phy, bool vht,
struct ieee80211_rate *rates, int n_rates)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_unregister_phy(struct mt76_phy *phy)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_create_page_pool(struct mt76_dev *dev, struct mt76_queue *q)
{ … }
EXPORT_SYMBOL_GPL(…);
struct mt76_dev *
mt76_alloc_device(struct device *pdev, unsigned int size,
const struct ieee80211_ops *ops,
const struct mt76_driver_ops *drv_ops)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_register_device(struct mt76_dev *dev, bool vht,
struct ieee80211_rate *rates, int n_rates)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_unregister_device(struct mt76_dev *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_free_device(struct mt76_dev *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static void mt76_rx_release_amsdu(struct mt76_phy *phy, enum mt76_rxq_id q)
{ … }
static void mt76_rx_release_burst(struct mt76_phy *phy, enum mt76_rxq_id q,
struct sk_buff *skb)
{ … }
void mt76_rx(struct mt76_dev *dev, enum mt76_rxq_id q, struct sk_buff *skb)
{ … }
EXPORT_SYMBOL_GPL(…);
bool mt76_has_tx_pending(struct mt76_phy *phy)
{ … }
EXPORT_SYMBOL_GPL(…);
static struct mt76_channel_state *
mt76_channel_state(struct mt76_phy *phy, struct ieee80211_channel *c)
{ … }
void mt76_update_survey_active_time(struct mt76_phy *phy, ktime_t time)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_update_survey(struct mt76_phy *phy)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_set_channel(struct mt76_phy *phy)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_get_survey(struct ieee80211_hw *hw, int idx,
struct survey_info *survey)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_wcid_key_setup(struct mt76_dev *dev, struct mt76_wcid *wcid,
struct ieee80211_key_conf *key)
{ … }
EXPORT_SYMBOL(…);
int mt76_rx_signal(u8 chain_mask, s8 *chain_signal)
{ … }
EXPORT_SYMBOL(…);
static void
mt76_rx_convert(struct mt76_dev *dev, struct sk_buff *skb,
struct ieee80211_hw **hw,
struct ieee80211_sta **sta)
{ … }
static void
mt76_check_ccmp_pn(struct sk_buff *skb)
{ … }
static void
mt76_airtime_report(struct mt76_dev *dev, struct mt76_rx_status *status,
int len)
{ … }
static void
mt76_airtime_flush_ampdu(struct mt76_dev *dev)
{ … }
static void
mt76_airtime_check(struct mt76_dev *dev, struct sk_buff *skb)
{ … }
static void
mt76_check_sta(struct mt76_dev *dev, struct sk_buff *skb)
{ … }
void mt76_rx_complete(struct mt76_dev *dev, struct sk_buff_head *frames,
struct napi_struct *napi)
{ … }
void mt76_rx_poll_complete(struct mt76_dev *dev, enum mt76_rxq_id q,
struct napi_struct *napi)
{ … }
EXPORT_SYMBOL_GPL(…);
static int
mt76_sta_add(struct mt76_phy *phy, struct ieee80211_vif *vif,
struct ieee80211_sta *sta)
{ … }
void __mt76_sta_remove(struct mt76_dev *dev, struct ieee80211_vif *vif,
struct ieee80211_sta *sta)
{ … }
EXPORT_SYMBOL_GPL(…);
static void
mt76_sta_remove(struct mt76_dev *dev, struct ieee80211_vif *vif,
struct ieee80211_sta *sta)
{ … }
int mt76_sta_state(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_sta *sta,
enum ieee80211_sta_state old_state,
enum ieee80211_sta_state new_state)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_sta_pre_rcu_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_sta *sta)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_wcid_init(struct mt76_wcid *wcid)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_wcid_cleanup(struct mt76_dev *dev, struct mt76_wcid *wcid)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_get_txpower(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
int *dbm)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_init_sar_power(struct ieee80211_hw *hw,
const struct cfg80211_sar_specs *sar)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_get_sar_power(struct mt76_phy *phy,
struct ieee80211_channel *chan,
int power)
{ … }
EXPORT_SYMBOL_GPL(…);
static void
__mt76_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
{ … }
void mt76_csa_finish(struct mt76_dev *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static void
__mt76_csa_check(void *priv, u8 *mac, struct ieee80211_vif *vif)
{ … }
void mt76_csa_check(struct mt76_dev *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
int
mt76_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, bool set)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_insert_ccmp_hdr(struct sk_buff *skb, u8 key_id)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_get_rate(struct mt76_dev *dev,
struct ieee80211_supported_band *sband,
int idx, bool cck)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_sw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
const u8 *mac)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_sw_scan_complete(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
{ … }
EXPORT_SYMBOL_GPL(…);
int mt76_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
{ … }
EXPORT_SYMBOL_GPL(…);
struct mt76_queue *
mt76_init_queue(struct mt76_dev *dev, int qid, int idx, int n_desc,
int ring_base, void *wed, u32 flags)
{ … }
EXPORT_SYMBOL_GPL(…);
u16 mt76_calculate_default_rate(struct mt76_phy *phy,
struct ieee80211_vif *vif, int rateidx)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_ethtool_worker(struct mt76_ethtool_worker_info *wi,
struct mt76_sta_stats *stats, bool eht)
{ … }
EXPORT_SYMBOL_GPL(…);
void mt76_ethtool_page_pool_stats(struct mt76_dev *dev, u64 *data, int *index)
{ … }
EXPORT_SYMBOL_GPL(…);
enum mt76_dfs_state mt76_phy_dfs_state(struct mt76_phy *phy)
{ … }
EXPORT_SYMBOL_GPL(…);