aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-02-25 19:56:26 +0000
committerFelix Fietkau <nbd@openwrt.org>2013-02-25 19:56:26 +0000
commit21b8c331fcdca77f0edaf413294f270f1466dfbf (patch)
tree0b199d4b895a0ff351596e6e4f5b1d5e2e5a268f
parent1210965f13f87b6edf5324f2d1e901bd7c4b9d70 (diff)
downloadupstream-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
-rw-r--r--package/mac80211/patches/300-pending_work.patch13
-rw-r--r--package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch2
-rw-r--r--package/mac80211/patches/525-ath9k_use_configured_antenna_gain.patch2
-rw-r--r--package/mac80211/patches/564-ath9k_debugfs_diag.patch4
-rw-r--r--package/mac80211/patches/565-ath9k_disable_paprd.patch2
-rw-r--r--package/mac80211/patches/b01-ath9k-allow-to-disable-bands-via-platform-data.patch2
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);