Skip site navigation (1)Skip section navigation (2)
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>