#define pr_fmt(fmt) …
#include <linux/pci_ids.h>
#include <linux/if_ether.h>
#include <net/cfg80211.h>
#include <net/mac80211.h>
#include <brcm_hw_ids.h>
#include <aiutils.h>
#include <chipcommon.h>
#include "rate.h"
#include "scb.h"
#include "phy/phy_hal.h"
#include "channel.h"
#include "antsel.h"
#include "stf.h"
#include "ampdu.h"
#include "mac80211_if.h"
#include "ucode_loader.h"
#include "main.h"
#include "soc.h"
#include "dma.h"
#include "debug.h"
#include "brcms_trace_events.h"
#define TIMER_INTERVAL_WATCHDOG …
#define TIMER_INTERVAL_RADIOCHK …
#define BEACON_INTERVAL_DEFAULT …
#define WL_11N_2x2 …
#define WL_11N_3x3 …
#define WL_11N_4x4 …
#define EDCF_ACI_MASK …
#define EDCF_ACI_SHIFT …
#define EDCF_ECWMIN_MASK …
#define EDCF_ECWMAX_SHIFT …
#define EDCF_AIFSN_MASK …
#define EDCF_AIFSN_MAX …
#define EDCF_ECWMAX_MASK …
#define EDCF_AC_BE_TXOP_STA …
#define EDCF_AC_BK_TXOP_STA …
#define EDCF_AC_VO_ACI_STA …
#define EDCF_AC_VO_ECW_STA …
#define EDCF_AC_VI_ACI_STA …
#define EDCF_AC_VI_ECW_STA …
#define EDCF_AC_BK_ECW_STA …
#define EDCF_AC_VI_TXOP_STA …
#define EDCF_AC_VO_TXOP_STA …
#define EDCF_AC_BE_ACI_STA …
#define EDCF_AC_BE_ECW_STA …
#define EDCF_AC_BK_ACI_STA …
#define EDCF_AC_VO_TXOP_AP …
#define EDCF_TXOP2USEC(txop) …
#define EDCF_ECW2CW(exp) …
#define APHY_SYMBOL_TIME …
#define APHY_PREAMBLE_TIME …
#define APHY_SIGNAL_TIME …
#define APHY_SIFS_TIME …
#define APHY_SERVICE_NBITS …
#define APHY_TAIL_NBITS …
#define BPHY_SIFS_TIME …
#define BPHY_PLCP_SHORT_TIME …
#define PREN_PREAMBLE …
#define PREN_MM_EXT …
#define PREN_PREAMBLE_EXT …
#define DOT11_MAC_HDR_LEN …
#define DOT11_ACK_LEN …
#define DOT11_BA_LEN …
#define DOT11_OFDM_SIGNAL_EXTENSION …
#define DOT11_MIN_FRAG_LEN …
#define DOT11_RTS_LEN …
#define DOT11_CTS_LEN …
#define DOT11_BA_BITMAP_LEN …
#define DOT11_MAXNUMFRAGS …
#define DOT11_MAX_FRAG_LEN …
#define BPHY_PLCP_TIME …
#define RIFS_11N_TIME …
#define BCN_TMPL_LEN …
#define BRCMS_BSS_HT …
#define BRCMS_HWRXOFF …
#define RFDISABLE_DEFAULT …
#define BRCMS_TEMPSENSE_PERIOD …
#define SYNTHPU_DLY_APHY_US …
#define SYNTHPU_DLY_BPHY_US …
#define SYNTHPU_DLY_NPHY_US …
#define SYNTHPU_DLY_LPPHY_US …
#define ANTCNT …
#define EDCF_SHORT_S …
#define EDCF_SFB_S …
#define EDCF_LONG_S …
#define EDCF_LFB_S …
#define EDCF_SHORT_M …
#define EDCF_SFB_M …
#define EDCF_LONG_M …
#define EDCF_LFB_M …
#define RETRY_SHORT_DEF …
#define RETRY_SHORT_MAX …
#define RETRY_LONG_DEF …
#define RETRY_SHORT_FB …
#define RETRY_LONG_FB …
#define APHY_CWMIN …
#define PHY_CWMAX …
#define EDCF_AIFSN_MIN …
#define FRAGNUM_MASK …
#define APHY_SLOT_TIME …
#define BPHY_SLOT_TIME …
#define WL_SPURAVOID_OFF …
#define WL_SPURAVOID_ON1 …
#define WL_SPURAVOID_ON2 …
#define BRCMS_USE_COREFLAGS …
#define BRCMS_PLCP_AUTO …
#define BRCMS_PLCP_SHORT …
#define BRCMS_PLCP_LONG …
#define BRCMS_PROTECTION_AUTO …
#define BRCMS_PROTECTION_OFF …
#define BRCMS_PROTECTION_ON …
#define BRCMS_PROTECTION_MMHDR_ONLY …
#define BRCMS_PROTECTION_CTS_ONLY …
#define BRCMS_PROTECTION_CTL_OFF …
#define BRCMS_PROTECTION_CTL_LOCAL …
#define BRCMS_PROTECTION_CTL_OVERLAP …
#define BRCMS_N_PROTECTION_OFF …
#define BRCMS_N_PROTECTION_OPTIONAL …
#define BRCMS_N_PROTECTION_20IN40 …
#define BRCMS_N_PROTECTION_MIXEDMODE …
#define BRCMS_N_BW_20ALL …
#define BRCMS_N_BW_40ALL …
#define BRCMS_N_BW_20IN2G_40IN5G …
#define BRCMS_N_SGI_20 …
#define BRCMS_N_SGI_40 …
#define NRATE_MCS_INUSE …
#define NRATE_RATE_MASK …
#define NRATE_STF_MASK …
#define NRATE_STF_SHIFT …
#define NRATE_OVERRIDE_MCS_ONLY …
#define NRATE_SGI_MASK …
#define NRATE_SGI_SHIFT …
#define NRATE_LDPC_CODING …
#define NRATE_LDPC_SHIFT …
#define NRATE_STF_SISO …
#define NRATE_STF_CDD …
#define NRATE_STF_STBC …
#define NRATE_STF_SDM …
#define MAX_DMA_SEGS …
#define NTXD …
#define NRXD …
#define TX_HEADROOM …
#define NRXBUFPOST …
#define RXBND …
#define TXSBND …
#define XMTFIFOTBL_STARTREV …
struct d11init { … };
struct edcf_acparam { … } __packed;
uint brcm_msg_level;
static const u8 wme_fifo2ac[] = …;
static const u8 wme_ac2fifo[] = …;
static const u16 xmtfifo_sz[][NFIFO] = …;
#ifdef DEBUG
static const char * const fifo_names[] = …;
#else
static const char fifo_names[6][1];
#endif
#ifdef DEBUG
static struct brcms_c_info *wlc_info_dbg = …;
#endif
static const u8 ac_to_fifo_mapping[IEEE80211_NUM_ACS] = …;
static const u8 fifo_to_ac_mapping[IEEE80211_NUM_ACS] = …;
static u8 brcms_ac_to_fifo(u8 ac)
{ … }
static u8 brcms_fifo_to_ac(u8 fifo)
{ … }
static u8 brcms_basic_rate(struct brcms_c_info *wlc, u32 rspec)
{ … }
static u16 frametype(u32 rspec, u8 mimoframe)
{ … }
static u16 get_sifs(struct brcms_band *band)
{ … }
static bool brcms_deviceremoved(struct brcms_c_info *wlc)
{ … }
static int brcms_txpktpendtot(struct brcms_c_info *wlc)
{ … }
static bool brcms_is_mband_unlocked(struct brcms_c_info *wlc)
{ … }
static int brcms_chspec_bw(u16 chanspec)
{ … }
static void brcms_c_bsscfg_mfree(struct brcms_bss_cfg *cfg)
{ … }
static void brcms_c_detach_mfree(struct brcms_c_info *wlc)
{ … }
static struct brcms_bss_cfg *brcms_c_bsscfg_malloc(uint unit)
{ … }
static struct brcms_c_info *
brcms_c_attach_malloc(uint unit, uint *err, uint devid)
{ … }
static void brcms_b_update_slot_timing(struct brcms_hardware *wlc_hw,
bool shortslot)
{ … }
static uint brcms_c_calc_frame_time(struct brcms_c_info *wlc, u32 ratespec,
u8 preamble_type, uint mac_len)
{ … }
static void brcms_c_write_inits(struct brcms_hardware *wlc_hw,
const struct d11init *inits)
{ … }
static void brcms_c_write_mhf(struct brcms_hardware *wlc_hw, u16 *mhfs)
{ … }
static void brcms_c_ucode_bsinit(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_b_core_ioctl(struct brcms_hardware *wlc_hw, u32 m, u32 v)
{ … }
static void brcms_b_core_phy_clk(struct brcms_hardware *wlc_hw, bool clk)
{ … }
static void brcms_c_setxband(struct brcms_hardware *wlc_hw, uint bandunit)
{ … }
static u32 brcms_c_setband_inact(struct brcms_c_info *wlc, uint bandunit)
{ … }
static bool
brcms_c_dotxstatus(struct brcms_c_info *wlc, struct tx_status *txs)
{ … }
static bool
brcms_b_txstatus(struct brcms_hardware *wlc_hw, bool bound, bool *fatal)
{ … }
static void brcms_c_tbtt(struct brcms_c_info *wlc)
{ … }
static void
brcms_c_mhfdef(struct brcms_c_info *wlc, u16 *mhfs, u16 mhf2_init)
{ … }
static uint
dmareg(uint direction, uint fifonum)
{ … }
static bool brcms_b_attach_dmapio(struct brcms_c_info *wlc, uint j, bool wme)
{ … }
static void brcms_b_detach_dmapio(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_b_info_init(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_b_wait_for_wake(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_b_clkctl_clk(struct brcms_hardware *wlc_hw, enum bcma_clkmode mode)
{ … }
void
brcms_b_mhf(struct brcms_hardware *wlc_hw, u8 idx, u16 mask, u16 val,
int bands)
{ … }
static void brcms_c_mctrl_reset(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_c_mctrl_write(struct brcms_hardware *wlc_hw)
{ … }
void brcms_b_mctrl(struct brcms_hardware *wlc_hw, u32 mask, u32 val)
{ … }
void brcms_c_ucode_wake_override_set(struct brcms_hardware *wlc_hw,
u32 override_bit)
{ … }
void brcms_c_ucode_wake_override_clear(struct brcms_hardware *wlc_hw,
u32 override_bit)
{ … }
static void brcms_c_ucode_mute_override_set(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_c_ucode_mute_override_clear(struct brcms_hardware *wlc_hw)
{ … }
static void
brcms_b_set_addrmatch(struct brcms_hardware *wlc_hw, int match_reg_offset,
const u8 *addr)
{ … }
void
brcms_b_write_template_ram(struct brcms_hardware *wlc_hw, int offset, int len,
void *buf)
{ … }
static void brcms_b_set_cwmin(struct brcms_hardware *wlc_hw, u16 newmin)
{ … }
static void brcms_b_set_cwmax(struct brcms_hardware *wlc_hw, u16 newmax)
{ … }
void brcms_b_bw_set(struct brcms_hardware *wlc_hw, u16 bw)
{ … }
static void brcms_b_upd_synthpu(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_c_ucode_txant_set(struct brcms_hardware *wlc_hw)
{ … }
static u16 brcms_b_ofdm_ratetable_offset(struct brcms_hardware *wlc_hw,
u8 rate)
{ … }
static void brcms_upd_ofdm_pctl1_table(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_b_bsinit(struct brcms_c_info *wlc, u16 chanspec)
{ … }
void brcms_b_core_phypll_reset(struct brcms_hardware *wlc_hw)
{ … }
void brcms_b_phyclk_fgc(struct brcms_hardware *wlc_hw, bool clk)
{ … }
void brcms_b_macphyclk_set(struct brcms_hardware *wlc_hw, bool clk)
{ … }
void brcms_b_phy_reset(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_b_setband(struct brcms_hardware *wlc_hw, uint bandunit,
u16 chanspec) { … }
static bool brcms_c_isgoodchip(struct brcms_hardware *wlc_hw)
{ … }
static bool brcms_c_validboardtype(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_c_get_macaddr(struct brcms_hardware *wlc_hw, u8 etheraddr[ETH_ALEN])
{ … }
static void brcms_b_xtal(struct brcms_hardware *wlc_hw, bool want)
{ … }
static bool brcms_b_radio_read_hwdisabled(struct brcms_hardware *wlc_hw)
{ … }
static bool wlc_dma_rxreset(struct brcms_hardware *wlc_hw, uint fifo)
{ … }
void brcms_b_corereset(struct brcms_hardware *wlc_hw, u32 flags)
{ … }
static void brcms_b_corerev_fifofixup(struct brcms_hardware *wlc_hw)
{ … }
void brcms_b_switch_macfreq(struct brcms_hardware *wlc_hw, u8 spurmode)
{ … }
void brcms_c_start_station(struct brcms_c_info *wlc, u8 *addr)
{ … }
void brcms_c_start_ap(struct brcms_c_info *wlc, u8 *addr, const u8 *bssid,
u8 *ssid, size_t ssid_len)
{ … }
void brcms_c_start_adhoc(struct brcms_c_info *wlc, u8 *addr)
{ … }
static void brcms_c_gpio_init(struct brcms_c_info *wlc)
{ … }
static void brcms_ucode_write(struct brcms_hardware *wlc_hw,
const __le32 ucode[], const size_t nbytes)
{ … }
static void brcms_ucode_download(struct brcms_hardware *wlc_hw)
{ … }
void brcms_b_txant_set(struct brcms_hardware *wlc_hw, u16 phytxant)
{ … }
u16 brcms_b_get_txant(struct brcms_hardware *wlc_hw)
{ … }
void brcms_b_antsel_type_set(struct brcms_hardware *wlc_hw, u8 antsel_type)
{ … }
static void brcms_b_fifoerrors(struct brcms_hardware *wlc_hw)
{ … }
void brcms_c_intrson(struct brcms_c_info *wlc)
{ … }
u32 brcms_c_intrsoff(struct brcms_c_info *wlc)
{ … }
void brcms_c_intrsrestore(struct brcms_c_info *wlc, u32 macintmask)
{ … }
static void brcms_b_tx_fifo_suspend(struct brcms_hardware *wlc_hw,
uint tx_fifo)
{ … }
static void brcms_b_tx_fifo_resume(struct brcms_hardware *wlc_hw,
uint tx_fifo)
{ … }
static void brcms_b_mute(struct brcms_hardware *wlc_hw, bool mute_tx)
{ … }
void
brcms_c_mute(struct brcms_c_info *wlc, bool mute_tx)
{ … }
static inline u32 wlc_intstatus(struct brcms_c_info *wlc, bool in_isr)
{ … }
bool brcms_c_intrsupd(struct brcms_c_info *wlc)
{ … }
bool brcms_c_isr(struct brcms_c_info *wlc)
{ … }
void brcms_c_suspend_mac_and_wait(struct brcms_c_info *wlc)
{ … }
void brcms_c_enable_mac(struct brcms_c_info *wlc)
{ … }
void brcms_b_band_stf_ss_set(struct brcms_hardware *wlc_hw, u8 stf_mode)
{ … }
static bool brcms_b_validate_chip_access(struct brcms_hardware *wlc_hw)
{ … }
#define PHYPLL_WAIT_US …
void brcms_b_core_phypll_ctl(struct brcms_hardware *wlc_hw, bool on)
{ … }
static void brcms_c_coredisable(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_c_flushqueues(struct brcms_c_info *wlc)
{ … }
static u16
brcms_b_read_objmem(struct brcms_hardware *wlc_hw, uint offset, u32 sel)
{ … }
static void
brcms_b_write_objmem(struct brcms_hardware *wlc_hw, uint offset, u16 v,
u32 sel)
{ … }
u16 brcms_b_read_shm(struct brcms_hardware *wlc_hw, uint offset)
{ … }
void brcms_b_write_shm(struct brcms_hardware *wlc_hw, uint offset, u16 v)
{ … }
void
brcms_b_copyto_objmem(struct brcms_hardware *wlc_hw, uint offset,
const void *buf, int len, u32 sel)
{ … }
void
brcms_b_copyfrom_objmem(struct brcms_hardware *wlc_hw, uint offset, void *buf,
int len, u32 sel)
{ … }
static void brcms_c_copyto_shm(struct brcms_c_info *wlc, uint offset,
const void *buf, int len)
{ … }
static void brcms_b_retrylimit_upd(struct brcms_hardware *wlc_hw,
u16 SRL, u16 LRL)
{ … }
static void brcms_b_pllreq(struct brcms_hardware *wlc_hw, bool set, u32 req_bit)
{ … }
static void brcms_b_antsel_set(struct brcms_hardware *wlc_hw, u32 antsel_avail)
{ … }
static bool brcms_c_ps_allowed(struct brcms_c_info *wlc)
{ … }
static void brcms_c_statsupd(struct brcms_c_info *wlc)
{ … }
static void brcms_b_reset(struct brcms_hardware *wlc_hw)
{ … }
void brcms_c_reset(struct brcms_c_info *wlc)
{ … }
void brcms_c_init_scb(struct scb *scb)
{ … }
static void brcms_b_coreinit(struct brcms_c_info *wlc)
{ … }
static void brcms_b_init(struct brcms_hardware *wlc_hw, u16 chanspec)
{ … }
static void brcms_c_set_phy_chanspec(struct brcms_c_info *wlc,
u16 chanspec)
{ … }
static void
brcms_default_rateset(struct brcms_c_info *wlc, struct brcms_c_rateset *rs)
{ … }
static void brcms_c_rate_lookup_init(struct brcms_c_info *wlc,
struct brcms_c_rateset *rateset)
{ … }
static void brcms_c_bandinit_ordered(struct brcms_c_info *wlc,
u16 chanspec)
{ … }
void brcms_c_mac_promisc(struct brcms_c_info *wlc, uint filter_flags)
{ … }
static void brcms_c_ucode_mac_upd(struct brcms_c_info *wlc)
{ … }
static void brcms_c_write_rate_shm(struct brcms_c_info *wlc, u8 rate,
u8 basic_rate)
{ … }
static const struct brcms_c_rateset *
brcms_c_rateset_get_hwrs(struct brcms_c_info *wlc)
{ … }
static void brcms_c_set_ratetable(struct brcms_c_info *wlc)
{ … }
static void brcms_c_bsinit(struct brcms_c_info *wlc)
{ … }
static int
brcms_c_duty_cycle_set(struct brcms_c_info *wlc, int duty_cycle, bool isOFDM,
bool writeToShm)
{ … }
static void brcms_c_set_ps_ctrl(struct brcms_c_info *wlc)
{ … }
static void brcms_c_set_mac(struct brcms_bss_cfg *bsscfg)
{ … }
static void brcms_c_set_bssid(struct brcms_bss_cfg *bsscfg)
{ … }
void brcms_c_set_ssid(struct brcms_c_info *wlc, u8 *ssid, size_t ssid_len)
{ … }
static void brcms_b_set_shortslot(struct brcms_hardware *wlc_hw, bool shortslot)
{ … }
static void brcms_c_switch_shortslot(struct brcms_c_info *wlc, bool shortslot)
{ … }
static void brcms_c_set_home_chanspec(struct brcms_c_info *wlc, u16 chanspec)
{ … }
void
brcms_b_set_chanspec(struct brcms_hardware *wlc_hw, u16 chanspec,
bool mute_tx, struct txpwr_limits *txpwr)
{ … }
static void brcms_c_setband(struct brcms_c_info *wlc,
uint bandunit)
{ … }
static void brcms_c_set_chanspec(struct brcms_c_info *wlc, u16 chanspec)
{ … }
void brcms_c_beacon_phytxctl_txant_upd(struct brcms_c_info *wlc,
u32 bcn_rspec)
{ … }
void brcms_c_protection_upd(struct brcms_c_info *wlc, uint idx, int val)
{ … }
static void brcms_c_ht_update_sgi_rx(struct brcms_c_info *wlc, int val)
{ … }
static void brcms_c_ht_update_ldpc(struct brcms_c_info *wlc, s8 val)
{ … }
void brcms_c_wme_setparams(struct brcms_c_info *wlc, u16 aci,
const struct ieee80211_tx_queue_params *params,
bool suspend)
{ … }
static void brcms_c_edcf_setparams(struct brcms_c_info *wlc, bool suspend)
{ … }
static void brcms_c_radio_monitor_start(struct brcms_c_info *wlc)
{ … }
static bool brcms_c_radio_monitor_stop(struct brcms_c_info *wlc)
{ … }
static void brcms_c_radio_hwdisable_upd(struct brcms_c_info *wlc)
{ … }
bool brcms_c_check_radio_disabled(struct brcms_c_info *wlc)
{ … }
static void brcms_c_radio_timer(void *arg)
{ … }
static void brcms_b_watchdog(struct brcms_c_info *wlc)
{ … }
static void brcms_c_watchdog(struct brcms_c_info *wlc)
{ … }
static void brcms_c_watchdog_by_timer(void *arg)
{ … }
static bool brcms_c_timers_init(struct brcms_c_info *wlc, int unit)
{ … }
static void brcms_c_info_init(struct brcms_c_info *wlc, int unit)
{ … }
static uint brcms_c_attach_module(struct brcms_c_info *wlc)
{ … }
struct brcms_pub *brcms_c_pub(struct brcms_c_info *wlc)
{ … }
static int brcms_b_attach(struct brcms_c_info *wlc, struct bcma_device *core,
uint unit, bool piomode)
{ … }
static bool brcms_c_attach_stf_ant_init(struct brcms_c_info *wlc)
{ … }
static void brcms_c_bss_default_init(struct brcms_c_info *wlc)
{ … }
static void brcms_c_update_mimo_band_bwcap(struct brcms_c_info *wlc, u8 bwcap)
{ … }
static void brcms_c_timers_deinit(struct brcms_c_info *wlc)
{ … }
static void brcms_c_detach_module(struct brcms_c_info *wlc)
{ … }
static void brcms_b_detach(struct brcms_c_info *wlc)
{ … }
uint brcms_c_detach(struct brcms_c_info *wlc)
{ … }
static void brcms_c_ap_upd(struct brcms_c_info *wlc)
{ … }
static void brcms_b_hw_up(struct brcms_hardware *wlc_hw)
{ … }
static int brcms_b_up_prep(struct brcms_hardware *wlc_hw)
{ … }
static int brcms_b_up_finish(struct brcms_hardware *wlc_hw)
{ … }
static void brcms_c_wme_retries_write(struct brcms_c_info *wlc)
{ … }
int brcms_c_up(struct brcms_c_info *wlc)
{ … }
static int brcms_b_bmac_down_prep(struct brcms_hardware *wlc_hw)
{ … }
static int brcms_b_down_finish(struct brcms_hardware *wlc_hw)
{ … }
uint brcms_c_down(struct brcms_c_info *wlc)
{ … }
int brcms_c_set_gmode(struct brcms_c_info *wlc, u8 gmode, bool config)
{ … }
int brcms_c_set_nmode(struct brcms_c_info *wlc)
{ … }
static int
brcms_c_set_internal_rateset(struct brcms_c_info *wlc,
struct brcms_c_rateset *rs_arg)
{ … }
static void brcms_c_ofdm_rateset_war(struct brcms_c_info *wlc)
{ … }
int brcms_c_set_channel(struct brcms_c_info *wlc, u16 channel)
{ … }
int brcms_c_set_rate_limit(struct brcms_c_info *wlc, u16 srl, u16 lrl)
{ … }
void brcms_c_get_current_rateset(struct brcms_c_info *wlc,
struct brcm_rateset *currs)
{ … }
int brcms_c_set_rateset(struct brcms_c_info *wlc, struct brcm_rateset *rs)
{ … }
static void brcms_c_time_lock(struct brcms_c_info *wlc)
{ … }
static void brcms_c_time_unlock(struct brcms_c_info *wlc)
{ … }
int brcms_c_set_beacon_period(struct brcms_c_info *wlc, u16 period)
{ … }
u16 brcms_c_get_phy_type(struct brcms_c_info *wlc, int phyidx)
{ … }
void brcms_c_set_shortslot_override(struct brcms_c_info *wlc, s8 sslot_override)
{ … }
int brcms_c_module_register(struct brcms_pub *pub,
const char *name, struct brcms_info *hdl,
int (*d_fn)(void *handle))
{ … }
int brcms_c_module_unregister(struct brcms_pub *pub, const char *name,
struct brcms_info *hdl)
{ … }
static bool brcms_c_chipmatch_pci(struct bcma_device *core)
{ … }
static bool brcms_c_chipmatch_soc(struct bcma_device *core)
{ … }
bool brcms_c_chipmatch(struct bcma_device *core)
{ … }
u16 brcms_b_rate_shm_offset(struct brcms_hardware *wlc_hw, u8 rate)
{ … }
static inline u16
bcmc_fid_generate(struct brcms_c_info *wlc, struct brcms_bss_cfg *bsscfg,
struct d11txh *txh)
{ … }
static uint
brcms_c_calc_ack_time(struct brcms_c_info *wlc, u32 rspec,
u8 preamble_type)
{ … }
static uint
brcms_c_calc_cts_time(struct brcms_c_info *wlc, u32 rspec,
u8 preamble_type)
{ … }
static uint
brcms_c_calc_ba_time(struct brcms_c_info *wlc, u32 rspec,
u8 preamble_type)
{ … }
static u16
brcms_c_compute_frame_dur(struct brcms_c_info *wlc, u32 rate,
u8 preamble_type, uint next_frag_len)
{ … }
static uint
brcms_c_calc_frame_len(struct brcms_c_info *wlc, u32 ratespec,
u8 preamble_type, uint dur)
{ … }
static bool brcms_c_valid_rate(struct brcms_c_info *wlc, u32 rspec, int band,
bool verbose)
{ … }
static u32
mac80211_wlc_set_nrate(struct brcms_c_info *wlc, struct brcms_band *cur_band,
u32 int_val)
{ … }
static void brcms_c_cck_plcp_set(struct brcms_c_info *wlc, int rate_500,
uint length, u8 *plcp)
{ … }
static void brcms_c_compute_mimo_plcp(u32 rspec, uint length, u8 *plcp)
{ … }
static void
brcms_c_compute_ofdm_plcp(u32 rspec, u32 length, u8 *plcp)
{ … }
static void brcms_c_compute_cck_plcp(struct brcms_c_info *wlc, u32 rspec,
uint length, u8 *plcp)
{ … }
static void
brcms_c_compute_plcp(struct brcms_c_info *wlc, u32 rspec,
uint length, u8 *plcp)
{ … }
u16
brcms_c_compute_rtscts_dur(struct brcms_c_info *wlc, bool cts_only,
u32 rts_rate,
u32 frame_rate, u8 rts_preamble_type,
u8 frame_preamble_type, uint frame_len, bool ba)
{ … }
static u16 brcms_c_phytxctl1_calc(struct brcms_c_info *wlc, u32 rspec)
{ … }
static u16
brcms_c_d11hdrs_mac80211(struct brcms_c_info *wlc, struct ieee80211_hw *hw,
struct sk_buff *p, struct scb *scb, uint frag,
uint nfrags, uint queue, uint next_frag_len)
{ … }
static int brcms_c_tx(struct brcms_c_info *wlc, struct sk_buff *skb)
{ … }
bool brcms_c_sendpkt_mac80211(struct brcms_c_info *wlc, struct sk_buff *sdu,
struct ieee80211_hw *hw)
{ … }
int
brcms_c_txfifo(struct brcms_c_info *wlc, uint fifo, struct sk_buff *p)
{ … }
u32
brcms_c_rspec_to_rts_rspec(struct brcms_c_info *wlc, u32 rspec,
bool use_rspec, u16 mimo_ctlchbw)
{ … }
static void brcms_c_bcn_li_upd(struct brcms_c_info *wlc)
{ … }
static void
brcms_b_read_tsf(struct brcms_hardware *wlc_hw, u32 *tsf_l_ptr,
u32 *tsf_h_ptr)
{ … }
static u64 brcms_c_recover_tsf64(struct brcms_c_info *wlc,
struct d11rxhdr *rxh)
{ … }
static void
prep_mac80211_status(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
struct sk_buff *p,
struct ieee80211_rx_status *rx_status)
{ … }
static void
brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
struct sk_buff *p)
{ … }
u16
brcms_c_calc_lsig_len(struct brcms_c_info *wlc, u32 ratespec,
uint mac_len)
{ … }
static void
brcms_c_mod_prb_rsp_rate_table(struct brcms_c_info *wlc, uint frame_len)
{ … }
int brcms_c_get_header_len(void)
{ … }
static void brcms_c_beacon_write(struct brcms_c_info *wlc,
struct sk_buff *beacon, u16 tim_offset,
u16 dtim_period, bool bcn0, bool bcn1)
{ … }
static void brcms_c_update_beacon_hw(struct brcms_c_info *wlc,
struct sk_buff *beacon, u16 tim_offset,
u16 dtim_period)
{ … }
void brcms_c_update_beacon(struct brcms_c_info *wlc)
{ … }
void brcms_c_set_new_beacon(struct brcms_c_info *wlc, struct sk_buff *beacon,
u16 tim_offset, u16 dtim_period)
{ … }
void brcms_c_set_new_probe_resp(struct brcms_c_info *wlc,
struct sk_buff *probe_resp)
{ … }
void brcms_c_enable_probe_resp(struct brcms_c_info *wlc, bool enable)
{ … }
static void
brcms_c_shm_ssid_upd(struct brcms_c_info *wlc, struct brcms_bss_cfg *cfg)
{ … }
static void
brcms_c_bss_update_probe_resp(struct brcms_c_info *wlc,
struct brcms_bss_cfg *cfg,
struct sk_buff *probe_resp,
bool suspend)
{ … }
void brcms_c_update_probe_resp(struct brcms_c_info *wlc, bool suspend)
{ … }
int brcms_b_xmtfifo_sz_get(struct brcms_hardware *wlc_hw, uint fifo,
uint *blocks)
{ … }
void
brcms_c_set_addrmatch(struct brcms_c_info *wlc, int match_reg_offset,
const u8 *addr)
{ … }
void brcms_c_scan_start(struct brcms_c_info *wlc)
{ … }
void brcms_c_scan_stop(struct brcms_c_info *wlc)
{ … }
void brcms_c_associate_upd(struct brcms_c_info *wlc, bool state)
{ … }
void brcms_c_inval_dma_pkts(struct brcms_hardware *hw,
struct ieee80211_sta *sta,
void (*dma_callback_fn))
{ … }
int brcms_c_get_curband(struct brcms_c_info *wlc)
{ … }
bool brcms_c_tx_flush_completed(struct brcms_c_info *wlc)
{ … }
void brcms_c_set_beacon_listen_interval(struct brcms_c_info *wlc, u8 interval)
{ … }
u64 brcms_c_tsf_get(struct brcms_c_info *wlc)
{ … }
void brcms_c_tsf_set(struct brcms_c_info *wlc, u64 tsf)
{ … }
int brcms_c_set_tx_power(struct brcms_c_info *wlc, int txpwr)
{ … }
int brcms_c_get_tx_power(struct brcms_c_info *wlc)
{ … }
static void brcms_c_recv(struct brcms_c_info *wlc, struct sk_buff *p)
{ … }
static bool
brcms_b_recv(struct brcms_hardware *wlc_hw, uint fifo, bool bound)
{ … }
bool brcms_c_dpc(struct brcms_c_info *wlc, bool bounded)
{ … }
void brcms_c_init(struct brcms_c_info *wlc, bool mute_tx)
{ … }
struct brcms_c_info *
brcms_c_attach(struct brcms_info *wl, struct bcma_device *core, uint unit,
bool piomode, uint *perr)
{ … }