📄 wlc.h
字号:
uint32 mhf; /* union of ucode M_HOST_FLAG and M_HOST_FLAG2 */ struct rateset hw_rateset; /* rates supported by chip (phy-specific) */ uint8 basic_rate[WLC_MAXRATE+1]; /* basic rates indexed by rate */ int8 antgain; /* antenna gain from srom */ int roam_trigger; /* "good enough" threshold for current AP */ uint roam_delta; /* "signif better" thresh for new AP candidates */ int roam_trigger_def; /* roam trigger init. value */ uint roam_delta_def; /* roam delta init. value */ uint phycal_nslope; /* time of last nrssislope calibration */ uint phycal_noffset; /* time of last nrssioffset calibration */ uint16 CWmin; /* The minimum size of contention window, in unit of aSlotTime */ uint16 CWmax; /* The maximum size of contention window, in unit of aSlotTime */} wlcband_t;/* generic function callback takes just one arg */typedef void (*cb_fn_t)(void *);/* tx completion callback takes 3 args */typedef void (*pkcb_fn_t)(wlc_info_t *wlc, uint txstatus, void *arg);typedef struct { pkcb_fn_t fn; /* function to call when tx frame completes */ void *arg; /* void arg for fn */ uint8 nextidx; /* index of next call back if threading */ bool entered; /* recursion check */} pkt_cb_t;#define WLC_MAX_BRCM_ELT 32 /* Max size of BRCM proprietary elt *//* Indexes for A band txpwr from srom */#define A_LOW_CHANS 0 /* Index for low channels in A band */#define A_MID_CHANS 1 /* Index for mid channels in A band */#define A_HIGH_CHANS 2 /* Index for high channels in A band */#define G_ALL_CHANS 0 /* Index for all channels in G band *//* aci_state state bits */#define ACI_ACTIVE (1 << 1) /* enabled either manually or automatically */#define ACI_AUTO (1 << 2) /* Auto or manual *//* module control blocks */typedef struct { char name[32]; /* module name : NULL indicates empty array member */ const wlc_iovar_t *iovars; /* iovar table */ void *hdl; /* handle passed when handler 'doiovar' is called */ watchdog_fn_t watchdog_fn; /* watchdog handler */ iovar_fn_t iovar_fn; /* iovar handler */ down_fn_t down_fn; /* down handler */} modulecb_t;/* Allowed transmit features for scb */typedef enum scb_txmod { SCB_START, /* Node to designate start of the tx path */ SCB_CRAM, SCB_APPS, SCB_AMSDU, SCB_BA, SCB_AMPDU, SCB_TRANSMIT, /* Node to designate enqueue to wlc->txq */ SCB_LAST} scb_txmod_t;/* Function that does transmit packet feature processing. prec is precedence of the packet */typedef void (*txmod_tx_fn_t)(void *ctx, struct scb *scb, void *pkt, uint prec);/* Callback for txmod when it gets deactivated by other txmod */typedef void (*txmod_deactivate_fn_t)(void *ctx, struct scb *scb);/* Callback for txmod when it gets activated */typedef void (*txmod_activate_fn_t)(void *ctx, struct scb *scb);/* Structure to store registered functions for a Txmod */typedef struct txmod_info { txmod_tx_fn_t tx_fn; /* Process the packet */ txmod_deactivate_fn_t deactivate_notify_fn; /* Handle the deactivation of the feature */ txmod_activate_fn_t activate_notify_fn; /* Handle the activation of the feature */ void *ctx; /* Opaque handle to be passed */} txmod_info_t;/* * Principle common (os-independent) software data structure. */struct wlc_info { wlc_pub_t pub; /* wlc public state (must be first field of wlc) */ void *wl; /* pointer to os-specific private state */ /* submodule handler */ led_info_t *ledh; /* pointer to led specific information */ void *sup; /* pointer to supplicant state */ void *btparam; /* bus type specific cookie */ d11regs_t *regs; /* pointer to device registers */ int vars_size; /* size of vars, free vars on detach */ uint32 btc_mhf; /* MHF for Blue Tooth Coexistance */ void *phy_sh; /* pointer to shared phy state */ bool sbclk; /* sb has clock */ bool plldown; /* true if we should power off pll in down state */ bool forcefastclk; /* true if the h/w is forcing the use of fast clk */ /* version info */ uint16 vendorid; /* PCI vendor id */ uint16 deviceid; /* PCI device id */ uint ucode_rev; /* microcode revision */ struct ether_addr perm_etheraddr; /* original sprom local ethernet address */ /* multiband */ uint ncores; /* # d11 hardware cores */ wlccore_t *core; /* pointer to active io core */ wlcband_t *band; /* pointer to active per-band state */ wlccore_t corestate[MAXCORES]; /* per-core state (one per hw core) */ wlcband_t bandstate[MAXBANDS]; /* per-band state (one per phy/radio) */ bool bandlocked; /* disable auto multi-band switching */ /* interrupt */ uint32 macintstatus; /* bit channel between isr and dpc */ uint32 macintmask; /* sw runtime master macintmask value */ uint32 defmacintmask; /* default "on" macintmask value */ volatile uint32 maccontrol; /* maccontrol register sw cache */ /* up and down */ bool radio_monitor; /* radio timer is running */ bool down_override; /* true=down */ bool going_down; /* down path intermediate variable */ /* timer */ struct wl_timer *wdtimer; /* timer for watchdog routine */ uint fast_timer; /* Periodic timeout for 'fast' timer */ uint slow_timer; /* Periodic timeout for 'slow' timer */ uint glacial_timer; /* Periodic timeout for 'glacial' timer */ uint now; /* # elapsed seconds */ uint phycal_mlo; /* last time measurelow calibration was done */ uint phycal_txpower; /* last time txpower calibration was done */ struct wl_timer *radio_timer; /* timer for hw radio button monitor routine */ struct wl_timer *led_timer; /* periodic led timer */ /* promiscuous */ bool monitor; /* monitor (MPDU sniffing) mode */ bool bcnmisc_ibss; /* bcns promisc mode override for IBSS */ bool bcnmisc_scan; /* bcns promisc mode override for scan */ bool bcnmisc_monitor; /* bcns promisc mode override for monitor */ bool _piomode; /* true if pio mode */ bool channel_qa_active; /* true if chan qual measurement in progress */ bool bcns_lost; /* indicate if the STA can see the AP */ bool war16165; /* PCI slow clock 16165 war flag */ bool check_for_unaligned_tbtt; /* check unaligned tbtt flag */ bool PM_override; /* no power-save flag, override PM(user input) */ bool PMenabled; /* current power-management state (CAM or PS) */ bool PMpending; /* waiting for tx status with PM indicated set */ bool PMblocked; /* block any PSPolling, PS mode being used to buffer * AP traffic */ bool WME_PM_blocked; /* Can STA go to PM when in WME Auto mode */ bool dtim_programmed; /* wait for dtim beacon */ bool wake; /* host-specified PS-mode sleep state */ bool wakeforclkctl; /* force wake for clkctl change */ bool wakefortxfifo; /* force wake for tx fifo access */ bool wakeformacsuspend; /* force wake for mac suspend and wait */ bool wme_noack; /* enable WME no-acknowledge mode */ ac_bitmap_t wme_dp; /* Discard (oldest first) policy per AC */ bool wme_apsd; /* enable Advanced Power Save Delivery */ bool wme_apsd_assoc; /* an associated STA is using APSD */ int vlan_mode; /* OK to use 802.1Q Tags (ON, OFF, AUTO) */ uint16 tx_prec_map; /* Precedence map based on HW FIFO space */ uint16 fifo2prec_map[NFIFO]; /* pointer to fifo2_prec map based on WME */ bool _regulatory_domain; /* 802.11d enabled? */ bool tx_suspended; /* data fifos need to remain suspended */ bool wpa_msgs; /* enable/disable wpa indications via wlc_wpa_msg */ /* BSS Configurations */ wlc_bsscfg_t *bsscfg[WLC_MAXBSSCFG]; /* set of BSS configurations, idx 0 is default and * always valid */ wlc_bsscfg_t cfg; /* the primary bsscfg (can be AP or STA) */ int bsscfg_prb_idx; /* index of bsscfg using ucode probe response */ int bsscfg_bcn_idx; /* index of bsscfg using ucode beacon(designated * bss) */ uint aps_associated; /* count of active (up) AP bsscfgs */ uint8 block_datafifo; /* prohibit posting frames to data fifos */ bool bcmcfifo_drain; /* TX_BCMC_FIFO is set to drain */ uint8 eventing[WL_EVENTING_MASK_LEN]; /* 128-bit mask for MAC event reporting to * outside world */ uint8 event_msgs[WL_EVENTING_MASK_LEN]; /* 128-bit mask for MAC event reporting via * data packets */ struct pktq txq; /* common tx pkt Q */ /* scb data */ scb_module_t *scbstate; /* pointer to scb module state */ uint seckeys; /* 58 key table shm address */ wlc_event_cb_t callback; /* event callback function */ /* channel quality measure */ int channel_quality; /* quality metric(0-3) of last measured channel, or * -1 if in progress */ uint channel_qa_channel; /* channel number of channel being evaluated */ int8 channel_qa_sample[WLC_CHANNEL_QA_NSAMP]; /* rssi samples of background * noise */ uint channel_qa_sample_num; /* count of samples in channel_qa_sample array */ /* quiet channels currently for radar sensitivity or 11h support */ chanvec_t quiet_channels; /* channels on which we cannot transmit */ /* roaming */ uint roam_metric; /* eval metric used in roam scan cb */ uint time_since_bcn; /* second count since our last beacon was seen */ uint32 tsf_h; /* tracked TSF high bits (to detect retrograde TSF) */ uint32 tsf_l; /* tracked TSF low bits (to detect retrograde TSF) */ int roam_scan_block; /* roam scan frequency mitigator */ int roam_scan_period; /* user-specified roam scan period */ uint roam_reason; /* cache so we can report w/WLC_E_ROAM event */ /* association */ struct wl_timer *assoc_timer; /* timer for auth/assoc request timeout */ uint assoc_type; /* roam or association */ uint assoc_state; uint sta_retry_time; /* time to retry on initial assoc failure */ uint16 assoc_capability; /* next (re)association request overrides */ uint16 assoc_listen; struct ether_addr assoc_bssid; uint8 *assoc_elts; uint assoc_elts_len; struct dot11_assoc_req *assoc_req; /* last (re)association request */ uint assoc_req_len; bool assoc_req_is_reassoc; /* is a reassoc */ struct dot11_assoc_resp *assoc_resp; /* last (re)association response */ uint assoc_resp_len; uint sup_type; bool sup_auth_pending; /* flag for auth timeout */ wlc_bss_list_t join_targets; uint join_targets_last; /* index of last target tried (next: --last) */ /* 802.11h Quiet Period */ struct { int duration; /* TU's */ int period; int offset; /* TU's offset from TBTT in Count field */ uint32 _state; int countdown; /* Beacons from now when quiet period will start */ uint32 start_prep_tsf; /* When to start preparing to be quiet(ie shutdown FIFOs) */ uint32 start_tsf; /* When to start being quiet */ uint32 end_tsf; /* When we can start xmiting again */ /* dual purpose: wait for offset with beacon & wait for duration */ struct wl_timer *timer; } quiet; /* 802.11h Channel Switch Announcement */ struct { uint32 secs; /* seconds until channel switch */ int8 channel; /* target channel */ } channel_sw; /* Demodulator frequency tracking */ bool freqtrack; /* Have we increased the frequency * tracking bandwidth of the * demodulator? */ uint freqtrack_starttime; /* Start time(in seconds) of the last * frequency tracking attempt */ int8 freqtrack_attempts; /* Number of times we tried to acquire * beacons by increasing the freq * tracking b/w */ int8 freqtrack_override; /* Override setting from registry */ /* scan */ struct { /* scan times are in milliseconds */ int bss_type; /* Scan for Infra, IBSS, or Any */ int ssid_len; uchar ssid[DOT11_MAX_SSID_LEN]; struct ether_addr bssid; uint8 channel_list[MAXCHANNEL]; /* list of channels to scan */ int channel_num; /* length of channel_list */ int channel_idx; /* index in channel_list of current channel we are * scanning */ uint8 channel_return; /* channel to return to when scan is done */ uint8 state; /* scan state bits */ int8 pass; /* current scan pass or scan state */ int8 nprobes; /* number of probes per channel */ uint16 home_time; /* dwell time for the home channel between channel * scans */ uint16 active_time; /* dwell time per channel for active scanning */ uint16 passive_time; /* dwell time per channel for passive scanning */ int away_limit; /* number of non-home channels to scan before * returning to home */ int away_count; /* number of non-home channels we have scanned * consecutively */ uint32 start_tsf; /* TSF read from chip at start of channel scan */ struct wl_timer *timer; /* timer for BSS scan operations */ cb_fn_t cb; /* function to call when scan is done */ void *cb_arg; /* arg to cb fn */ /* scan defaults */ struct { uint16 home_time; /* dwell time for the home channel between channel * scans */ uint16 unassoc_time; /* dwell time per channel when unassociated */ uint16 assoc_time; /* dwell time per channel when associated */ uint16 passive_time; /* dwell time per channel for passive scanning */ int8 nprobes; /* number of probes per channel */ int8 passive; /* scan type: 1 -> passive, 0 -> active */ } defaults; } scan; wlc_bss_list_t scan_results; bool ibss_allowed; /* If FALSE, all IBSS will be ignored during a scan * and the driver will not allow the creation of an IBSS network */ uint aci_start_time; /* adjacent channel interference start time */ int aci_exit_check_period; uint txpend16165war; uint dbgsel; /* maccontrol debug gpio select */ bool assocroam; /* TRUE: roam to preferred assoc band in oid * broadcast scan */ wlc_bss_list_t custom_scan_results; /* results from ioctl scan */ uint _spect_management; /* 802.11h dot11SpectrumManagementRequired value */ /* Currently, JP-variants are reported througth WLC_GET_COUNTRY_LIST if TRUE */ bool country_list_extended; uint16 AID; /* association ID */ uint16 counter; /* per-sdu monotonically increasing counter */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -