41#define MWL_MBSS_SUPPORT
49#define MWL_NUM_EDCA_QUEUES 4
50#define MWL_NUM_HCCA_QUEUES 0
51#define MWL_NUM_BA_QUEUES 0
52#define MWL_NUM_MGMT_QUEUES 0
53#define MWL_NUM_ACK_QUEUES 0
54#define MWL_NUM_TX_QUEUES \
55 (MWL_NUM_EDCA_QUEUES + MWL_NUM_HCCA_QUEUES + MWL_NUM_BA_QUEUES + \
56 MWL_NUM_MGMT_QUEUES + MWL_NUM_ACK_QUEUES)
57#define MWL_MAX_RXWCB_QUEUES 1
59#define MWL_MAX_SUPPORTED_RATES 12
60#define MWL_MAX_SUPPORTED_MCS 32
83 bus_space_handle_t ioh, bus_space_tag_t iot, bus_dma_tag_t tag);
99 const uint8_t
mac[6]);
117 uint8_t targetPowers[4];
118#define MWL_HAL_MAXCHAN 40
130#define MACREG_REG_A2H_INTERRUPT_CAUSE 0x00000C30
131#define MACREG_REG_INT_CODE 0x00000C14
136 if (cause == 0xffffffff) {
138 }
else if (cause != 0) {
147#undef MACREG_REG_INT_CODE
148#undef MACREG_REG_A2H_INTERRUPT_CAUSE
161#define MACREG_REG_H2A_INTERRUPT_EVENTS 0x00000C18
162#define MACREG_H2ARIC_BIT_PPA_READY 0x00000001
163#define MACREG_REG_INT_CODE 0x00000C14
168#undef MACREG_REG_INT_CODE
169#undef MACREG_H2ARIC_BIT_PPA_READY
170#undef MACREG_REG_H2A_INTERRUPT_EVENTS
177#define MWL_FREQ_BAND_2DOT4GHZ 0x1
178#define MWL_FREQ_BAND_5GHZ 0x4
180#define MWL_CH_10_MHz_WIDTH 0x1
181#define MWL_CH_20_MHz_WIDTH 0x2
182#define MWL_CH_40_MHz_WIDTH 0x4
184#define MWL_EXT_CH_NONE 0x0
185#define MWL_EXT_CH_ABOVE_CTRL_CH 0x1
186#define MWL_EXT_CH_BELOW_CTRL_CH 0x3
407#define MWL_HAL_MCAST_MAX 32
416#define KEY_TYPE_ID_WEP 0
417#define KEY_TYPE_ID_TKIP 1
418#define KEY_TYPE_ID_AES 2
420#define KEY_FLAG_INUSE 0x00000001
421#define KEY_FLAG_RXGROUPKEY 0x00000002
422#define KEY_FLAG_TXGROUPKEY 0x00000004
423#define KEY_FLAG_PAIRWISE 0x00000008
424#define KEY_FLAG_RXONLY 0x00000010
425#define KEY_FLAG_AUTHENTICATOR 0x00000020
426#define KEY_FLAG_TSC_VALID 0x00000040
427#define KEY_FLAG_WEP_TXKEY 0x01000000
428#define KEY_FLAG_MICKEY_VALID 0x02000000
436 uint8_t keyMaterial[16];
456 const uint8_t mac[6]);
463 const uint8_t mac[6]);
512 int ba_type,
const uint8_t Macaddr[6], uint8_t Tid,
513 uint8_t ParamInfo,
void *,
void *);
516 int BarThrs,
int WindowSize, uint16_t seqno);
520 const uint8_t Macaddr[6], uint16_t *pseqno);
556 uint16_t aid, uint16_t sid,
const MWL_HAL_PEERINFO *,
557 int isQosSta,
int wmeInfo);
610 uint32_t CWmin, uint32_t CWmax, uint8_t AIFSN, uint16_t TXOPLimit);
652 uint8_t enable, uint8_t mode);
686 const void *args, uint32_t argsize,
687 void **result, uint32_t *resultsize);
int mwl_hal_setedcaparams(struct mwl_hal *mh, uint8_t qnum, uint32_t CWmin, uint32_t CWmax, uint8_t AIFSN, uint16_t TXOPLimit)
#define MACREG_REG_H2A_INTERRUPT_EVENTS
int mwl_hal_gethwstats(struct mwl_hal *mh, struct mwl_hal_hwstats *)
int mwl_hal_keyset(struct mwl_hal_vap *, const MWL_HAL_KEYVAL *kv, const uint8_t mac[6])
int mwl_hal_adjusttxpower(struct mwl_hal *, uint32_t powerLevel)
int mwl_hal_setradardetection(struct mwl_hal *mh, MWL_HAL_RADAR action)
int mwl_hal_setwmm(struct mwl_hal *mh, int onoff)
int mwl_hal_newstation(struct mwl_hal_vap *, const uint8_t addr[6], uint16_t aid, uint16_t sid, const MWL_HAL_PEERINFO *, int isQosSta, int wmeInfo)
int mwl_hal_getaggampduratemode(struct mwl_hal *, int *mode, int *thresh)
int mwl_hal_settxrate_auto(struct mwl_hal *, const MWL_HAL_TXRATE *rate)
int mwl_hal_setassocid(struct mwl_hal_vap *, const uint8_t bssId[6], uint16_t assocId)
int mwl_hal_setinframode(struct mwl_hal_vap *)
int mwl_hal_stop(struct mwl_hal_vap *)
int mwl_hal_setchannel(struct mwl_hal *mh, const MWL_HAL_CHANNEL *c)
int mwl_hal_setaggampduratemode(struct mwl_hal *, int mode, int thresh)
int mwl_hal_setmimops(struct mwl_hal *mh, const uint8_t addr[6], uint8_t enable, uint8_t mode)
@ DR_CHK_CHANNEL_AVAILABLE_START
@ DR_IN_SERVICE_MONITOR_START
@ DR_CHK_CHANNEL_AVAILABLE_STOP
int mwl_hal_setnprot(struct mwl_hal_vap *, MWL_HAL_HTPROTECT mode)
int mwl_hal_getpromisc(struct mwl_hal *)
int mwl_hal_setapmode(struct mwl_hal_vap *, MWL_HAL_APMODE)
#define MACREG_REG_INT_CODE
int mwl_hal_setradio(struct mwl_hal *mh, int onoff, MWL_HAL_PREAMBLE preamble)
int mwl_hal_setchannelswitchie(struct mwl_hal *, const MWL_HAL_CHANNEL *nextchan, uint32_t mode, uint32_t count)
void mwl_hal_cmddone(struct mwl_hal *mh)
int mwl_hal_sethtgi(struct mwl_hal_vap *, int GIType)
int mwl_hal_setnprotmode(struct mwl_hal_vap *, uint8_t mode)
int mwl_hal_getregioncode(struct mwl_hal *mh, uint8_t *countryCode)
int mwl_hal_settxpower(struct mwl_hal *, const MWL_HAL_CHANNEL *, uint8_t maxtxpow)
static __inline void mwl_hal_txstart(struct mwl_hal *mh, int qnum)
int mwl_hal_setrateadaptmode(struct mwl_hal *mh, uint16_t mode)
int mwl_hal_start(struct mwl_hal_vap *)
int mwl_hal_setpromisc(struct mwl_hal *, int ena)
void mwl_hal_setdebug(struct mwl_hal *, int)
int mwl_hal_setcfend(struct mwl_hal *, int ena)
int mwl_hal_setmac(struct mwl_hal_vap *, const uint8_t addr[6])
void mwl_hal_detach(struct mwl_hal *)
int mwl_hal_GetBeacon(struct mwl_hal *mh, uint8_t *pBcn, uint16_t *pLen)
int mwl_hal_setpowersave_bss(struct mwl_hal_vap *, uint8_t nsta)
int mwl_hal_bastream_destroy(struct mwl_hal *mh, const MWL_HAL_BASTREAM *)
int mwl_hal_setdwds(struct mwl_hal *, int ena)
#define MWL_NUM_ACK_QUEUES
static __inline void mwl_hal_getisr(struct mwl_hal *mh, uint32_t *status)
int mwl_hal_updatetim(struct mwl_hal_vap *, uint16_t aid, int set)
int mwl_hal_getwatchdogbitmap(struct mwl_hal *mh, uint8_t bitmap[1])
int mwl_hal_SetRifs(struct mwl_hal *mh, uint8_t QNum)
int mwl_hal_sethwdma(struct mwl_hal *mh, const struct mwl_hal_txrxdma *)
int mwl_hal_keyreset(struct mwl_hal_vap *, const MWL_HAL_KEYVAL *kv, const uint8_t mac[6])
int mwl_hal_gethwspecs(struct mwl_hal *mh, struct mwl_hal_hwspec *)
int mwl_hal_settxrate(struct mwl_hal_vap *, MWL_HAL_TXRATE_HANDLING handling, const MWL_HAL_TXRATE *rate)
int mwl_hal_setgprot(struct mwl_hal *, int)
#define MACREG_H2ARIC_BIT_PPA_READY
int mwl_hal_fwload(struct mwl_hal *mh, void *fwargs)
#define MACREG_REG_A2H_INTERRUPT_CAUSE
int mwl_hal_setcsmode(struct mwl_hal *mh, MWL_HAL_CSMODE csmode)
void mwl_hal_delvap(struct mwl_hal_vap *)
int mwl_hal_setoptimizationlevel(struct mwl_hal *mh, int onoff)
int mwl_hal_setregioncode(struct mwl_hal *mh, int regionCode)
#define MWL_NUM_TX_QUEUES
int mwl_hal_setpowersave_sta(struct mwl_hal_vap *, uint16_t aid, int ena)
int mwl_hal_delstation(struct mwl_hal_vap *, const uint8_t addr[6])
int mwl_hal_bastream_get_seqno(struct mwl_hal *mh, const MWL_HAL_BASTREAM *, const uint8_t Macaddr[6], uint16_t *pseqno)
struct mwl_hal * mwl_hal_attach(device_t dev, uint16_t devid, bus_space_handle_t ioh, bus_space_tag_t iot, bus_dma_tag_t tag)
const MWL_HAL_BASTREAM * mwl_hal_bastream_alloc(struct mwl_hal_vap *, int ba_type, const uint8_t Macaddr[6], uint8_t Tid, uint8_t ParamInfo, void *, void *)
int mwl_hal_setkeepalive(struct mwl_hal *mh)
int mwl_hal_setrtsthreshold(struct mwl_hal_vap *, int threshold)
int mwl_hal_getchannelinfo(struct mwl_hal *, int band, int chw, const MWL_HAL_CHANNELINFO **)
void mwl_hal_setbastreams(struct mwl_hal *mh, int mask)
int mwl_hal_getdiagstate(struct mwl_hal *mh, int request, const void *args, uint32_t argsize, void **result, uint32_t *resultsize)
int mwl_hal_getbastreams(struct mwl_hal *mh)
int mwl_hal_getdebug(struct mwl_hal *)
const MWL_HAL_BASTREAM * mwl_hal_bastream_lookup(struct mwl_hal *mh, int s)
int mwl_hal_setbeacon(struct mwl_hal_vap *, const void *, size_t)
int mwl_hal_setantenna(struct mwl_hal *mh, MWL_HAL_ANTENNA dirSet, int ant)
struct mwl_hal_vap * mwl_hal_newvap(struct mwl_hal *, MWL_HAL_BSSTYPE, const uint8_t mac[6])
int mwl_hal_ismbsscapable(struct mwl_hal *)
int mwl_hal_setslottime(struct mwl_hal *mh, int usecs)
int mwl_hal_bastream_create(struct mwl_hal_vap *, const MWL_HAL_BASTREAM *, int BarThrs, int WindowSize, uint16_t seqno)
int mwl_hal_setmcast(struct mwl_hal *mh, int nmc, const uint8_t macs[])
void mwl_hal_intrset(struct mwl_hal *mh, uint32_t mask)
MWL_HAL_CHANNEL_FLAGS channelFlags
uint16_t HTCapabilitiesInfo
uint32_t LegacyRateBitMap
uint32_t wcbBase[MWL_NUM_TX_QUEUES - MWL_NUM_ACK_QUEUES]
uint32_t RxDuplicateFrames
uint32_t TxRetrySuccesses
uint32_t RxExcludedFrames
uint32_t TxMultipleRetrySuccesses
uint32_t TxWatchDogTimeouts
uint32_t RxUndecryptableFrames
uint32_t wcbBase[MWL_NUM_TX_QUEUES - MWL_NUM_ACK_QUEUES]
uint8_t mac[IEEE80211_ADDR_LEN]
bus_space_handle_t mh_ioh