📄 ar5212.h.svn-base
字号:
u_int ah_slottime; /* user-specified slot time */ u_int ah_acktimeout; /* user-specified ack timeout */ u_int ah_ctstimeout; /* user-specified cts timeout */ u_int ah_sifstime; /* user-specified sifs time */ /* * RF Silent handling; setup according to the EEPROM. */ uint32_t ah_gpioSelect; /* GPIO pin to use */ uint32_t ah_polarity; /* polarity to disable RF */ uint32_t ah_gpioBit; /* after init, prev value */ /* * ANI support. */ uint32_t ah_procPhyErr; /* Process Phy errs */ HAL_BOOL ah_hasHwPhyCounters; /* Hardware has phy counters */ struct ar5212AniParams ah_aniParams24; /* 2.4GHz parameters */ struct ar5212AniParams ah_aniParams5; /* 5GHz parameters */ struct ar5212AniState *ah_curani; /* cached last reference */ struct ar5212AniState ah_ani[64]; /* per-channel state */ /* * Transmit power state. Note these are maintained * here so they can be retrieved by diagnostic tools. */ uint16_t *ah_pcdacTable; u_int ah_pcdacTableSize; uint16_t ah_ratesArray[16];};#define AH5212(_ah) ((struct ath_hal_5212 *)(_ah))/* * IS_XXXX macros test the MAC version * IS_RADXXX macros test the radio/RF version (matching both 2G-only and 2/5G) * * Some single chip radios have equivalent radio/RF (e.g. 5112) * for those use IS_RADXXX_ANY macros. */#define IS_2317(ah) \ ((AH_PRIVATE(ah)->ah_devid == AR5212_AR2317_REV1) || \ (AH_PRIVATE(ah)->ah_devid == AR5212_AR2317_REV2))#define IS_2316(ah) \ (AH_PRIVATE(ah)->ah_macVersion == AR_SREV_2415)#define IS_2413(ah) \ (AH_PRIVATE(ah)->ah_macVersion == AR_SREV_2413 || IS_2316(ah))#define IS_5424(ah) \ (AH_PRIVATE(ah)->ah_macVersion == AR_SREV_5424 || \ (AH_PRIVATE(ah)->ah_macVersion == AR_SREV_5413 && \ AH_PRIVATE(ah)->ah_macRev <= AR_SREV_D2PLUS_MS))#define IS_5413(ah) \ (AH_PRIVATE(ah)->ah_macVersion == AR_SREV_5413 || IS_5424(ah))#define IS_2425(ah) \ (AH_PRIVATE(ah)->ah_macVersion == AR_SREV_2425)#define IS_2417(ah) \ ((AH_PRIVATE(ah)->ah_macVersion) == AR_SREV_2417)#define IS_HB63(ah) (AH5212(ah)->ah_isHb63 == AH_TRUE)#define IS_PCIE(ah) (IS_5424(ah) || IS_2425(ah))#define AH_RADIO_MAJOR(ah) \ (AH_PRIVATE(ah)->ah_analog5GhzRev & AR_RADIO_SREV_MAJOR)#define AH_RADIO_MINOR(ah) \ (AH_PRIVATE(ah)->ah_analog5GhzRev & AR_RADIO_SREV_MINOR)#define IS_RAD5111(ah) \ (AH_RADIO_MAJOR(ah) == AR_RAD5111_SREV_MAJOR || \ AH_RADIO_MAJOR(ah) == AR_RAD2111_SREV_MAJOR)#define IS_RAD5112(ah) \ (AH_RADIO_MAJOR(ah) == AR_RAD5112_SREV_MAJOR || \ AH_RADIO_MAJOR(ah) == AR_RAD2112_SREV_MAJOR)/* NB: does not include 5413 as Atheros' IS_5112 macro does */#define IS_RAD5112_ANY(ah) \ (AR_RAD5112_SREV_MAJOR <= AH_RADIO_MAJOR(ah) && \ AH_RADIO_MAJOR(ah) <= AR_RAD2413_SREV_MAJOR)#define IS_RAD5112_REV1(ah) \ (IS_RAD5112(ah) && \ AH_RADIO_MINOR(ah) < (AR_RAD5112_SREV_2_0 & AR_RADIO_SREV_MINOR))#define IS_RADX112_REV2(ah) \ (AH_PRIVATE(ah)->ah_analog5GhzRev == AR_RAD5112_SREV_2_0 || \ AH_PRIVATE(ah)->ah_analog5GhzRev == AR_RAD2112_SREV_2_0 || \ AH_PRIVATE(ah)->ah_analog5GhzRev == AR_RAD2112_SREV_2_1 || \ AH_PRIVATE(ah)->ah_analog5GhzRev == AR_RAD5112_SREV_2_1)#define ar5212RfDetach(ah) do { \ if (AH5212(ah)->ah_rfHal != AH_NULL) \ AH5212(ah)->ah_rfHal->rfDetach(ah); \} while (0)#define ar5212GetRfBank(ah, b) \ AH5212(ah)->ah_rfHal->getRfBank(ah, b)/* * Hack macros for Nala/San: 11b is handled * using 11g; flip the channel flags to accomplish this. */#define SAVE_CCK(_ah, _chan, _flag) do { \ if ((IS_2425(_ah) || IS_2417(_ah)) && \ (((_chan)->channelFlags) & CHANNEL_CCK)) { \ (_chan)->channelFlags &= ~CHANNEL_CCK; \ (_chan)->channelFlags |= CHANNEL_OFDM; \ (_flag) = AH_TRUE; \ } \} while (0)#define RESTORE_CCK(_ah, _chan, _flag) do { \ if ((IS_2425(_ah) || IS_2417(_ah)) && (_flag) == AH_TRUE) {\ (_chan)->channelFlags &= ~CHANNEL_OFDM; \ (_chan)->channelFlags |= CHANNEL_CCK; \ } \} while (0)struct ath_hal;extern uint32_t ar5212GetRadioRev(struct ath_hal *ah);extern void ar5212InitState(struct ath_hal_5212 *, uint16_t devid, HAL_SOFTC, HAL_BUS_TAG st, HAL_BUS_HANDLE sh, HAL_STATUS *status);extern void ar5212Detach(struct ath_hal *ah);extern HAL_BOOL ar5212ChipTest(struct ath_hal *ah);extern HAL_BOOL ar5212GetChannelEdges(struct ath_hal *ah, uint16_t flags, uint16_t *low, uint16_t *high);extern HAL_BOOL ar5212FillCapabilityInfo(struct ath_hal *ah);extern void ar5212SetBeaconTimers(struct ath_hal *ah, const HAL_BEACON_TIMERS *);extern void ar5212BeaconInit(struct ath_hal *ah, uint32_t next_beacon, uint32_t beacon_period);extern void ar5212ResetStaBeaconTimers(struct ath_hal *ah);extern void ar5212SetStaBeaconTimers(struct ath_hal *ah, const HAL_BEACON_STATE *);extern HAL_BOOL ar5212IsInterruptPending(struct ath_hal *ah);extern HAL_BOOL ar5212GetPendingInterrupts(struct ath_hal *ah, HAL_INT *);extern HAL_INT ar5212GetInterrupts(struct ath_hal *ah);extern HAL_INT ar5212SetInterrupts(struct ath_hal *ah, HAL_INT ints);extern uint32_t ar5212GetKeyCacheSize(struct ath_hal *);extern HAL_BOOL ar5212IsKeyCacheEntryValid(struct ath_hal *, uint16_t entry);extern HAL_BOOL ar5212ResetKeyCacheEntry(struct ath_hal *ah, uint16_t entry);extern HAL_BOOL ar5212SetKeyCacheEntryMac(struct ath_hal *, uint16_t entry, const uint8_t *mac);extern HAL_BOOL ar5212SetKeyCacheEntry(struct ath_hal *ah, uint16_t entry, const HAL_KEYVAL *k, const uint8_t *mac, int xorKey);extern void ar5212GetMacAddress(struct ath_hal *ah, uint8_t *mac);extern HAL_BOOL ar5212SetMacAddress(struct ath_hal *ah, const uint8_t *);extern void ar5212GetBssIdMask(struct ath_hal *ah, uint8_t *mac);extern HAL_BOOL ar5212SetBssIdMask(struct ath_hal *, const uint8_t *);extern HAL_BOOL ar5212EepromRead(struct ath_hal *, u_int off, uint16_t *data);extern HAL_BOOL ar5212EepromWrite(struct ath_hal *, u_int off, uint16_t data);extern HAL_BOOL ar5212SetRegulatoryDomain(struct ath_hal *ah, uint16_t regDomain, HAL_STATUS *stats);extern u_int ar5212GetWirelessModes(struct ath_hal *ah);extern void ar5212EnableRfKill(struct ath_hal *);extern HAL_BOOL ar5212GpioCfgOutput(struct ath_hal *, uint32_t gpio);extern HAL_BOOL ar5212GpioCfgInput(struct ath_hal *, uint32_t gpio);extern HAL_BOOL ar5212GpioSet(struct ath_hal *, uint32_t gpio, uint32_t val);extern uint32_t ar5212GpioGet(struct ath_hal *ah, uint32_t gpio);extern void ar5212GpioSetIntr(struct ath_hal *ah, u_int, uint32_t ilevel);extern void ar5212SetLedState(struct ath_hal *ah, HAL_LED_STATE state);extern void ar5212WriteAssocid(struct ath_hal *ah, const uint8_t *bssid, uint16_t assocId);extern uint32_t ar5212GetTsf32(struct ath_hal *ah);extern uint64_t ar5212GetTsf64(struct ath_hal *ah);extern void ar5212ResetTsf(struct ath_hal *ah);extern void ar5212SetBasicRate(struct ath_hal *ah, HAL_RATE_SET *pSet);extern uint32_t ar5212GetRandomSeed(struct ath_hal *ah);extern HAL_BOOL ar5212DetectCardPresent(struct ath_hal *ah);extern void ar5212EnableMibCounters(struct ath_hal *);extern void ar5212DisableMibCounters(struct ath_hal *);extern void ar5212UpdateMibCounters(struct ath_hal *ah, HAL_MIB_STATS* stats);extern HAL_BOOL ar5212IsJapanChannelSpreadSupported(struct ath_hal *ah);extern uint32_t ar5212GetCurRssi(struct ath_hal *ah);extern u_int ar5212GetDefAntenna(struct ath_hal *ah);extern void ar5212SetDefAntenna(struct ath_hal *ah, u_int antenna);extern HAL_ANT_SETTING ar5212GetAntennaSwitch(struct ath_hal *);extern HAL_BOOL ar5212SetAntennaSwitch(struct ath_hal *, HAL_ANT_SETTING);extern HAL_BOOL ar5212IsSleepAfterBeaconBroken(struct ath_hal *ah);extern HAL_BOOL ar5212SetSifsTime(struct ath_hal *, u_int);extern u_int ar5212GetSifsTime(struct ath_hal *);extern HAL_BOOL ar5212SetSlotTime(struct ath_hal *, u_int);extern u_int ar5212GetSlotTime(struct ath_hal *);extern HAL_BOOL ar5212SetAckTimeout(struct ath_hal *, u_int);extern u_int ar5212GetAckTimeout(struct ath_hal *);extern HAL_BOOL ar5212SetAckCTSRate(struct ath_hal *, u_int);extern u_int ar5212GetAckCTSRate(struct ath_hal *);extern HAL_BOOL ar5212SetCTSTimeout(struct ath_hal *, u_int);extern u_int ar5212GetCTSTimeout(struct ath_hal *);extern HAL_BOOL ar5212SetDecompMask(struct ath_hal *, uint16_t, int);void ar5212SetCoverageClass(struct ath_hal *, uint8_t, int);extern void ar5212SetPCUConfig(struct ath_hal *);extern HAL_BOOL ar5212Use32KHzclock(struct ath_hal *ah, HAL_OPMODE opmode);extern void ar5212SetupClock(struct ath_hal *ah, HAL_OPMODE opmode);extern void ar5212RestoreClock(struct ath_hal *ah, HAL_OPMODE opmode);extern int16_t ar5212GetNfAdjust(struct ath_hal *, const HAL_CHANNEL_INTERNAL *);extern void ar5212SetCompRegs(struct ath_hal *ah);extern HAL_STATUS ar5212GetCapability(struct ath_hal *, HAL_CAPABILITY_TYPE, uint32_t, uint32_t *);extern HAL_BOOL ar5212SetCapability(struct ath_hal *, HAL_CAPABILITY_TYPE, uint32_t, uint32_t, HAL_STATUS *);extern HAL_BOOL ar5212GetDiagState(struct ath_hal *ah, int request, const void *args, uint32_t argsize, void **result, uint32_t *resultsize);extern HAL_BOOL ar5212SetPowerMode(struct ath_hal *ah, HAL_POWER_MODE mode, int setChip);extern HAL_POWER_MODE ar5212GetPowerMode(struct ath_hal *ah);extern HAL_BOOL ar5212GetPowerStatus(struct ath_hal *ah);extern uint32_t ar5212GetRxDP(struct ath_hal *ath);extern void ar5212SetRxDP(struct ath_hal *ah, uint32_t rxdp);extern void ar5212EnableReceive(struct ath_hal *ah);extern HAL_BOOL ar5212StopDmaReceive(struct ath_hal *ah);extern void ar5212StartPcuReceive(struct ath_hal *ah);extern void ar5212StopPcuReceive(struct ath_hal *ah);extern void ar5212SetMulticastFilter(struct ath_hal *ah, uint32_t filter0, uint32_t filter1);extern HAL_BOOL ar5212ClrMulticastFilterIndex(struct ath_hal *, uint32_t ix);extern HAL_BOOL ar5212SetMulticastFilterIndex(struct ath_hal *, uint32_t ix);extern uint32_t ar5212GetRxFilter(struct ath_hal *ah);extern void ar5212SetRxFilter(struct ath_hal *ah, uint32_t bits);extern HAL_BOOL ar5212SetupRxDesc(struct ath_hal *, struct ath_desc *, uint32_t size, u_int flags);extern HAL_STATUS ar5212ProcRxDesc(struct ath_hal *ah, struct ath_desc *, uint32_t, struct ath_desc *, uint64_t, struct ath_rx_status *);extern HAL_BOOL ar5212Reset(struct ath_hal *ah, HAL_OPMODE opmode, HAL_CHANNEL *chan, HAL_BOOL bChannelChange, HAL_STATUS *status);extern HAL_BOOL ar5212SetChannel(struct ath_hal *, HAL_CHANNEL_INTERNAL *);extern void ar5212SetOperatingMode(struct ath_hal *ah, int opmode);extern HAL_BOOL ar5212PhyDisable(struct ath_hal *ah);extern HAL_BOOL ar5212Disable(struct ath_hal *ah);extern HAL_BOOL ar5212ChipReset(struct ath_hal *ah, HAL_CHANNEL *);extern HAL_BOOL ar5212PerCalibration(struct ath_hal *ah, HAL_CHANNEL *chan, HAL_BOOL *isIQdone);extern HAL_BOOL ar5212PerCalibrationN(struct ath_hal *ah, HAL_CHANNEL *chan, u_int chainMask, HAL_BOOL longCal, HAL_BOOL *isCalDone);extern HAL_BOOL ar5212ResetCalValid(struct ath_hal *ah, HAL_CHANNEL *chan);extern int16_t ar5212GetNoiseFloor(struct ath_hal *ah);extern void ar5212InitNfCalHistBuffer(struct ath_hal *);extern int16_t ar5212GetNfHistMid(const int16_t calData[]);extern void ar5212SetSpurMitigation(struct ath_hal *, HAL_CHANNEL_INTERNAL *);extern HAL_BOOL ar5212SetAntennaSwitchInternal(struct ath_hal *ah, HAL_ANT_SETTING settings, const HAL_CHANNEL_INTERNAL *ichan);extern HAL_BOOL ar5212SetTxPowerLimit(struct ath_hal *ah, uint32_t limit);extern HAL_BOOL ar5212GetChipPowerLimits(struct ath_hal *ah, HAL_CHANNEL *chans, uint32_t nchans);extern void ar5212InitializeGainValues(struct ath_hal *);extern HAL_RFGAIN ar5212GetRfgain(struct ath_hal *ah);extern void ar5212RequestRfgain(struct ath_hal *);extern HAL_BOOL ar5212UpdateTxTrigLevel(struct ath_hal *, HAL_BOOL IncTrigLevel);extern HAL_BOOL ar5212SetTxQueueProps(struct ath_hal *ah, int q, const HAL_TXQ_INFO *qInfo);extern HAL_BOOL ar5212GetTxQueueProps(struct ath_hal *ah, int q, HAL_TXQ_INFO *qInfo);extern int ar5212SetupTxQueue(struct ath_hal *ah, HAL_TX_QUEUE type, const HAL_TXQ_INFO *qInfo);extern HAL_BOOL ar5212ReleaseTxQueue(struct ath_hal *ah, u_int q);extern HAL_BOOL ar5212ResetTxQueue(struct ath_hal *ah, u_int q);extern uint32_t ar5212GetTxDP(struct ath_hal *ah, u_int q);extern HAL_BOOL ar5212SetTxDP(struct ath_hal *ah, u_int q, uint32_t txdp);extern HAL_BOOL ar5212StartTxDma(struct ath_hal *ah, u_int q);extern uint32_t ar5212NumTxPending(struct ath_hal *ah, u_int q);extern HAL_BOOL ar5212StopTxDma(struct ath_hal *ah, u_int q);extern HAL_BOOL ar5212SetupTxDesc(struct ath_hal *ah, struct ath_desc *ds, u_int pktLen, u_int hdrLen, HAL_PKT_TYPE type, u_int txPower, u_int txRate0, u_int txTries0, u_int keyIx, u_int antMode, u_int flags, u_int rtsctsRate, u_int rtsctsDuration, u_int compicvLen, u_int compivLen, u_int comp);extern HAL_BOOL ar5212SetupXTxDesc(struct ath_hal *, struct ath_desc *, u_int txRate1, u_int txRetries1, u_int txRate2, u_int txRetries2, u_int txRate3, u_int txRetries3);extern HAL_BOOL ar5212FillTxDesc(struct ath_hal *ah, struct ath_desc *ds, u_int segLen, HAL_BOOL firstSeg, HAL_BOOL lastSeg, const struct ath_desc *ds0);extern HAL_STATUS ar5212ProcTxDesc(struct ath_hal *ah, struct ath_desc *, struct ath_tx_status *);extern void ar5212GetTxIntrQueue(struct ath_hal *ah, uint32_t *);extern void ar5212IntrReqTxDesc(struct ath_hal *ah, struct ath_desc *);extern const HAL_RATE_TABLE *ar5212GetRateTable(struct ath_hal *, u_int mode);extern void ar5212AniAttach(struct ath_hal *, const struct ar5212AniParams *, const struct ar5212AniParams *, HAL_BOOL ena);extern void ar5212AniDetach(struct ath_hal *);extern struct ar5212AniState *ar5212AniGetCurrentState(struct ath_hal *);extern struct ar5212Stats *ar5212AniGetCurrentStats(struct ath_hal *);extern HAL_BOOL ar5212AniControl(struct ath_hal *, HAL_ANI_CMD cmd, int param);extern HAL_BOOL ar5212AniSetParams(struct ath_hal *, const struct ar5212AniParams *, const struct ar5212AniParams *);struct ath_rx_status;extern void ar5212AniPhyErrReport(struct ath_hal *ah, const struct ath_rx_status *rs);extern void ar5212ProcessMibIntr(struct ath_hal *, const HAL_NODE_STATS *);extern void ar5212AniPoll(struct ath_hal *, const HAL_NODE_STATS *, HAL_CHANNEL *);extern void ar5212AniReset(struct ath_hal *, HAL_CHANNEL_INTERNAL *, HAL_OPMODE, int);#endif /* _ATH_AR5212_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -