diff options
author | adrian <adrian@FreeBSD.org> | 2012-04-07 05:46:00 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2012-04-07 05:46:00 +0000 |
commit | 960a4d850db11d08f7e1e7af10ecf4a965acf9f9 (patch) | |
tree | 7a044d17734de7b6cc5b9929384dfb4c48ca7a76 | |
parent | 311b105c66a060e0ff2789f0047b59fb66bef2b1 (diff) | |
download | FreeBSD-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.c | 18 |
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 |