svn commit: r219942 - in head/sys/dev/ath: . ath_hal ath_hal/ar5416

Adrian Chadd adrian at FreeBSD.org
Wed Mar 23 23:48:45 UTC 2011


Author: adrian
Date: Wed Mar 23 23:48:44 2011
New Revision: 219942
URL: http://svn.freebsd.org/changeset/base/219942

Log:
  Make the ar2133ForceBias() call controllable at runtime.
  
  At least one AR5416 user has reported measurable throughput drops
  with this option. For now, disable it and make it a run-time
  twiddle. It won't take affect until the next radio programming
  trip though (eg channel scan, channel change.)

Modified:
  head/sys/dev/ath/ah_osdep.c
  head/sys/dev/ath/ath_hal/ah_internal.h
  head/sys/dev/ath/ath_hal/ar5416/ar2133.c

Modified: head/sys/dev/ath/ah_osdep.c
==============================================================================
--- head/sys/dev/ath/ah_osdep.c	Wed Mar 23 22:35:18 2011	(r219941)
+++ head/sys/dev/ath/ah_osdep.c	Wed Mar 23 23:48:44 2011	(r219942)
@@ -85,6 +85,11 @@ SYSCTL_INT(_hw_ath_hal, OID_AUTO, debug,
 TUNABLE_INT("hw.ath.hal.debug", &ath_hal_debug);
 #endif /* AH_DEBUG */
 
+int ath_hal_ar5416_biasadj = 0;
+SYSCTL_INT(_hw_ath_hal, OID_AUTO, ar5416_biasadj, CTLFLAG_RW,
+	&ath_hal_debug, 0, "Enable 2ghz AR5416 direction sensitivity"
+	" bias adjust");
+
 /* NB: these are deprecated; they exist for now for compatibility */
 int	ath_hal_dma_beacon_response_time = 2;	/* in TU's */
 SYSCTL_INT(_hw_ath_hal, OID_AUTO, dma_brt, CTLFLAG_RW,

Modified: head/sys/dev/ath/ath_hal/ah_internal.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah_internal.h	Wed Mar 23 22:35:18 2011	(r219941)
+++ head/sys/dev/ath/ath_hal/ah_internal.h	Wed Mar 23 23:48:44 2011	(r219942)
@@ -476,6 +476,7 @@ isBigEndian(void)
 extern	int ath_hal_dma_beacon_response_time;	/* in TU's */
 extern	int ath_hal_sw_beacon_response_time;	/* in TU's */
 extern	int ath_hal_additional_swba_backoff;	/* in TU's */
+extern	int ath_hal_ar5416_biasadj;		/* 1 or 0 */
 
 /* wait for the register contents to have the specified value */
 extern	HAL_BOOL ath_hal_wait(struct ath_hal *, u_int reg,

Modified: head/sys/dev/ath/ath_hal/ar5416/ar2133.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar2133.c	Wed Mar 23 22:35:18 2011	(r219941)
+++ head/sys/dev/ath/ath_hal/ar5416/ar2133.c	Wed Mar 23 23:48:44 2011	(r219942)
@@ -185,7 +185,7 @@ ar2133SetChannel(struct ath_hal *ah, con
 	}
 
 	/* Workaround for hw bug - AR5416 specific */
-	if (AR_SREV_OWL(ah))
+	if (AR_SREV_OWL(ah) && ath_hal_ar5416_biasadj)
 		ar2133ForceBias(ah, freq);
 
 	reg32 = (channelSel << 8) | (aModeRefSel << 2) | (bModeSynth << 1) |


More information about the svn-src-all mailing list