summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2015-04-06 01:12:53 +0000
committeradrian <adrian@FreeBSD.org>2015-04-06 01:12:53 +0000
commit7d9eb96d82563bc7585cc7517fd398522c292be4 (patch)
treeeeb7fc5b4e5050a091279ddc1add62845cf520e1
parent14961d3fbe72581891ed87bd026dc19c391b6e96 (diff)
downloadFreeBSD-src-7d9eb96d82563bc7585cc7517fd398522c292be4.zip
FreeBSD-src-7d9eb96d82563bc7585cc7517fd398522c292be4.tar.gz
Return the correct HAL data type for HAL_DIAG_ANI_STATS.
I .. stupidly added code to return HAL_ANI_STATS to HAL_DIAG_ANI_STATS. I discovered this in a noisy environment when the returned values were enough to .. well, make everything terrible. So - restore functionality. Tested: * AR5416 (uses the AR5212 HAL), in a /very/ noisy 2GHz environment. Enough to trigger ANI to get upset and generate useful data.
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212.h4
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212_misc.c26
2 files changed, 10 insertions, 20 deletions
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212.h b/sys/dev/ath/ath_hal/ar5212/ar5212.h
index 2622efd..938a68c 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212.h
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212.h
@@ -345,7 +345,9 @@ struct ath_hal_5212 {
uint32_t ah_txBusy;
uint32_t ah_rx_chainmask;
uint32_t ah_tx_chainmask;
- HAL_ANI_STATE ext_ani_state;
+
+ /* Used to return ANI statistics to the diagnostic API */
+ HAL_ANI_STATS ext_ani_stats;
};
#define AH5212(_ah) ((struct ath_hal_5212 *)(_ah))
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c b/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
index 098a14c..e2f1eb7 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
@@ -1052,7 +1052,7 @@ ar5212GetDiagState(struct ath_hal *ah, int request,
void **result, uint32_t *resultsize)
{
struct ath_hal_5212 *ahp = AH5212(ah);
- struct ar5212AniState *astate;
+ HAL_ANI_STATS *astats;
(void) ahp;
if (ath_hal_getdiagstate(ah, request, args, argsize, result, resultsize))
@@ -1084,27 +1084,15 @@ ar5212GetDiagState(struct ath_hal *ah, int request,
0 : sizeof(struct ar5212AniState);
return AH_TRUE;
case HAL_DIAG_ANI_STATS:
- OS_MEMZERO(&ahp->ext_ani_state, sizeof(ahp->ext_ani_state));
- astate = ar5212AniGetCurrentState(ah);
- if (astate == NULL) {
+ OS_MEMZERO(&ahp->ext_ani_stats, sizeof(ahp->ext_ani_stats));
+ astats = ar5212AniGetCurrentStats(ah);
+ if (astats == NULL) {
*result = NULL;
*resultsize = 0;
} else {
- ahp->ext_ani_state.noiseImmunityLevel =
- astate->noiseImmunityLevel;
- ahp->ext_ani_state.spurImmunityLevel =
- astate->spurImmunityLevel;
- ahp->ext_ani_state.firstepLevel =
- astate->firstepLevel;
- ahp->ext_ani_state.ofdmWeakSigDetectOff =
- astate->ofdmWeakSigDetectOff;
- ahp->ext_ani_state.cckWeakSigThreshold =
- astate->cckWeakSigThreshold;
- ahp->ext_ani_state.listenTime =
- astate->listenTime;
-
- *result = &ahp->ext_ani_state;
- *resultsize = sizeof(ahp->ext_ani_state);
+ OS_MEMCPY(&ahp->ext_ani_stats, astats, sizeof(HAL_ANI_STATS));
+ *result = &ahp->ext_ani_stats;
+ *resultsize = sizeof(ahp->ext_ani_stats);
}
return AH_TRUE;
case HAL_DIAG_ANI_CMD:
OpenPOWER on IntegriCloud