diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-02-25 19:56:26 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-02-25 19:56:26 +0000 |
commit | 21b8c331fcdca77f0edaf413294f270f1466dfbf (patch) | |
tree | 0b199d4b895a0ff351596e6e4f5b1d5e2e5a268f /package | |
parent | 1210965f13f87b6edf5324f2d1e901bd7c4b9d70 (diff) | |
download | upstream-21b8c331fcdca77f0edaf413294f270f1466dfbf.tar.gz upstream-21b8c331fcdca77f0edaf413294f270f1466dfbf.tar.bz2 upstream-21b8c331fcdca77f0edaf413294f270f1466dfbf.zip |
ath9k: issue a cold reset after failures or after bringing the chip out of full sleep - fixes many kinds of DMA issues
Backport of r35785
git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@35786 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
6 files changed, 18 insertions, 7 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 3607e76657..7cc4569673 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -1177,7 +1177,18 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -2568,7 +2568,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw +@@ -1467,7 +1467,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; +@@ -2568,7 +2570,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw if (AR_SREV_9300_20_OR_LATER(ah)) { ah->enabled_cals |= TX_IQ_CAL; diff --git a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch index 3b78afae3e..b6591b06e9 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 -@@ -1949,8 +1949,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1951,8 +1951,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/525-ath9k_use_configured_antenna_gain.patch b/package/mac80211/patches/525-ath9k_use_configured_antenna_gain.patch index 367438ea3e..04bd2b3af0 100644 --- a/package/mac80211/patches/525-ath9k_use_configured_antenna_gain.patch +++ b/package/mac80211/patches/525-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 -@@ -2828,7 +2828,7 @@ void ath9k_hw_apply_txpower(struct ath_h +@@ -2830,7 +2830,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/564-ath9k_debugfs_diag.patch b/package/mac80211/patches/564-ath9k_debugfs_diag.patch index b7d9f5edc5..3c7881dbd4 100644 --- a/package/mac80211/patches/564-ath9k_debugfs_diag.patch +++ b/package/mac80211/patches/564-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 -@@ -1749,6 +1749,20 @@ fail: +@@ -1751,6 +1751,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) { -@@ -2026,6 +2040,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -2028,6 +2042,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st } ath9k_hw_apply_gpio_override(ah); diff --git a/package/mac80211/patches/565-ath9k_disable_paprd.patch b/package/mac80211/patches/565-ath9k_disable_paprd.patch index 903a2b0c7e..523ac97122 100644 --- a/package/mac80211/patches/565-ath9k_disable_paprd.patch +++ b/package/mac80211/patches/565-ath9k_disable_paprd.patch @@ -11,7 +11,7 @@ debugfs_create_file("regval", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -2521,10 +2521,6 @@ int ath9k_hw_fill_cap_info(struct ath_hw +@@ -2523,10 +2523,6 @@ int ath9k_hw_fill_cap_info(struct ath_hw pCap->rx_status_len = sizeof(struct ar9003_rxs); pCap->tx_desc_len = sizeof(struct ar9003_txc); pCap->txs_len = sizeof(struct ar9003_txs); diff --git a/package/mac80211/patches/b01-ath9k-allow-to-disable-bands-via-platform-data.patch b/package/mac80211/patches/b01-ath9k-allow-to-disable-bands-via-platform-data.patch index 0a071ffcc7..8b4ddefe91 100644 --- a/package/mac80211/patches/b01-ath9k-allow-to-disable-bands-via-platform-data.patch +++ b/package/mac80211/patches/b01-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 -@@ -2413,17 +2413,25 @@ int ath9k_hw_fill_cap_info(struct ath_hw +@@ -2415,17 +2415,25 @@ int ath9k_hw_fill_cap_info(struct ath_hw } eeval = ah->eep_ops->get_eeprom(ah, EEP_OP_MODE); |