Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Apr 2015 01:12:54 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r281128 - head/sys/dev/ath/ath_hal/ar5212
Message-ID:  <201504060112.t361CsCd080997@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201504060112.t361CsCd080997>