From owner-svn-src-user@FreeBSD.ORG Fri Sep 16 04:05:59 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 54C61106564A; Fri, 16 Sep 2011 04:05:59 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2B38D8FC13; Fri, 16 Sep 2011 04:05:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p8G45xNM003122; Fri, 16 Sep 2011 04:05:59 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p8G45x9a003120; Fri, 16 Sep 2011 04:05:59 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201109160405.p8G45x9a003120@svn.freebsd.org> From: Adrian Chadd Date: Fri, 16 Sep 2011 04:05:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r225601 - user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Sep 2011 04:05:59 -0000 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);