📄 wlc.h
字号:
uint nmac; /* # of entries on maclist array */ int macmode; /* allow/deny stations on maclist array */ struct ether_addr maclist[MAXMACLIST]; /* list of source MAC addrs to match */ struct ether_addr BSSID; /* Filter for receiving bc/mc frames */ struct ether_addr prev_BSSID; /* MAC addr of last associated AP (BSS) */ struct ether_addr announce_BSSID; /* BSSID to announce in beacon or probe */ wlc_bss_info_t default_bss; /* configured BSS parameters */ wlc_bss_info_t target_bss; /* join attempt BSS parameters */ /* security */ wsec_key_t* wsec_keys[WSEC_MAX_KEYS]; /* dynamic key storage */ wsec_key_t wsec_def_keys[WLC_DEFAULT_KEYS]; /* fixed default key storage */ wsec_key_vec_t wsec_bsupdate; /* key update flag for band switch that involves a * core switch */ bool wsec_portopen; /* indicates keys are plumbed */ bool wsec_swkeys; /* indicates that all keys should be * treated as sw keys (used for debugging) */ /* network config */ bool shortpreamble; /* currently operating with CCK ShortPreambles */ bool shortslot; /* currently using 802.11g ShortSlot timing */ bool erp_ie_use_protection; /* currently advertising Use_Protection */ bool erp_ie_nonerp; /* currently advertising NonERP_Present */ bool nonerp_assoc; /* NonERP STAs associated? */ bool ofdm_assoc; /* OFDM STAs associated? */ bool nonabcap_assoc; /* nonAfterburnerCapable STAs associated? */ bool longslot_assoc; /* Long Slot timing only STAs associated? */ bool longpre_assoc; /* bss/ibss: cck long preamble only STAs associated? */ bool include_legacy_erp; /* include Legacy ERP info elt ID 47 as well as * 802.11g ID 42 */ bool ignore_bcns; /* override: ignore non shortslot bcns in a G network */ bool barker_overlap_control; /* true=be aware of overlapping BSSs for barker */ bool g_protection; /* use g spec protection */ bool g_protection_cts; /* use CTS-to-Self instead of RTS/CTS */ bool n_protection; /* use OFDM protection on MIMO frames */ bool interference_mode_crs; /* aphy crs state for interference mitigation mode */ int8 barker_preamble; /* current Barker Preamble Mode */ int8 shortslot_override; /* 802.11g ShortSlot override */ int nonerp_ibss_timeout; /* #seconds until nonerp IBSS beacons gone */ int nonerp_ovlp_timeout; /* #seconds until nonerp overlapping BSS bcns gone */ int ofdm_ibss_timeout; /* #seconds until ofdm IBSS beacons gone */ int ofdm_ovlp_timeout; /* #seconds until ofdm overlapping BSS bcns gone */ int longpre_detect_timeout; /* #seconds until long preamble bcns gone */ int barker_detect_timeout; /* #seconds until bcns signaling Barker long * preamble only gone */ int protection_detect_timeout; /* #seconds until bcns signaling Use_Protection gone */ int n_protection_ibss_detect_timeout; /* #seconds until bcns signaling * Use_OFDM_Protection gone */ int8 g_protection_control; /* AP/IBSS control alg for g spec protection */ int8 g_protection_override; /* override for use of g spec protection */ int8 n_protection_control; /* AP/IBSS control alg for PreN protection */ int8 n_protection_override; /* override for use of PreN protection */ int8 PLCPHdr_override; /* 802.11b Preamble Type override */ int8 txant; /* userTx antenna setting */ uint16 phytxant; /* phyTx antenna setting in txheader */ int nmode; /* PreN mode 0 = disabled, 1 = enabled */ int interference_mode; /* enable interference mitigation mode */ uint interference_mode_crs_time; /* time at which crs was turned off */ uint16 crsglitch_prev; /* crsglitch count at last watchdog */ /* do not send prb resp if request older than this, 0 = disable */ uint16 prb_resp_timeout; struct rateset sup_rates_override; /* use only these rates in 11g supported rates if * specifed */ /* PHY parameters */ uint16 fragthresh[NFIFO]; /* per-fifo fragmentation thresholds */ uint16 RTSThresh; /* 802.11 dot11RTSThreshold */ uint16 SRL; /* 802.11 dot11ShortRetryLimit */ uint16 LRL; /* 802.11 dot11LongRetryLimit */ uint16 SFBL; /* Short Frame Rate Fallback Limit */ uint16 LFBL; /* Long Frame Rate Fallback Limit */ int rssi; /* RSSI moving average */ int8 phy_noise_list[MAXCHANNEL]; /* noise right after tx */ char brcm_ie[WLC_MAX_BRCM_ELT]; /* brcm proprietary element */ bool PSpoll; /* whether there is an outstanding PS-Poll frame */ uint8 PM; /* power-management mode (CAM, PS or FASTPS) */ uint8 PMidlebcns; /* bcns since last pkt was tx'd or rx'd */ bool PMawakebcn; /* bcn recvd during current waking state */ /* packet queue */ uint qvalid; /* DirFrmQValid and BcMcFrmQValid */ pkt_cb_t pkt_callback[MAX_PKT_CB + 1]; /* tx completion callback handlers */ uint32 txretried; /* tx retried number in one msdu */ uint txrateidx; /* index into tx rate circular buffer */ ratespec_t txrate[NTXRATE][2]; /* circular buffer of prev MPDUs tx rates */ uint8 nickname[32]; /* Set by vx/linux ioctls but currently unused */ uint8 spect_state; /* Keep various 11h states */ dot11_quiet_t quiet_cmd; dot11_channel_switch_t csa; uint8 pwr_constraint; /* WiFi Multimedia Enhancements (WME) */ ac_bitmap_t wme_admctl; /* bit i set if AC i under admission control */ uint16 wme_txop[AC_COUNT]; /* current txop for each ac */ wme_param_ie_t wme_param_ie; /* WME parameter info element, which on STA * contains parameters in use locally, and on * AP contains parameters advertised to STA * in beacons and assoc responses. */ uint8 apsd_sta_qosinfo; /* Application-requested APSD configuration */ bool apsd_sta_usp; /* Unscheduled Service Period in progress on STA */ wlc_event_t *events; /* ordered list of events to report */ uint32 lifetime[AC_COUNT]; /* MSDU lifetime per AC in us */ modulecb_t modulecb[WLC_MAXMODULES]; txmod_info_t txmod_fns[SCB_LAST];};/* quiet.state */#define WAITING_FOR_FLUSH_COMPLETE (1 << 0)#define WAITING_FOR_INTERVAL (1 << 1)#define WAITING_FOR_OFFSET (1 << 2)#define WAITING_FOR_DURATION (1 << 3)#define SILENCE (1 << 4)#define QUIET_STATE(wlc) 0/* spect_state */#define NEED_TO_UPDATE_BCN (1 << 0) /* Need to decrement counter in outgoing beacon */#define NEED_TO_SWITCH_CHANNEL (1 << 1) /* A channel switch is pending */#define RADAR_SIM (1 << 2) /* Simulate radar detection...for testing */#define FASTPM_IDLEBCNS 2 /* fast pm mode: transition from PS off->on after this many idle * bcn periods *//* bandstate array indices */#define BAND_2G_INDEX 0 /* wlc->bandstate[x] index */#define BAND_5G_INDEX 1 /* wlc->bandstate[x] index */#define CHANNEL_BANDUNIT(wlc, ch) ((ch <= WLC_MAX_2G_CHANNEL) ? BAND_2G_INDEX : BAND_5G_INDEX)#define OTHERBANDUNIT(wlc) ((uint)((wlc)->band->bandunit? BAND_2G_INDEX : BAND_5G_INDEX))#define BAND2CORE(wlc, bandunit) ((uint)(((wlc)->ncores > 1)? bandunit: 0))#define IS_MBAND_UNLOCKED(wlc) \ ((NBANDS(wlc) > 1) && !(wlc)->bandlocked)/* increment counter */#define WLCNINC(cntr)#define WLCNINCN(cntr)#define AID2PVBMAP(aid) (aid & 0x3fff)#define AID2AIDMAP(aid) ((aid & 0x3fff) - 1)/* set the 2 MSBs of the AID */#define AIDMAP2AID(pos) ((pos + 1) | 0xc000)/* sum the individual fifo tx pending packet counts */#define TXPKTPENDTOT(wlc) (wlc->core->txpktpend[0] + wlc->core->txpktpend[1] + \ wlc->core->txpktpend[2] + wlc->core->txpktpend[3])#define WLC_IS_MATCH_SSID(wlc, ssid1, ssid2, len1, len2) \ ((len1 == len2) && !bcmp(ssid1, ssid2, len1))extern void wlc_link(wlc_info_t *wlc, bool up, struct ether_addr *addr, wlc_bsscfg_t *bsscfg);extern int wlc_scan_request(wlc_info_t *wlc, int bss_type, const struct ether_addr* bssid, const uchar ssid[], int ssid_len, int scan_type, int nprobes, int active_time, int passive_time, int home_time, const uint16* channel_list, int channel_num, bool save_prb, cb_fn_t fn, void* arg);extern void wlc_set_ssid(wlc_info_t *wlc, uchar SSID[], int len);/* helper functions */extern bool wlc_rateset_isofdm(uint count, uint8 *rates);extern void wlc_remove_all_keys(wlc_info_t *wlc);extern int wlc_format_ssid(char* buf, const uchar ssid[], int ssid_len);extern bool wlc_bssid_is_current(wlc_info_t *wlc, struct ether_addr *bssid);extern uint32 wlc_mhf(wlc_info_t *wlc, uint32 mask, uint32 val, bool allbands);extern void wlc_txstatusrecv(wlc_info_t *wlc);extern void wlc_bss_list_free(wlc_info_t *wlc, wlc_bss_list_t *bss_list);extern void wlc_update_txpwr_shmem(wlc_pub_t *pub);void wlc_rateprobe(wlc_info_t *wlc, struct ether_addr *ea, struct scb *scb, ratespec_t rate_override);void *wlc_senddeauth(wlc_info_t *wlc, struct ether_addr *da, struct ether_addr *bssid, struct scb *scb, uint16 reason_code);void wlc_mac_event(wlc_info_t* wlc, uint msg, const struct ether_addr* addr, uint result, uint status, uint auth_type, void *data, int datalen);void wlc_bss_up(wlc_info_t *wlc, wlc_bsscfg_t *cfg);int wlc_disassociate_client(wlc_info_t *wlc, bool send_disassociate, pkcb_fn_t fn, void *arg);void wlc_assoc_abort(wlc_info_t *wlc);extern int wlc_pkt_callback_register(wlc_info_t *wlc, pkcb_fn_t fn, void *arg, void *pkt);extern void *wlc_sendnulldata(wlc_info_t *wlc, struct ether_addr *da, uint rate_override, uint32 pktflags, int prio);extern int wlc_wsec(wlc_info_t *wlc, wlc_bsscfg_t *bsscfg, uint32 val);extern void wlc_read_tsf(wlc_info_t* wlc, uint32* tsf_l_ptr, uint32* tsf_h_ptr);extern bcm_tlv_t *wlc_find_vendor_ie(uint8 *tlvs, int tlvs_len, uint8 *voui, uint8 *type, int type_len);extern void wlc_set_cwmin(wlc_info_t *wlc, uint16 newmin);extern void wlc_set_cwmax(wlc_info_t *wlc, uint16 newmax);extern void wlc_mac_bcn_promisc(wlc_info_t *wlc);extern void wlc_mac_promisc(wlc_info_t *wlc);extern void wlc_sendprobe(wlc_info_t *wlc, uchar ssid[], int ssid_len);extern void wlc_bss_list_xfer(wlc_bss_list_t *from, wlc_bss_list_t *to);extern void wlc_send_q(wlc_info_t *wlc, struct pktq *q);extern int wlc_prep_sdu(wlc_info_t *wlc, void **sdu, int *nsdu, uint *fifo);extern int wlc_prep_pdu(wlc_info_t *wlc, void *pdu, uint *fifo);extern void wlc_send_action_err(wlc_info_t *wlc, struct dot11_management_header *hdr, uint8 *body, int body_len);extern void *wlc_frame_get_mgmt(wlc_info_t *wlc, uint16 fc, const struct ether_addr *da, const struct ether_addr *bssid, uint body_len, uint8 **pbody);extern void *wlc_frame_get_ctl(wlc_info_t *wlc, uint len);extern bool wlc_sendmgmt(wlc_info_t *wlc, void *p, struct scb *scb, int preamble, wsec_key_t *key, ratespec_t rate_or);extern bool wlc_sendctl(wlc_info_t *wlc, void *p, struct scb *scb, uint fifo, ratespec_t rate_or, bool enq_only);extern void wlc_recvdata_ordered(wlc_info_t *wlc, struct scb *scb, struct wlc_frminfo *f);extern void wlc_set_pmstate(wlc_info_t *wlc, bool state);extern void wlc_uint64_add(uint32* high, uint32* low, uint32 inc_high, uint32 inc_low);extern void wlc_uint64_sub(uint32* a_high, uint32* a_low, uint32 b_high, uint32 b_low);extern bool wlc_uint64_lt(uint32 a_high, uint32 a_low, uint32 b_high, uint32 b_low);extern void wlc_rm_meas_end(wlc_info_t* wlc);extern void wlc_rm_start(wlc_info_t* wlc);extern int wlc_rm_abort(wlc_info_t* wlc);extern uint32 wlc_calc_tbtt_offset(uint32 bi, uint32 tsf_h, uint32 tsf_l);extern int wlc_roam_scan(wlc_info_t *wlc, uint reason);/* Shared memory and template access */extern void wlc_write_shm(wlc_info_t *wlc, uint offset, uint16 v);extern uint16 wlc_read_shm(wlc_info_t *wlc, uint offset);extern void wlc_write_template_ram(wlc_info_t *wlc, int offset, int len, void *buf);extern void wlc_set_shm(wlc_info_t *wlc, uint offset, uint16 v, int len);extern void wlc_copyto_shm(wlc_info_t *wlc, uint offset, const void* buf, int len);extern void wlc_copyfrom_shm(wlc_info_t *wlc, uint offset, void* buf, int len);extern void wlc_set_rcmta(wlc_info_t *wlc, int idx, const struct ether_addr *addr);extern void wlc_set_addrmatch(wlc_info_t *wlc, int match_reg_offset, const struct ether_addr *addr);extern void wlc_assoc_change_state(wlc_info_t *wlc, uint newstate);extern void wlc_txfifo(wlc_info_t *wlc, uint fifo, void *p, bool commit);extern bool wlc_validate_chip_access(wlc_info_t *wlc);extern void wlc_update_beacon(wlc_info_t *wlc);extern void wlc_read_pmq_ea(wlc_info_t *wlc, struct ether_addr* eaddr);extern bool wlc_prec_enq(wlc_info_t *wlc, struct pktq *q, void *pkt, int prec);extern void wlc_pkt_flush(wlc_info_t *wlc, void *pkt, uint16 txstatus);extern void wlc_pkt_callback_append(wlc_info_t *wlc, void *new_pkt, void *pkt);extern char* wlc_get_macaddr(wlc_info_t *wlc);extern uint8* wlc_write_info_elt(uint8 *cp, int id, int len, const void* data);extern void wlc_coredisable(wlc_info_t* wlc);extern void wlc_clkctl_clk(wlc_info_t *wlc, uint mode);extern void wlc_xtal(wlc_info_t* wlc, bool want);extern void wlc_radio_hwdisable_upd(wlc_info_t* wlc);extern void wlc_setxband(wlc_info_t *wlc, uint bandunit);extern void wlc_setband(wlc_info_t *wlc, uint bandunit);extern void wlc_rateset_elts(wlc_info_t *wlc, uint count, const uint8* rates, struct rateset *sup_rates, struct rateset *ext_rates);extern void wlc_compute_plcp(wlc_info_t *wlc, ratespec_t rate, uint length, uint8 *plcp);extern uint wlc_calc_frame_time(wlc_info_t *wlc, ratespec_t ratespec, int short_preamble, uint mac_len);extern void wlc_processpmq(wlc_info_t *wlc);extern void wlc_set_ratetable(wlc_info_t *wlc);extern void wlc_scan_default_channels(wlc_info_t *wlc, uint8 *channel_list, int *pchannel_num);extern void wlc_default_bss(wlc_info_t *wlc);extern uint wlc_rx_channel(d11rxhdr_t *rxh);extern void wlc_set_channel(wlc_info_t *wlc, uint channel);extern void wlc_info_init(wlc_info_t* wlc, bool wme, int unit);extern bool wlc_timers_init(wlc_info_t* wlc, int unit);extern const wlc_iovar_t wlc_iovars[];extern bool wlc_update_brcm_ie(wlc_info_t *wlc);extern void wlc_txq_scb_free_notify(void *context, struct scb *remove);extern void wlc_recvdata(wlc_info_t *wlc, osl_t *osh, d11rxhdr_t *rxh, void *p);extern void wlc_recvdata_sendup(wlc_info_t *wlc, struct scb *scb, bool wds, struct ether_addr *da, void *p);extern bool wlc_sendsdu(wlc_info_t *wlc, void *sdu);extern struct dot11_header *wlc_80211hdr(wlc_info_t *wlc, osl_t *osh, void *p, wlc_bsscfg_t *bsscfg, struct scb *scb, bool MoreFrag, wsec_key_t *key, uint8 prio);extern void wlc_ether_8023hdr(wlc_info_t *wlc, osl_t *osh, struct ether_header *eh, void *p);extern void wlc_8023_etherhdr(wlc_info_t *wlc, osl_t *osh, void *p);extern void* wlc_hdr_proc(wlc_info_t *wlc, void *sdu, struct scb *scb);extern uint16 wlc_sdu_etype(wlc_info_t *wlc, void *sdu);extern uint8* wlc_sdu_data(wlc_info_t *wlc, void *sdu);extern uint16 wlc_rcvfifo_limit_get(wlc_info_t *wlc);extern void wlc_dump_txdesc(d11txh_t *txh);extern void wlc_dump_txstatus(tx_status_t* txs);extern void wlc_btc_gpio_disable(wlc_info_t *wlc);/* stuff pulled in from wlc.c *//* Interrupt bit error summary. Don't include I_RU: we refill DMA at other * times; and if we run out, constant I_RU interrupts may cause lockup. We * will still get error counts from rx0ovfl. */#define I_ERRORS (I_PC | I_PD | I_DE | I_RO | I_XU)/* default software intmasks */#define DEF_RXINTMASK (I_RI) /* enable rx int on rxfifo only */#define DEF_MACINTMASK (MI_TXSTOP | MI_TBTT | MI_ATIMWINEND | MI_PMQ | \ MI_PHYTXERR | MI_DMAINT | MI_TFS | MI_BG_NOISE | \ MI_CCA | MI_TO | MI_GP0 | MI_RFDISABLE)#define RETRY_SHORT_DEF 7 /* Default Short retry Limit */#define RETRY_SHORT_MAX 255 /* Maximum Short retry Limit */#define RETRY_LONG_DEF 4 /* Default Long retry count */#define RETRY_SHORT_FB 3 /* Short retry count for fallback rate */#define RETRY_LONG_FB 2 /* Long retry count for fallback rate */#define MAXTXPKTS 6 /* max # pkts pending */#define PIO_TX 1 /* Xmit engine for PIO Fifo */#define PIO_RX 2 /* Recv. engine for PIO Fifo */#define PIOREG(wlc, txrx, fifonum) (D11REV_LT(wlc->pub.corerev, 8) ? \ ((txrx == PIO_TX) ? (void *)&(wlc->regs->fifo.f32regs.pioregs[fifonum].b2.tx) : \ (void *)&(wlc->regs->fifo.f32regs.pioregs[fifonum].b2.rx)) : \ ((txrx == PIO_TX) ? (void *)&(wlc->regs->fifo.f32regs.pioregs[fifonum].b4.tx) : \ (void *)&(wlc->regs->fifo.f32regs.pioregs[fifonum].b4.rx)))extern void wlc_txmod_fn_register(wlc_info_t *wlc, scb_txmod_t feature_id, txmod_tx_fn_t tx_fn, void *ctx, txmod_deactivate_fn_t deactivate_fn, txmod_activate_fn_t activate_fn);extern void wlc_txq_scb_init(void *ctx, struct scb *scb);#endif /* _wlc_h_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -