diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-02-25 19:53:31 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-02-25 19:53:31 +0000 |
commit | f1bde82f00904bc73cfe2fcce437c87614b4a47d (patch) | |
tree | c63ff9b9404a01b615d8241d63d9c3fc01f0feaf | |
parent | 0f2fc0adfd87bbc62e1f9106dfef0b51b08c6fe4 (diff) | |
download | mtk-20170518-f1bde82f00904bc73cfe2fcce437c87614b4a47d.zip mtk-20170518-f1bde82f00904bc73cfe2fcce437c87614b4a47d.tar.gz mtk-20170518-f1bde82f00904bc73cfe2fcce437c87614b4a47d.tar.bz2 |
ath9k: issue a cold reset after failures or after bringing the chip out of full sleep - fixes many kinds of DMA issues
SVN-Revision: 35785
5 files changed, 18 insertions, 5 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 11c9a5a..51da3cf 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -499,3 +499,16 @@ ret = 0; } rcu_read_unlock(); +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1463,7 +1463,9 @@ static bool ath9k_hw_chip_reset(struct a + reset_type = ATH9K_RESET_POWER_ON; + else + reset_type = ATH9K_RESET_COLD; +- } ++ } else if (ah->chip_fullsleep || REG_READ(ah, AR_Q_TXE) || ++ (REG_READ(ah, AR_CR) & AR_CR_RXE)) ++ reset_type = ATH9K_RESET_COLD; + + if (!ath9k_hw_set_reset_reg(ah, reset_type)) + return false; diff --git a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch index 6e2af40..ff6ff27 100644 --- a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch +++ b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1945,8 +1945,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1947,8 +1947,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st REG_WRITE(ah, AR_OBS, 8); if (ah->config.rx_intr_mitigation) { diff --git a/package/mac80211/patches/524-ath9k_use_configured_antenna_gain.patch b/package/mac80211/patches/524-ath9k_use_configured_antenna_gain.patch index 775bdac..fe05212 100644 --- a/package/mac80211/patches/524-ath9k_use_configured_antenna_gain.patch +++ b/package/mac80211/patches/524-ath9k_use_configured_antenna_gain.patch @@ -10,7 +10,7 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -2816,7 +2816,7 @@ void ath9k_hw_apply_txpower(struct ath_h +@@ -2818,7 +2818,7 @@ void ath9k_hw_apply_txpower(struct ath_h channel = chan->chan; chan_pwr = min_t(int, channel->max_power * 2, MAX_RATE_POWER); new_pwr = min_t(int, chan_pwr, reg->power_limit); diff --git a/package/mac80211/patches/553-ath9k_debugfs_diag.patch b/package/mac80211/patches/553-ath9k_debugfs_diag.patch index fcc7dab..915f30f 100644 --- a/package/mac80211/patches/553-ath9k_debugfs_diag.patch +++ b/package/mac80211/patches/553-ath9k_debugfs_diag.patch @@ -94,7 +94,7 @@ void ath9k_debug_sync_cause(struct ath_common *common, u32 sync_cause); --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1745,6 +1745,20 @@ fail: +@@ -1747,6 +1747,20 @@ fail: return -EINVAL; } @@ -115,7 +115,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan, struct ath9k_hw_cal_data *caldata, bool fastcc) { -@@ -2022,6 +2036,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -2024,6 +2038,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st } ath9k_hw_apply_gpio_override(ah); diff --git a/package/mac80211/patches/555-ath9k-allow-to-disable-bands-via-platform-data.patch b/package/mac80211/patches/555-ath9k-allow-to-disable-bands-via-platform-data.patch index bdb4ba0..515bb8f 100644 --- a/package/mac80211/patches/555-ath9k-allow-to-disable-bands-via-platform-data.patch +++ b/package/mac80211/patches/555-ath9k-allow-to-disable-bands-via-platform-data.patch @@ -12,7 +12,7 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -2412,17 +2412,25 @@ int ath9k_hw_fill_cap_info(struct ath_hw +@@ -2414,17 +2414,25 @@ int ath9k_hw_fill_cap_info(struct ath_hw } eeval = ah->eep_ops->get_eeprom(ah, EEP_OP_MODE); |