stats->success++;
}
+--- a/drivers/net/wireless/ath/ath9k/hw.c
++++ b/drivers/net/wireless/ath/ath9k/hw.c
+@@ -149,22 +149,19 @@ bool ath9k_get_channel_edges(struct ath_
+ }
+
+ u16 ath9k_hw_computetxtime(struct ath_hw *ah,
+- const struct ath_rate_table *rates,
++ u8 phy, int kbps,
+ u32 frameLen, u16 rateix,
+ bool shortPreamble)
+ {
+ u32 bitsPerSymbol, numBits, numSymbols, phyTime, txTime;
+- u32 kbps;
+-
+- kbps = rates->info[rateix].ratekbps;
+
+ if (kbps == 0)
+ return 0;
+
+- switch (rates->info[rateix].phy) {
++ switch (phy) {
+ case WLAN_RC_PHY_CCK:
+ phyTime = CCK_PREAMBLE_BITS + CCK_PLCP_BITS;
+- if (shortPreamble && rates->info[rateix].short_preamble)
++ if (shortPreamble)
+ phyTime >>= 1;
+ numBits = frameLen << 3;
+ txTime = CCK_SIFS_TIME + phyTime + ((numBits * 1000) / kbps);
+@@ -195,8 +192,7 @@ u16 ath9k_hw_computetxtime(struct ath_hw
+ break;
+ default:
+ ath_print(ath9k_hw_common(ah), ATH_DBG_FATAL,
+- "Unknown phy %u (rate ix %u)\n",
+- rates->info[rateix].phy, rateix);
++ "Unknown phy %u (rate ix %u)\n", phy, rateix);
+ txTime = 0;
+ break;
+ }
+--- a/drivers/net/wireless/ath/ath9k/hw.h
++++ b/drivers/net/wireless/ath/ath9k/hw.h
+@@ -670,7 +670,7 @@ bool ath9k_hw_wait(struct ath_hw *ah, u3
+ u32 ath9k_hw_reverse_bits(u32 val, u32 n);
+ bool ath9k_get_channel_edges(struct ath_hw *ah, u16 flags, u16 *low, u16 *high);
+ u16 ath9k_hw_computetxtime(struct ath_hw *ah,
+- const struct ath_rate_table *rates,
++ u8 phy, int kbps,
+ u32 frameLen, u16 rateix, bool shortPreamble);
+ void ath9k_hw_get_channel_centers(struct ath_hw *ah,
+ struct ath9k_channel *chan,
+--- a/drivers/net/wireless/ath/ath9k/mac.h
++++ b/drivers/net/wireless/ath/ath9k/mac.h
+@@ -616,7 +616,6 @@ enum ath9k_cipher {
+
+ struct ath_hw;
+ struct ath9k_channel;
+-struct ath_rate_table;
+
+ u32 ath9k_hw_gettxbuf(struct ath_hw *ah, u32 q);
+ void ath9k_hw_puttxbuf(struct ath_hw *ah, u32 q, u32 txdp);