#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/etherdevice.h>
#include <linux/netdevice.h>
#include <linux/nl80211.h>
#include <linux/slab.h>
#include <linux/wireless.h>
#include <net/cfg80211.h>
#include <net/iw_handler.h>
#include "core.h"
#include "nl80211.h"
#include "rdev-ops.h"
void cfg80211_rx_assoc_resp(struct net_device *dev,
const struct cfg80211_rx_assoc_resp_data *data)
{ … }
EXPORT_SYMBOL(…);
static void cfg80211_process_auth(struct wireless_dev *wdev,
const u8 *buf, size_t len)
{ … }
static void cfg80211_process_deauth(struct wireless_dev *wdev,
const u8 *buf, size_t len,
bool reconnect)
{ … }
static void cfg80211_process_disassoc(struct wireless_dev *wdev,
const u8 *buf, size_t len,
bool reconnect)
{ … }
void cfg80211_rx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len)
{ … }
EXPORT_SYMBOL(…);
void cfg80211_auth_timeout(struct net_device *dev, const u8 *addr)
{ … }
EXPORT_SYMBOL(…);
void cfg80211_assoc_failure(struct net_device *dev,
struct cfg80211_assoc_failure *data)
{ … }
EXPORT_SYMBOL(…);
void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len,
bool reconnect)
{ … }
EXPORT_SYMBOL(…);
void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr,
enum nl80211_key_type key_type, int key_id,
const u8 *tsc, gfp_t gfp)
{ … }
EXPORT_SYMBOL(…);
int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
struct net_device *dev,
struct cfg80211_auth_request *req)
{ … }
void cfg80211_oper_and_ht_capa(struct ieee80211_ht_cap *ht_capa,
const struct ieee80211_ht_cap *ht_capa_mask)
{ … }
void cfg80211_oper_and_vht_capa(struct ieee80211_vht_cap *vht_capa,
const struct ieee80211_vht_cap *vht_capa_mask)
{ … }
static int
cfg80211_mlme_check_mlo_compat(const struct ieee80211_multi_link_elem *mle_a,
const struct ieee80211_multi_link_elem *mle_b,
struct netlink_ext_ack *extack)
{ … }
static int cfg80211_mlme_check_mlo(struct net_device *dev,
struct cfg80211_assoc_request *req,
struct netlink_ext_ack *extack)
{ … }
int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev,
struct net_device *dev,
struct cfg80211_assoc_request *req,
struct netlink_ext_ack *extack)
{ … }
int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev,
struct net_device *dev, const u8 *bssid,
const u8 *ie, int ie_len, u16 reason,
bool local_state_change)
{ … }
int cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev,
struct net_device *dev, const u8 *ap_addr,
const u8 *ie, int ie_len, u16 reason,
bool local_state_change)
{ … }
void cfg80211_mlme_down(struct cfg80211_registered_device *rdev,
struct net_device *dev)
{ … }
struct cfg80211_mgmt_registration { … };
static void cfg80211_mgmt_registrations_update(struct wireless_dev *wdev)
{ … }
void cfg80211_mgmt_registrations_update_wk(struct work_struct *wk)
{ … }
int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid,
u16 frame_type, const u8 *match_data,
int match_len, bool multicast_rx,
struct netlink_ext_ack *extack)
{ … }
void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid)
{ … }
void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev)
{ … }
static bool cfg80211_allowed_address(struct wireless_dev *wdev, const u8 *addr)
{ … }
static bool cfg80211_allowed_random_address(struct wireless_dev *wdev,
const struct ieee80211_mgmt *mgmt)
{ … }
int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
struct wireless_dev *wdev,
struct cfg80211_mgmt_tx_params *params, u64 *cookie)
{ … }
bool cfg80211_rx_mgmt_ext(struct wireless_dev *wdev,
struct cfg80211_rx_info *info)
{ … }
EXPORT_SYMBOL(…);
void cfg80211_sched_dfs_chan_update(struct cfg80211_registered_device *rdev)
{ … }
void cfg80211_dfs_channels_update_work(struct work_struct *work)
{ … }
void __cfg80211_radar_event(struct wiphy *wiphy,
struct cfg80211_chan_def *chandef,
bool offchan, gfp_t gfp)
{ … }
EXPORT_SYMBOL(…);
void cfg80211_cac_event(struct net_device *netdev,
const struct cfg80211_chan_def *chandef,
enum nl80211_radar_event event, gfp_t gfp)
{ … }
EXPORT_SYMBOL(…);
static void
__cfg80211_background_cac_event(struct cfg80211_registered_device *rdev,
struct wireless_dev *wdev,
const struct cfg80211_chan_def *chandef,
enum nl80211_radar_event event)
{ … }
static void
cfg80211_background_cac_event(struct cfg80211_registered_device *rdev,
const struct cfg80211_chan_def *chandef,
enum nl80211_radar_event event)
{ … }
void cfg80211_background_cac_done_wk(struct work_struct *work)
{ … }
void cfg80211_background_cac_abort_wk(struct work_struct *work)
{ … }
void cfg80211_background_cac_abort(struct wiphy *wiphy)
{ … }
EXPORT_SYMBOL(…);
int
cfg80211_start_background_radar_detection(struct cfg80211_registered_device *rdev,
struct wireless_dev *wdev,
struct cfg80211_chan_def *chandef)
{ … }
void cfg80211_stop_background_radar_detection(struct wireless_dev *wdev)
{ … }