The current ANI capability information uses a different set of
values for the commands, compared to the internal command values (HAL_ANI_CMD.) My eventual aim is to make the HAL_ANI_CMD internal enum match the public API and then remove all this messiness. This now allows HAL_CAP_INTMIT users to use a public HAL_CAP_INTMIT_ enum rather than magic constants. The only magic constants currently used by if_ath are "enable" and "present". Some local tools of mine allow for direct, manual fiddling of the ANI variables and I'll convert these to use the public enum API before I commit them.
This commit is contained in:
parent
241d9a3400
commit
727edca45b
@ -668,6 +668,41 @@ typedef struct {
|
||||
uint32_t cur_seq; /* current sequence number */
|
||||
} HAL_CHANNEL_SURVEY;
|
||||
|
||||
/*
|
||||
* ANI commands.
|
||||
*
|
||||
* These are used both internally and externally via the diagnostic
|
||||
* API.
|
||||
*
|
||||
* Note that this is NOT the ANI commands being used via the INTMIT
|
||||
* capability - that has a different mapping for some reason.
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_ANI_PRESENT = 0, /* is ANI support present */
|
||||
HAL_ANI_NOISE_IMMUNITY_LEVEL = 1, /* set level */
|
||||
HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION = 2, /* enable/disable */
|
||||
HAL_ANI_CCK_WEAK_SIGNAL_THR = 3, /* enable/disable */
|
||||
HAL_ANI_FIRSTEP_LEVEL = 4, /* set level */
|
||||
HAL_ANI_SPUR_IMMUNITY_LEVEL = 5, /* set level */
|
||||
HAL_ANI_MODE = 6, /* 0 => manual, 1 => auto (XXX do not change) */
|
||||
HAL_ANI_PHYERR_RESET = 7, /* reset phy error stats */
|
||||
} HAL_ANI_CMD;
|
||||
|
||||
/*
|
||||
* This is the layout of the ANI INTMIT capability.
|
||||
*
|
||||
* Notice that the command values differ to HAL_ANI_CMD.
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_CAP_INTMIT_PRESENT = 0,
|
||||
HAL_CAP_INTMIT_ENABLE = 1,
|
||||
HAL_CAP_INTMIT_NOISE_IMMUNITY_LEVEL = 2,
|
||||
HAL_CAP_INTMIT_OFDM_WEAK_SIGNAL_LEVEL = 3,
|
||||
HAL_CAP_INTMIT_CCK_WEAK_SIGNAL_THR = 4,
|
||||
HAL_CAP_INTMIT_FIRSTEP_LEVEL = 5,
|
||||
HAL_CAP_INTMIT_SPUR_IMMUNITY_LEVEL = 6
|
||||
} HAL_CAP_INTMIT_CMD;
|
||||
|
||||
/*
|
||||
* Hardware Access Layer (HAL) API.
|
||||
*
|
||||
|
@ -418,23 +418,6 @@ extern HAL_BOOL ath_hal_setTxQProps(struct ath_hal *ah,
|
||||
extern HAL_BOOL ath_hal_getTxQProps(struct ath_hal *ah,
|
||||
HAL_TXQ_INFO *qInfo, const HAL_TX_QUEUE_INFO *qi);
|
||||
|
||||
/*
|
||||
* Internal HAL ANI commands.
|
||||
*
|
||||
* These values represent the ANI commands passed to the ANI Control method
|
||||
* for AR5212, AR5416 and later chipsets.
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_ANI_PRESENT = 0, /* is ANI support present */
|
||||
HAL_ANI_NOISE_IMMUNITY_LEVEL = 1, /* set level */
|
||||
HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION = 2, /* enable/disable */
|
||||
HAL_ANI_CCK_WEAK_SIGNAL_THR = 3, /* enable/disable */
|
||||
HAL_ANI_FIRSTEP_LEVEL = 4, /* set level */
|
||||
HAL_ANI_SPUR_IMMUNITY_LEVEL = 5, /* set level */
|
||||
HAL_ANI_MODE = 6, /* 0 => manual, 1 => auto (XXX do not change) */
|
||||
HAL_ANI_PHYERR_RESET = 7, /* reset phy error stats */
|
||||
} HAL_ANI_CMD;
|
||||
|
||||
#define HAL_SPUR_VAL_MASK 0x3FFF
|
||||
#define HAL_SPUR_CHAN_WIDTH 87
|
||||
#define HAL_BIN_WIDTH_BASE_100HZ 3125
|
||||
|
@ -880,16 +880,16 @@ ar5212GetCapability(struct ath_hal *ah, HAL_CAPABILITY_TYPE type,
|
||||
return HAL_OK;
|
||||
case HAL_CAP_INTMIT: /* interference mitigation */
|
||||
switch (capability) {
|
||||
case 0: /* hardware capability */
|
||||
case HAL_CAP_INTMIT_PRESENT: /* hardware capability */
|
||||
return HAL_OK;
|
||||
case 1:
|
||||
case HAL_CAP_INTMIT_ENABLE:
|
||||
return (ahp->ah_procPhyErr & HAL_ANI_ENA) ?
|
||||
HAL_OK : HAL_ENXIO;
|
||||
case 2: /* HAL_ANI_NOISE_IMMUNITY_LEVEL */
|
||||
case 3: /* HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION */
|
||||
case 4: /* HAL_ANI_CCK_WEAK_SIGNAL_THR */
|
||||
case 5: /* HAL_ANI_FIRSTEP_LEVEL */
|
||||
case 6: /* HAL_ANI_SPUR_IMMUNITY_LEVEL */
|
||||
case HAL_CAP_INTMIT_NOISE_IMMUNITY_LEVEL:
|
||||
case HAL_CAP_INTMIT_OFDM_WEAK_SIGNAL_LEVEL:
|
||||
case HAL_CAP_INTMIT_CCK_WEAK_SIGNAL_THR:
|
||||
case HAL_CAP_INTMIT_FIRSTEP_LEVEL:
|
||||
case HAL_CAP_INTMIT_SPUR_IMMUNITY_LEVEL:
|
||||
ani = ar5212AniGetCurrentState(ah);
|
||||
if (ani == AH_NULL)
|
||||
return HAL_ENXIO;
|
||||
@ -980,6 +980,8 @@ ar5212SetCapability(struct ath_hal *ah, HAL_CAPABILITY_TYPE type,
|
||||
OS_REG_WRITE(ah, AR_TPC, ahp->ah_macTPC);
|
||||
return AH_TRUE;
|
||||
case HAL_CAP_INTMIT: { /* interference mitigation */
|
||||
/* This maps the public ANI commands to the internal ANI commands */
|
||||
/* Private: HAL_ANI_CMD; Public: HAL_CAP_INTMIT_CMD */
|
||||
static const HAL_ANI_CMD cmds[] = {
|
||||
HAL_ANI_PRESENT,
|
||||
HAL_ANI_MODE,
|
||||
|
@ -634,11 +634,11 @@ void ath_intr(void *);
|
||||
#define ath_hal_settpcts(_ah, _tpcts) \
|
||||
ath_hal_setcapability(_ah, HAL_CAP_TPC_CTS, 0, _tpcts, NULL)
|
||||
#define ath_hal_hasintmit(_ah) \
|
||||
(ath_hal_getcapability(_ah, HAL_CAP_INTMIT, 0, NULL) == HAL_OK)
|
||||
(ath_hal_getcapability(_ah, HAL_CAP_INTMIT, HAL_CAP_INTMIT_PRESENT, NULL) == HAL_OK)
|
||||
#define ath_hal_getintmit(_ah) \
|
||||
(ath_hal_getcapability(_ah, HAL_CAP_INTMIT, 1, NULL) == HAL_OK)
|
||||
(ath_hal_getcapability(_ah, HAL_CAP_INTMIT, HAL_CAP_INTMIT_ENABLE, NULL) == HAL_OK)
|
||||
#define ath_hal_setintmit(_ah, _v) \
|
||||
ath_hal_setcapability(_ah, HAL_CAP_INTMIT, 1, _v, NULL)
|
||||
ath_hal_setcapability(_ah, HAL_CAP_INTMIT, HAL_CAP_INTMIT_ENABLE, _v, NULL)
|
||||
#define ath_hal_getchannoise(_ah, _c) \
|
||||
((*(_ah)->ah_getChanNoise)((_ah), (_c)))
|
||||
#define ath_hal_getrxchainmask(_ah, _prxchainmask) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user