summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2012-04-07 05:46:00 +0000
committeradrian <adrian@FreeBSD.org>2012-04-07 05:46:00 +0000
commit960a4d850db11d08f7e1e7af10ecf4a965acf9f9 (patch)
tree7a044d17734de7b6cc5b9929384dfb4c48ca7a76
parent311b105c66a060e0ff2789f0047b59fb66bef2b1 (diff)
downloadFreeBSD-src-960a4d850db11d08f7e1e7af10ecf4a965acf9f9.zip
FreeBSD-src-960a4d850db11d08f7e1e7af10ecf4a965acf9f9.tar.gz
As I thought, this is a bad idea. When forming aggregates, the RTS/CTS
stuff and rate control lookup is only done on the first frame.
-rw-r--r--sys/dev/ath/if_ath_tx_ht.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/sys/dev/ath/if_ath_tx_ht.c b/sys/dev/ath/if_ath_tx_ht.c
index b7875a3..a2fc1c0 100644
--- a/sys/dev/ath/if_ath_tx_ht.c
+++ b/sys/dev/ath/if_ath_tx_ht.c
@@ -741,18 +741,14 @@ ath_tx_form_aggr(struct ath_softc *sc, struct ath_node *an, struct ath_tid *tid,
/*
* If the current frame has an RTS/CTS configuration
- * that differs from the first frame, don't include
- * this in the aggregate. It's possible that the
- * "right" thing to do here is enforce the aggregate
- * configuration.
+ * that differs from the first frame, override the
+ * subsequent frame with this config.
*/
- if ((bf_first->bf_state.bfs_txflags &
- (HAL_TXDESC_RTSENA | HAL_TXDESC_CTSENA)) !=
- (bf->bf_state.bfs_txflags &
- (HAL_TXDESC_RTSENA | HAL_TXDESC_CTSENA))) {
- status = ATH_AGGR_NONAGGR;
- break;
- }
+ bf->bf_state.bfs_txflags &=
+ (HAL_TXDESC_RTSENA | HAL_TXDESC_CTSENA);
+ bf->bf_state.bfs_txflags |=
+ bf_first->bf_state.bfs_txflags &
+ (HAL_TXDESC_RTSENA | HAL_TXDESC_CTSENA);
/*
* TODO: If it's _before_ the BAW left edge, complain very
OpenPOWER on IntegriCloud