提交 6340211c 编写于 作者: F Felix Fietkau 提交者: John W. Linville

ath5k: disable 32KHz sleep clock operation by default

While 32 KHz sleep clock might provide some power saving benefits,
it is also a major source of stability issues, on OpenWrt it produced
some reproducible data bus errors on register accesses on several
different MIPS platforms.

All the Atheros drivers that I can find do not enable this feature,
so it makes sense to leave it disabled in ath5k as well.
Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
Acked-by: NNick Kossifidis <mickflemm@gmail.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 f0064388
...@@ -1067,6 +1067,8 @@ struct ath5k_hw { ...@@ -1067,6 +1067,8 @@ struct ath5k_hw {
u8 ah_retry_long; u8 ah_retry_long;
u8 ah_retry_short; u8 ah_retry_short;
u32 ah_use_32khz_clock;
u8 ah_coverage_class; u8 ah_coverage_class;
bool ah_ack_bitrate_high; bool ah_ack_bitrate_high;
u8 ah_bwmode; u8 ah_bwmode;
......
...@@ -922,6 +922,9 @@ ath5k_debug_init_device(struct ath5k_softc *sc) ...@@ -922,6 +922,9 @@ ath5k_debug_init_device(struct ath5k_softc *sc)
debugfs_create_file("queue", S_IWUSR | S_IRUSR, phydir, sc, debugfs_create_file("queue", S_IWUSR | S_IRUSR, phydir, sc,
&fops_queue); &fops_queue);
debugfs_create_bool("32khz_clock", S_IWUSR | S_IRUSR, phydir,
&sc->ah->ah_use_32khz_clock);
} }
/* functions used in other places */ /* functions used in other places */
......
...@@ -1287,11 +1287,16 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode, ...@@ -1287,11 +1287,16 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
ath5k_hw_dma_init(ah); ath5k_hw_dma_init(ah);
/* Enable 32KHz clock function for AR5212+ chips /*
* Enable 32KHz clock function for AR5212+ chips
* Set clocks to 32KHz operation and use an * Set clocks to 32KHz operation and use an
* external 32KHz crystal when sleeping if one * external 32KHz crystal when sleeping if one
* exists */ * exists.
if (ah->ah_version == AR5K_AR5212 && * Disabled by default because it is also disabled in
* other drivers and it is known to cause stability
* issues on some devices
*/
if (ah->ah_use_32khz_clock && ah->ah_version == AR5K_AR5212 &&
op_mode != NL80211_IFTYPE_AP) op_mode != NL80211_IFTYPE_AP)
ath5k_hw_set_sleep_clock(ah, true); ath5k_hw_set_sleep_clock(ah, true);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册