svn commit: r248670 - head/sys/dev/ath/ath_hal/ar5416

Adrian Chadd adrian at FreeBSD.org
Sat Mar 23 23:51:12 UTC 2013


Author: adrian
Date: Sat Mar 23 23:51:11 2013
New Revision: 248670
URL: http://svnweb.freebsd.org/changeset/base/248670

Log:
  CABQ calculation changes to try and fix some weird corner cases leading
  to stuck beacons.
  
  * Set the cabq readytime (ie, how long to burst for) to 50% of the total
    beacon interval time
  * fix the cabq adjustment calculation based on how the beacon offset is
    calculated (the SWBA/DBA time offset.)
  
  This is all still a bit magic voodoo but it does seem to have further
  quietened issues with missed/stuck beacons under my local testing.
  In any case, it better matches what the reference HAL implements.
  
  Obtained from:	Qualcomm Atheros

Modified:
  head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c

Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c	Sat Mar 23 23:27:16 2013	(r248669)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c	Sat Mar 23 23:51:11 2013	(r248670)
@@ -1191,10 +1191,10 @@ ar5416ResetTxQueue(struct ath_hal *ah, u
 			 * XXX which I gather is because of such a long
 			 * XXX cabq time.)
 			 */
-			value = (ahp->ah_beaconInterval * 70 / 100)
-				- (ah->ah_config.ah_sw_beacon_response_time
-				+ ah->ah_config.ah_dma_beacon_response_time)
-				- ah->ah_config.ah_additional_swba_backoff;
+			value = (ahp->ah_beaconInterval * 50 / 100)
+				- ah->ah_config.ah_additional_swba_backoff
+				- ah->ah_config.ah_sw_beacon_response_time
+				+ ah->ah_config.ah_dma_beacon_response_time;
 			/*
 			 * XXX Ensure it isn't too low - nothing lower
 			 * XXX than 10 TU


More information about the svn-src-all mailing list