#include <linux/slab.h>
#include <linux/module.h>
#include <linux/etherdevice.h>
#include <linux/random.h>
#include <net/mac80211.h>
#include <net/cfg80211.h>
#include "hw.h"
#include "carl9170.h"
#include "cmd.h"
static bool modparam_nohwcrypt;
module_param_named(nohwcrypt, modparam_nohwcrypt, bool, 0444);
MODULE_PARM_DESC(…) …;
int modparam_noht;
module_param_named(noht, modparam_noht, int, 0444);
MODULE_PARM_DESC(…) …;
#define RATE …
struct ieee80211_rate __carl9170_ratetable[] = …;
#undef RATE
#define carl9170_g_ratetable …
#define carl9170_g_ratetable_size …
#define carl9170_a_ratetable …
#define carl9170_a_ratetable_size …
#define CHAN …
static struct ieee80211_channel carl9170_2ghz_chantable[] = …;
static struct ieee80211_channel carl9170_5ghz_chantable[] = …;
#undef CHAN
#define CARL9170_HT_CAP …
static struct ieee80211_supported_band carl9170_band_2GHz = …;
static struct ieee80211_supported_band carl9170_band_5GHz = …;
static void carl9170_ampdu_gc(struct ar9170 *ar)
{ … }
static void carl9170_flush(struct ar9170 *ar, bool drop_queued)
{ … }
static void carl9170_flush_ba(struct ar9170 *ar)
{ … }
static void carl9170_zap_queues(struct ar9170 *ar)
{ … }
#define CARL9170_FILL_QUEUE(queue, ai_fs, cwmin, cwmax, _txop) …
static int carl9170_op_start(struct ieee80211_hw *hw)
{ … }
static void carl9170_cancel_worker(struct ar9170 *ar)
{ … }
static void carl9170_op_stop(struct ieee80211_hw *hw, bool suspend)
{ … }
static void carl9170_restart_work(struct work_struct *work)
{ … }
void carl9170_restart(struct ar9170 *ar, const enum carl9170_restart_reasons r)
{ … }
static void carl9170_ping_work(struct work_struct *work)
{ … }
static int carl9170_init_interface(struct ar9170 *ar,
struct ieee80211_vif *vif)
{ … }
static int carl9170_op_add_interface(struct ieee80211_hw *hw,
struct ieee80211_vif *vif)
{ … }
static void carl9170_op_remove_interface(struct ieee80211_hw *hw,
struct ieee80211_vif *vif)
{ … }
void carl9170_ps_check(struct ar9170 *ar)
{ … }
static int carl9170_ps_update(struct ar9170 *ar)
{ … }
static void carl9170_ps_work(struct work_struct *work)
{ … }
static int carl9170_update_survey(struct ar9170 *ar, bool flush, bool noise)
{ … }
static void carl9170_stat_work(struct work_struct *work)
{ … }
static int carl9170_op_config(struct ieee80211_hw *hw, u32 changed)
{ … }
static u64 carl9170_op_prepare_multicast(struct ieee80211_hw *hw,
struct netdev_hw_addr_list *mc_list)
{ … }
static void carl9170_op_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *new_flags,
u64 multicast)
{ … }
static void carl9170_op_bss_info_changed(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_bss_conf *bss_conf,
u64 changed)
{ … }
static u64 carl9170_op_get_tsf(struct ieee80211_hw *hw,
struct ieee80211_vif *vif)
{ … }
static int carl9170_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta,
struct ieee80211_key_conf *key)
{ … }
static int carl9170_op_sta_add(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta)
{ … }
static int carl9170_op_sta_remove(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta)
{ … }
static int carl9170_op_conf_tx(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
unsigned int link_id, u16 queue,
const struct ieee80211_tx_queue_params *param)
{ … }
static void carl9170_ampdu_work(struct work_struct *work)
{ … }
static int carl9170_op_ampdu_action(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_ampdu_params *params)
{ … }
#ifdef CONFIG_CARL9170_WPC
static int carl9170_register_wps_button(struct ar9170 *ar)
{ … }
#endif
#ifdef CONFIG_CARL9170_HWRNG
static int carl9170_rng_get(struct ar9170 *ar)
{ … }
static int carl9170_rng_read(struct hwrng *rng, u32 *data)
{ … }
static int carl9170_register_hwrng(struct ar9170 *ar)
{ … }
#endif
static int carl9170_op_get_survey(struct ieee80211_hw *hw, int idx,
struct survey_info *survey)
{ … }
static void carl9170_op_flush(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
u32 queues, bool drop)
{ … }
static int carl9170_op_get_stats(struct ieee80211_hw *hw,
struct ieee80211_low_level_stats *stats)
{ … }
static void carl9170_op_sta_notify(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
enum sta_notify_cmd cmd,
struct ieee80211_sta *sta)
{ … }
static bool carl9170_tx_frames_pending(struct ieee80211_hw *hw)
{ … }
static const struct ieee80211_ops carl9170_ops = …;
void *carl9170_alloc(size_t priv_size)
{ … }
static int carl9170_read_eeprom(struct ar9170 *ar)
{ … }
static int carl9170_parse_eeprom(struct ar9170 *ar)
{ … }
static void carl9170_reg_notifier(struct wiphy *wiphy,
struct regulatory_request *request)
{ … }
int carl9170_register(struct ar9170 *ar)
{ … }
void carl9170_unregister(struct ar9170 *ar)
{ … }
void carl9170_free(struct ar9170 *ar)
{ … }