diff options
Diffstat (limited to 'package/mac80211/patches/521-ath5k_common_clockrate.patch')
-rw-r--r-- | package/mac80211/patches/521-ath5k_common_clockrate.patch | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/package/mac80211/patches/521-ath5k_common_clockrate.patch b/package/mac80211/patches/521-ath5k_common_clockrate.patch new file mode 100644 index 0000000000..08c18342e7 --- /dev/null +++ b/package/mac80211/patches/521-ath5k_common_clockrate.patch @@ -0,0 +1,65 @@ +--- a/drivers/net/wireless/ath/ath5k/pcu.c ++++ b/drivers/net/wireless/ath/ath5k/pcu.c +@@ -207,7 +207,8 @@ static int ath5k_hw_set_cts_timeout(stru + */ + unsigned int ath5k_hw_htoclock(struct ath5k_hw *ah, unsigned int usec) + { +- return usec * ath5k_hw_get_clockrate(ah); ++ struct ath_common *common = ath5k_hw_common(ah); ++ return usec * common->clockrate; + } + + /** +@@ -216,17 +217,19 @@ unsigned int ath5k_hw_htoclock(struct at + */ + unsigned int ath5k_hw_clocktoh(struct ath5k_hw *ah, unsigned int clock) + { +- return clock / ath5k_hw_get_clockrate(ah); ++ struct ath_common *common = ath5k_hw_common(ah); ++ return clock / common->clockrate; + } + + /** +- * ath5k_hw_get_clockrate - Get the clock rate for current mode ++ * ath5k_hw_set_clockrate - Set common->clockrate for the current channel + * + * @ah: The &struct ath5k_hw + */ +-unsigned int ath5k_hw_get_clockrate(struct ath5k_hw *ah) ++void ath5k_hw_set_clockrate(struct ath5k_hw *ah) + { + struct ieee80211_channel *channel = ah->ah_current_channel; ++ struct ath_common *common = ath5k_hw_common(ah); + int clock; + + if (channel->hw_value & CHANNEL_5GHZ) +@@ -240,7 +243,7 @@ unsigned int ath5k_hw_get_clockrate(stru + if (channel->hw_value & CHANNEL_TURBO) + clock *= 2; + +- return clock; ++ common->clockrate = clock; + } + + /** +--- a/drivers/net/wireless/ath/ath5k/ath5k.h ++++ b/drivers/net/wireless/ath/ath5k/ath5k.h +@@ -1201,7 +1201,7 @@ void ath5k_hw_set_ack_bitrate_high(struc + /* Clock rate related functions */ + unsigned int ath5k_hw_htoclock(struct ath5k_hw *ah, unsigned int usec); + unsigned int ath5k_hw_clocktoh(struct ath5k_hw *ah, unsigned int clock); +-unsigned int ath5k_hw_get_clockrate(struct ath5k_hw *ah); ++void ath5k_hw_set_clockrate(struct ath5k_hw *ah); + + /* Queue Control Unit, DFS Control Unit Functions */ + int ath5k_hw_get_tx_queueprops(struct ath5k_hw *ah, int queue, +--- a/drivers/net/wireless/ath/ath5k/phy.c ++++ b/drivers/net/wireless/ath/ath5k/phy.c +@@ -1093,6 +1093,7 @@ int ath5k_hw_channel(struct ath5k_hw *ah + + ah->ah_current_channel = channel; + ah->ah_turbo = channel->hw_value == CHANNEL_T ? true : false; ++ ath5k_hw_set_clockrate(ah); + + return 0; + } |