From owner-svn-src-head@FreeBSD.ORG Mon Jan 31 15:42:43 2011 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1C1611065674; Mon, 31 Jan 2011 15:42:43 +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 0B3888FC12; Mon, 31 Jan 2011 15:42:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p0VFggue028717; Mon, 31 Jan 2011 15:42:42 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p0VFggC6028715; Mon, 31 Jan 2011 15:42:42 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201101311542.p0VFggC6028715@svn.freebsd.org> From: Adrian Chadd Date: Mon, 31 Jan 2011 15:42:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218131 - head/sys/dev/ath/ath_hal/ar5416 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 31 Jan 2011 15:42:43 -0000 Author: adrian Date: Mon Jan 31 15:42:42 2011 New Revision: 218131 URL: http://svn.freebsd.org/changeset/base/218131 Log: Don't incorrectly set the burst duration setting in the TX descriptor. After inspecting the ath9k source, it seems the AR5416 and later MACs don't take an explicit RTS/CTS duration. A per-scenario (ie, what multi- rate retry became) rts/cts control flag and packet duration is provided; the hardware then apparently fills in whatever details are required. The per-rate sp/lpack duration calculation just isn't used anywhere in the ath9k TX packet length calculations. The burst duration register controls something different; it seems to be involved with RTS/CTS protection of 11n aggregate frames and is set via a call to ar5416Set11nBurstDuration(). I've done some light testing with rts/cts protected frames and nothing seems to break; but this may break said RTS/CTS and CTS-to-self protection. Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c Mon Jan 31 15:17:47 2011 (r218130) +++ head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c Mon Jan 31 15:42:42 2011 (r218131) @@ -227,7 +227,6 @@ ar5416SetupTxDesc(struct ath_hal *ah, st ads->ds_ctl0 |= (flags & HAL_TXDESC_CTSENA ? AR_CTSEnable : 0) | (flags & HAL_TXDESC_RTSENA ? AR_RTSEnable : 0) ; - ads->ds_ctl2 |= SM(rtsctsDuration, AR_BurstDur); ads->ds_ctl7 |= (rtsctsRate << AR_RTSCTSRate_S); } @@ -421,7 +420,6 @@ ar5416SetupFirstTxDesc(struct ath_hal *a /* XXX validate rtsctsDuration */ ads->ds_ctl0 |= (flags & HAL_TXDESC_CTSENA ? AR_CTSEnable : 0) | (flags & HAL_TXDESC_RTSENA ? AR_RTSEnable : 0); - ads->ds_ctl2 |= SM(rtsctsDuration, AR_BurstDur); } if (AR_SREV_KITE(ah)) {