diff options
author | Bob Copeland <me@bobcopeland.com> | 2009-02-15 12:06:12 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-02-27 14:52:37 -0500 |
commit | 362695e11a09ff016ef00dc45b934b1daf862091 (patch) | |
tree | a85324e9e679ab79089d76a5036b41df9663c6bd /drivers/net/wireless/ath5k/base.c | |
parent | acf3c1a592a070edeede5dfa38c0ce3395357de0 (diff) |
ath5k: compute rts/cts duration after computing full pktlen
RTS and CTS-to-self duration needs to go after ICV len is considered.
Changes-licensed-under: 3-Clause-BSD
Signed-off-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath5k/base.c')
-rw-r--r-- | drivers/net/wireless/ath5k/base.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c index fa6a21646bf8..bce825b9ff1b 100644 --- a/drivers/net/wireless/ath5k/base.c +++ b/drivers/net/wireless/ath5k/base.c | |||
@@ -1220,6 +1220,10 @@ ath5k_txbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf) | |||
1220 | 1220 | ||
1221 | pktlen = skb->len; | 1221 | pktlen = skb->len; |
1222 | 1222 | ||
1223 | if (info->control.hw_key) { | ||
1224 | keyidx = info->control.hw_key->hw_key_idx; | ||
1225 | pktlen += info->control.hw_key->icv_len; | ||
1226 | } | ||
1223 | if (rc_flags & IEEE80211_TX_RC_USE_RTS_CTS) { | 1227 | if (rc_flags & IEEE80211_TX_RC_USE_RTS_CTS) { |
1224 | flags |= AR5K_TXDESC_RTSENA; | 1228 | flags |= AR5K_TXDESC_RTSENA; |
1225 | cts_rate = ieee80211_get_rts_cts_rate(sc->hw, info)->hw_value; | 1229 | cts_rate = ieee80211_get_rts_cts_rate(sc->hw, info)->hw_value; |
@@ -1232,11 +1236,6 @@ ath5k_txbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf) | |||
1232 | duration = le16_to_cpu(ieee80211_ctstoself_duration(sc->hw, | 1236 | duration = le16_to_cpu(ieee80211_ctstoself_duration(sc->hw, |
1233 | sc->vif, pktlen, info)); | 1237 | sc->vif, pktlen, info)); |
1234 | } | 1238 | } |
1235 | |||
1236 | if (info->control.hw_key) { | ||
1237 | keyidx = info->control.hw_key->hw_key_idx; | ||
1238 | pktlen += info->control.hw_key->icv_len; | ||
1239 | } | ||
1240 | ret = ah->ah_setup_tx_desc(ah, ds, pktlen, | 1239 | ret = ah->ah_setup_tx_desc(ah, ds, pktlen, |
1241 | ieee80211_get_hdrlen_from_skb(skb), AR5K_PKT_TYPE_NORMAL, | 1240 | ieee80211_get_hdrlen_from_skb(skb), AR5K_PKT_TYPE_NORMAL, |
1242 | (sc->power_level * 2), | 1241 | (sc->power_level * 2), |