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