svn commit: r225378 - user/adrian/if_ath_tx/sys/dev/ath

Adrian Chadd adrian at FreeBSD.org
Sun Sep 4 14:58:58 UTC 2011


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


More information about the svn-src-user mailing list