aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-08-27 19:52:10 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-09-13 15:42:29 -0400
commitadb5066ae2cefede1807c29ac16e1faa381416da (patch)
treed2b5ae890d2547a3ebea0c91bd02283a340c6a19 /drivers/net/wireless/ath
parent2cca397f76a4a48ac20c34ec1e35bac8c6b08d1c (diff)
ath9k_hw: do not apply the 2.4 ghz ack timeout workaround to cts
It is only used to workaround interoperability issues related to longer delays in receiving the block ack, so it is not necessary to apply it to the CTS exchange. Should improve throughput slightly, especially when there are lots of retransmissions. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 3a16ba256ef9..468ac4b17dfb 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -960,7 +960,7 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
960 struct ath_common *common = ath9k_hw_common(ah); 960 struct ath_common *common = ath9k_hw_common(ah);
961 struct ieee80211_conf *conf = &common->hw->conf; 961 struct ieee80211_conf *conf = &common->hw->conf;
962 const struct ath9k_channel *chan = ah->curchan; 962 const struct ath9k_channel *chan = ah->curchan;
963 int acktimeout; 963 int acktimeout, ctstimeout;
964 int slottime; 964 int slottime;
965 int sifstime; 965 int sifstime;
966 int rx_lat = 0, tx_lat = 0, eifs = 0; 966 int rx_lat = 0, tx_lat = 0, eifs = 0;
@@ -1017,6 +1017,7 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
1017 1017
1018 /* As defined by IEEE 802.11-2007 17.3.8.6 */ 1018 /* As defined by IEEE 802.11-2007 17.3.8.6 */
1019 acktimeout = slottime + sifstime + 3 * ah->coverage_class; 1019 acktimeout = slottime + sifstime + 3 * ah->coverage_class;
1020 ctstimeout = acktimeout;
1020 1021
1021 /* 1022 /*
1022 * Workaround for early ACK timeouts, add an offset to match the 1023 * Workaround for early ACK timeouts, add an offset to match the
@@ -1031,7 +1032,7 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
1031 ath9k_hw_set_sifs_time(ah, sifstime); 1032 ath9k_hw_set_sifs_time(ah, sifstime);
1032 ath9k_hw_setslottime(ah, slottime); 1033 ath9k_hw_setslottime(ah, slottime);
1033 ath9k_hw_set_ack_timeout(ah, acktimeout); 1034 ath9k_hw_set_ack_timeout(ah, acktimeout);
1034 ath9k_hw_set_cts_timeout(ah, acktimeout); 1035 ath9k_hw_set_cts_timeout(ah, ctstimeout);
1035 if (ah->globaltxtimeout != (u32) -1) 1036 if (ah->globaltxtimeout != (u32) -1)
1036 ath9k_hw_set_global_txtimeout(ah, ah->globaltxtimeout); 1037 ath9k_hw_set_global_txtimeout(ah, ah->globaltxtimeout);
1037 1038