#include <net/mac80211.h>
#include <linux/module.h>
#include <linux/fips.h>
#include <linux/init.h>
#include <linux/netdevice.h>
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/skbuff.h>
#include <linux/etherdevice.h>
#include <linux/if_arp.h>
#include <linux/rtnetlink.h>
#include <linux/bitmap.h>
#include <linux/inetdevice.h>
#include <net/net_namespace.h>
#include <net/dropreason.h>
#include <net/cfg80211.h>
#include <net/addrconf.h>
#include "ieee80211_i.h"
#include "driver-ops.h"
#include "rate.h"
#include "mesh.h"
#include "wep.h"
#include "led.h"
#include "debugfs.h"
void ieee80211_configure_filter(struct ieee80211_local *local)
{ … }
static void ieee80211_reconfig_filter(struct wiphy *wiphy,
struct wiphy_work *work)
{ … }
static u32 ieee80211_calc_hw_conf_chan(struct ieee80211_local *local,
struct ieee80211_chanctx_conf *ctx)
{ … }
int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
{ … }
static int _ieee80211_hw_conf_chan(struct ieee80211_local *local,
struct ieee80211_chanctx_conf *ctx)
{ … }
int ieee80211_hw_conf_chan(struct ieee80211_local *local)
{ … }
void ieee80211_hw_conf_init(struct ieee80211_local *local)
{ … }
int ieee80211_emulate_add_chanctx(struct ieee80211_hw *hw,
struct ieee80211_chanctx_conf *ctx)
{ … }
EXPORT_SYMBOL(…);
void ieee80211_emulate_remove_chanctx(struct ieee80211_hw *hw,
struct ieee80211_chanctx_conf *ctx)
{ … }
EXPORT_SYMBOL(…);
void ieee80211_emulate_change_chanctx(struct ieee80211_hw *hw,
struct ieee80211_chanctx_conf *ctx,
u32 changed)
{ … }
EXPORT_SYMBOL(…);
int ieee80211_emulate_switch_vif_chanctx(struct ieee80211_hw *hw,
struct ieee80211_vif_chanctx_switch *vifs,
int n_vifs,
enum ieee80211_chanctx_switch_mode mode)
{ … }
EXPORT_SYMBOL(…);
#define BSS_CHANGED_VIF_CFG_FLAGS …
void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,
u64 changed)
{ … }
void ieee80211_vif_cfg_change_notify(struct ieee80211_sub_if_data *sdata,
u64 changed)
{ … }
void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
struct ieee80211_link_data *link,
u64 changed)
{ … }
u64 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
{ … }
void ieee80211_handle_queued_frames(struct ieee80211_local *local)
{ … }
static void ieee80211_tasklet_handler(struct tasklet_struct *t)
{ … }
static void ieee80211_restart_work(struct work_struct *work)
{ … }
void ieee80211_restart_hw(struct ieee80211_hw *hw)
{ … }
EXPORT_SYMBOL(…);
#ifdef CONFIG_INET
static int ieee80211_ifa_changed(struct notifier_block *nb,
unsigned long data, void *arg)
{ … }
#endif
#if IS_ENABLED(CONFIG_IPV6)
static int ieee80211_ifa6_changed(struct notifier_block *nb,
unsigned long data, void *arg)
{ … }
#endif
static const struct ieee80211_txrx_stypes
ieee80211_default_mgmt_stypes[NUM_NL80211_IFTYPES] = …;
static const struct ieee80211_ht_cap mac80211_ht_capa_mod_mask = …;
static const struct ieee80211_vht_cap mac80211_vht_capa_mod_mask = …;
struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
const struct ieee80211_ops *ops,
const char *requested_name)
{ … }
EXPORT_SYMBOL(…);
static int ieee80211_init_cipher_suites(struct ieee80211_local *local)
{ … }
static bool
ieee80211_ifcomb_check(const struct ieee80211_iface_combination *c, int n_comb)
{ … }
int ieee80211_register_hw(struct ieee80211_hw *hw)
{ … }
EXPORT_SYMBOL(…);
void ieee80211_unregister_hw(struct ieee80211_hw *hw)
{ … }
EXPORT_SYMBOL(…);
static int ieee80211_free_ack_frame(int id, void *p, void *data)
{ … }
void ieee80211_free_hw(struct ieee80211_hw *hw)
{ … }
EXPORT_SYMBOL(…);
static const char * const drop_reasons_monitor[] = …;
static struct drop_reason_list drop_reason_list_monitor = …;
static const char * const drop_reasons_unusable[] = …;
static struct drop_reason_list drop_reason_list_unusable = …;
static int __init ieee80211_init(void)
{ … }
static void __exit ieee80211_exit(void)
{ … }
subsys_initcall(ieee80211_init);
module_exit(ieee80211_exit);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;