#include <linux/types.h>
#include <net/cfg80211.h>
#include <net/mac80211.h>
#include <net/regulatory.h>
#include <defs.h>
#include "pub.h"
#include "phy/phy_hal.h"
#include "main.h"
#include "stf.h"
#include "channel.h"
#include "mac80211_if.h"
#include "debug.h"
#define QDB(n) …
#define LOCALE_MIMO_IDX_bn …
#define LOCALE_MIMO_IDX_11n …
#define BRCMS_MAXPWR_MIMO_TBL_SIZE …
#define BAND_5G_PWR_LVLS …
#define LC(id) …
#define LOCALES(mimo2, mimo5) …
#define CHANNEL_POWER_IDX_5G(c) …
#define BRCM_2GHZ_2412_2462 …
#define BRCM_2GHZ_2467_2472 …
#define BRCM_5GHZ_5180_5240 …
#define BRCM_5GHZ_5260_5320 …
#define BRCM_5GHZ_5500_5700 …
#define BRCM_5GHZ_5745_5825 …
static const struct ieee80211_regdomain brcms_regdom_x2 = …;
struct locale_mimo_info { … };
struct country_info { … };
struct brcms_regd { … };
struct brcms_cm_info { … };
static const struct locale_mimo_info locale_bn = …;
static const struct locale_mimo_info *g_mimo_2g_table[] = …;
static const struct locale_mimo_info locale_11n = …;
static const struct locale_mimo_info *g_mimo_5g_table[] = …;
static const struct brcms_regd cntry_locales[] = …;
static const struct locale_mimo_info *brcms_c_get_mimo_2g(u8 locale_idx)
{ … }
static const struct locale_mimo_info *brcms_c_get_mimo_5g(u8 locale_idx)
{ … }
static bool brcms_c_country_valid(const char *ccode)
{ … }
static const struct brcms_regd *brcms_world_regd(const char *regdom, int len)
{ … }
static const struct brcms_regd *brcms_default_world_regd(void)
{ … }
static bool brcms_c_japan_ccode(const char *ccode)
{ … }
static void
brcms_c_channel_min_txpower_limits_with_local_constraint(
struct brcms_cm_info *wlc_cm, struct txpwr_limits *txpwr,
u8 local_constraint_qdbm)
{ … }
static void
brcms_c_set_country(struct brcms_cm_info *wlc_cm,
const struct brcms_regd *regd)
{ … }
struct brcms_cm_info *brcms_c_channel_mgr_attach(struct brcms_c_info *wlc)
{ … }
void brcms_c_channel_mgr_detach(struct brcms_cm_info *wlc_cm)
{ … }
void
brcms_c_channel_set_chanspec(struct brcms_cm_info *wlc_cm, u16 chanspec,
u8 local_constraint_qdbm)
{ … }
void
brcms_c_channel_reg_limits(struct brcms_cm_info *wlc_cm, u16 chanspec,
struct txpwr_limits *txpwr)
{ … }
static bool brcms_c_chspec_malformed(u16 chanspec)
{ … }
static bool
brcms_c_valid_chanspec_ext(struct brcms_cm_info *wlc_cm, u16 chspec)
{ … }
bool brcms_c_valid_chanspec_db(struct brcms_cm_info *wlc_cm, u16 chspec)
{ … }
static bool brcms_is_radar_freq(u16 center_freq)
{ … }
static void brcms_reg_apply_radar_flags(struct wiphy *wiphy)
{ … }
static void
brcms_reg_apply_beaconing_flags(struct wiphy *wiphy,
enum nl80211_reg_initiator initiator)
{ … }
static void brcms_reg_notifier(struct wiphy *wiphy,
struct regulatory_request *request)
{ … }
void brcms_c_regd_init(struct brcms_c_info *wlc)
{ … }