svn commit: r225601 - user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416

Adrian Chadd adrian at FreeBSD.org
Fri Sep 16 04:05:59 UTC 2011


Author: adrian
Date: Fri Sep 16 04:05:58 2011
New Revision: 225601
URL: http://svn.freebsd.org/changeset/base/225601

Log:
  The ar5212InitState() function sets up AH5212(ah)->ah_beaconInterval
  to be 100 TU's by default and I'm guessing this once matched the default
  beacon interval as specified in the ath driver.
  
  This is then used in the CAB queue setup code in AR5212/AR5416 to
  setup the CAB queue ready time value. This is how long the CAB queue
  gets to transmit frames before it's halted, so other lower priority
  queues (ie, the data queues) get a chance to TX.
  
  But now that staggered beacons are enabled, the CAB queue readytime
  value will be shorter. The beacon interval timer is now 25 TU's
  rater than 100 TU's. So specifying a CAB readytime greater than
  the TBTT beacon timer interval is likely a bad idea.
  
  This hasn't resolved the issues I've seen with CAB queue traffic
  not draining, nor quietened missing beacon TX. But it certainly
  looks a lot more correct. Some further investigation into exactly
  how the cabq should be setup is warranted.

Modified:
  user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c

Modified: user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c	Fri Sep 16 02:28:55 2011	(r225600)
+++ user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c	Fri Sep 16 04:05:58 2011	(r225601)
@@ -37,6 +37,7 @@ void
 ar5416SetBeaconTimers(struct ath_hal *ah, const HAL_BEACON_TIMERS *bt)
 {
 	uint32_t bperiod;
+	struct ath_hal_5212 *ahp = AH5212(ah);
 
 	OS_REG_WRITE(ah, AR_NEXT_TBTT, TU_TO_USEC(bt->bt_nexttbtt));
 	OS_REG_WRITE(ah, AR_NEXT_DBA, ONE_EIGHTH_TU_TO_USEC(bt->bt_nextdba));
@@ -44,6 +45,7 @@ ar5416SetBeaconTimers(struct ath_hal *ah
 	OS_REG_WRITE(ah, AR_NEXT_NDP, TU_TO_USEC(bt->bt_nextatim));
 
 	bperiod = TU_TO_USEC(bt->bt_intval & HAL_BEACON_PERIOD);
+	ahp->ah_beaconInterval = bt->bt_intval & HAL_BEACON_PERIOD;
 	OS_REG_WRITE(ah, AR5416_BEACON_PERIOD, bperiod);
 	OS_REG_WRITE(ah, AR_DBA_PERIOD, bperiod);
 	OS_REG_WRITE(ah, AR_SWBA_PERIOD, bperiod);


More information about the svn-src-user mailing list