#include <linux/export.h>
#include <linux/bitfield.h>
#include <net/cfg80211.h>
#include "core.h"
#include "rdev-ops.h"
static bool cfg80211_valid_60g_freq(u32 freq)
{ … }
void cfg80211_chandef_create(struct cfg80211_chan_def *chandef,
struct ieee80211_channel *chan,
enum nl80211_channel_type chan_type)
{ … }
EXPORT_SYMBOL(…);
struct cfg80211_per_bw_puncturing_values { … };
static const u16 puncturing_values_80mhz[] = …;
static const u16 puncturing_values_160mhz[] = …;
static const u16 puncturing_values_320mhz[] = …;
#define CFG80211_PER_BW_VALID_PUNCTURING_VALUES(_bw) …
static const struct cfg80211_per_bw_puncturing_values per_bw_puncturing[] = …;
static bool valid_puncturing_bitmap(const struct cfg80211_chan_def *chandef)
{ … }
static bool cfg80211_edmg_chandef_valid(const struct cfg80211_chan_def *chandef)
{ … }
int nl80211_chan_width_to_mhz(enum nl80211_chan_width chan_width)
{ … }
EXPORT_SYMBOL(…);
static int cfg80211_chandef_get_width(const struct cfg80211_chan_def *c)
{ … }
static bool cfg80211_valid_center_freq(u32 center,
enum nl80211_chan_width width)
{ … }
bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef)
{ … }
EXPORT_SYMBOL(…);
int cfg80211_chandef_primary(const struct cfg80211_chan_def *c,
enum nl80211_chan_width primary_chan_width,
u16 *punctured)
{ … }
EXPORT_SYMBOL(…);
static const struct cfg80211_chan_def *
check_chandef_primary_compat(const struct cfg80211_chan_def *c1,
const struct cfg80211_chan_def *c2,
enum nl80211_chan_width primary_chan_width)
{ … }
static const struct cfg80211_chan_def *
_cfg80211_chandef_compatible(const struct cfg80211_chan_def *c1,
const struct cfg80211_chan_def *c2)
{ … }
const struct cfg80211_chan_def *
cfg80211_chandef_compatible(const struct cfg80211_chan_def *c1,
const struct cfg80211_chan_def *c2)
{ … }
EXPORT_SYMBOL(…);
static void cfg80211_set_chans_dfs_state(struct wiphy *wiphy, u32 center_freq,
u32 bandwidth,
enum nl80211_dfs_state dfs_state)
{ … }
void cfg80211_set_dfs_state(struct wiphy *wiphy,
const struct cfg80211_chan_def *chandef,
enum nl80211_dfs_state dfs_state)
{ … }
static u32 cfg80211_get_start_freq(u32 center_freq,
u32 bandwidth)
{ … }
static u32 cfg80211_get_end_freq(u32 center_freq,
u32 bandwidth)
{ … }
static bool
cfg80211_dfs_permissive_check_wdev(struct cfg80211_registered_device *rdev,
enum nl80211_iftype iftype,
struct wireless_dev *wdev,
struct ieee80211_channel *chan)
{ … }
static bool cfg80211_dfs_permissive_chan(struct wiphy *wiphy,
enum nl80211_iftype iftype,
struct ieee80211_channel *chan)
{ … }
static int cfg80211_get_chans_dfs_required(struct wiphy *wiphy,
u32 center_freq,
u32 bandwidth,
enum nl80211_iftype iftype)
{ … }
int cfg80211_chandef_dfs_required(struct wiphy *wiphy,
const struct cfg80211_chan_def *chandef,
enum nl80211_iftype iftype)
{ … }
EXPORT_SYMBOL(…);
static int cfg80211_get_chans_dfs_usable(struct wiphy *wiphy,
u32 center_freq,
u32 bandwidth)
{ … }
bool cfg80211_chandef_dfs_usable(struct wiphy *wiphy,
const struct cfg80211_chan_def *chandef)
{ … }
EXPORT_SYMBOL(…);
bool cfg80211_is_sub_chan(struct cfg80211_chan_def *chandef,
struct ieee80211_channel *chan,
bool primary_only)
{ … }
bool cfg80211_beaconing_iface_active(struct wireless_dev *wdev)
{ … }
bool cfg80211_wdev_on_sub_chan(struct wireless_dev *wdev,
struct ieee80211_channel *chan,
bool primary_only)
{ … }
static bool cfg80211_is_wiphy_oper_chan(struct wiphy *wiphy,
struct ieee80211_channel *chan)
{ … }
static bool
cfg80211_offchan_chain_is_active(struct cfg80211_registered_device *rdev,
struct ieee80211_channel *channel)
{ … }
bool cfg80211_any_wiphy_oper_chan(struct wiphy *wiphy,
struct ieee80211_channel *chan)
{ … }
static bool cfg80211_get_chans_dfs_available(struct wiphy *wiphy,
u32 center_freq,
u32 bandwidth)
{ … }
static bool cfg80211_chandef_dfs_available(struct wiphy *wiphy,
const struct cfg80211_chan_def *chandef)
{ … }
static unsigned int cfg80211_get_chans_dfs_cac_time(struct wiphy *wiphy,
u32 center_freq,
u32 bandwidth)
{ … }
unsigned int
cfg80211_chandef_dfs_cac_time(struct wiphy *wiphy,
const struct cfg80211_chan_def *chandef)
{ … }
EXPORT_SYMBOL(…);
static bool cfg80211_secondary_chans_ok(struct wiphy *wiphy,
u32 center_freq, u32 bandwidth,
u32 prohibited_flags,
u32 permitting_flags)
{ … }
static bool cfg80211_edmg_usable(struct wiphy *wiphy, u8 edmg_channels,
enum ieee80211_edmg_bw_config edmg_bw_config,
int primary_channel,
struct ieee80211_edmg *edmg_cap)
{ … }
bool _cfg80211_chandef_usable(struct wiphy *wiphy,
const struct cfg80211_chan_def *chandef,
u32 prohibited_flags,
u32 permitting_flags)
{ … }
bool cfg80211_chandef_usable(struct wiphy *wiphy,
const struct cfg80211_chan_def *chandef,
u32 prohibited_flags)
{ … }
EXPORT_SYMBOL(…);
static bool cfg80211_ir_permissive_check_wdev(enum nl80211_iftype iftype,
struct wireless_dev *wdev,
struct ieee80211_channel *chan)
{ … }
static bool cfg80211_ir_permissive_chan(struct wiphy *wiphy,
enum nl80211_iftype iftype,
struct ieee80211_channel *chan)
{ … }
static bool _cfg80211_reg_can_beacon(struct wiphy *wiphy,
struct cfg80211_chan_def *chandef,
enum nl80211_iftype iftype,
u32 prohibited_flags,
u32 permitting_flags)
{ … }
bool cfg80211_reg_check_beaconing(struct wiphy *wiphy,
struct cfg80211_chan_def *chandef,
struct cfg80211_beaconing_check_config *cfg)
{ … }
EXPORT_SYMBOL(…);
int cfg80211_set_monitor_channel(struct cfg80211_registered_device *rdev,
struct cfg80211_chan_def *chandef)
{ … }
bool cfg80211_any_usable_channels(struct wiphy *wiphy,
unsigned long sband_mask,
u32 prohibited_flags)
{ … }
EXPORT_SYMBOL(…);
struct cfg80211_chan_def *wdev_chandef(struct wireless_dev *wdev,
unsigned int link_id)
{ … }
EXPORT_SYMBOL(…);