Date: Fri, 16 Sep 2011 04:05:59 +0000 (UTC) From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r225601 - user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416 Message-ID: <201109160405.p8G45x9a003120@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201109160405.p8G45x9a003120>