Author: adrian
Date: Mon Apr  6 01:12:53 2015
New Revision: 281128
URL: https://svnweb.freebsd.org/changeset/base/281128

Log:
  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.

Modified:
  head/sys/dev/ath/ath_hal/ar5212/ar5212.h
  head/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c

Modified: head/sys/dev/ath/ath_hal/ar5212/ar5212.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5212/ar5212.h    Mon Apr  6 01:04:08 2015        
(r281127)
+++ head/sys/dev/ath/ath_hal/ar5212/ar5212.h    Mon Apr  6 01:12:53 2015        
(r281128)
@@ -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))
 

Modified: head/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c       Mon Apr  6 01:04:08 
2015        (r281127)
+++ head/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c       Mon Apr  6 01:12:53 
2015        (r281128)
@@ -1052,7 +1052,7 @@ ar5212GetDiagState(struct ath_hal *ah, i
        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, i
                        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:
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to