From owner-svn-src-user@FreeBSD.ORG Sun Sep 4 14:58:58 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 0E700106566B; Sun, 4 Sep 2011 14:58:58 +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 F29438FC13; Sun, 4 Sep 2011 14:58:57 +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 p84Ewvbu096102; Sun, 4 Sep 2011 14:58:57 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p84EwvcJ096100; Sun, 4 Sep 2011 14:58:57 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201109041458.p84EwvcJ096100@svn.freebsd.org> From: Adrian Chadd Date: Sun, 4 Sep 2011 14:58:57 +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: r225378 - user/adrian/if_ath_tx/sys/dev/ath 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: Sun, 04 Sep 2011 14:58:58 -0000 Author: adrian Date: Sun Sep 4 14:58:57 2011 New Revision: 225378 URL: http://svn.freebsd.org/changeset/base/225378 Log: A previous commit from me used the aggregate length for packet completion. This made for some very bad performing 11n throughput because the rate used for selection (ie, the first frame length) didn't match up with the rate completion (ie, the aggregate length.) For now, just use the frame length of the first frame. This results in better throughput - which isn't 100% reliable, but it's better than what I'm currently seeing. Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c ============================================================================== --- user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c Sun Sep 4 14:55:51 2011 (r225377) +++ user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c Sun Sep 4 14:58:57 2011 (r225378) @@ -2741,10 +2741,13 @@ ath_tx_comp_aggr_error(struct ath_softc /* * Update rate control - all frames have failed. + * + * XXX use the length in the first frame in the series; + * XXX just so things are consistent for now. */ ath_tx_update_ratectrl(sc, ni, bf_first->bf_state.bfs_rc, &bf_first->bf_status.ds_txstat, - bf_first->bf_state.bfs_al, + bf_first->bf_state.bfs_pktlen, bf_first->bf_state.bfs_nframes, bf_first->bf_state.bfs_nframes); /* Retry all subframes */ @@ -2872,7 +2875,11 @@ ath_tx_aggr_comp_aggr(struct ath_softc * * has been completed and freed. */ ts = bf_first->bf_status.ds_txstat; - pktlen = bf_first->bf_state.bfs_al; + /* + * XXX for now, use the first frame in the aggregate for + * XXX rate control completion; it's at least consistent. + */ + pktlen = bf_first->bf_state.bfs_pktlen; /* * handle errors first