summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-03-11 20:55:54 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-03-11 20:55:54 +0000
commit7746d05fee586a3ad19c57c51677d2a13e508593 (patch)
tree9d6b6ac1607ce54451f80829df06e6f64c72a58e
parentfdb9acb4b967831ced46cbfd8f01f7a251d49dbd (diff)
mac80211/ath9k: improve pending patches based on review feedback
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26041 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/mac80211/patches/571-ath9k_fix_dma_stop.patch9
-rw-r--r--package/mac80211/patches/572-ath9k_fix_tx_flush.patch12
-rw-r--r--package/mac80211/patches/573-ath9k_beacon_stop.patch16
-rw-r--r--package/mac80211/patches/581-mac80211_chantype_change_fix.patch8
4 files changed, 26 insertions, 19 deletions
diff --git a/package/mac80211/patches/571-ath9k_fix_dma_stop.patch b/package/mac80211/patches/571-ath9k_fix_dma_stop.patch
index 072e657e2..9f7cfa82e 100644
--- a/package/mac80211/patches/571-ath9k_fix_dma_stop.patch
+++ b/package/mac80211/patches/571-ath9k_fix_dma_stop.patch
@@ -25,7 +25,7 @@
if (npend)
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -143,6 +143,33 @@ bool ath9k_hw_updatetxtriglevel(struct a
+@@ -143,6 +143,34 @@ bool ath9k_hw_updatetxtriglevel(struct a
}
EXPORT_SYMBOL(ath9k_hw_updatetxtriglevel);
@@ -40,11 +40,12 @@
+ REG_SET_BIT(ah, AR_D_GBL_IFS_MISC, AR_D_GBL_IFS_MISC_IGNORE_BACKOFF);
+
+ for (q = 0; q < AR_NUM_QCU; q++) {
-+ for (i = 1000; i > 0; i--) {
++ for (i = 0; i < 1000; i++) {
++ if (i)
++ udelay(5);
++
+ if (!ath9k_hw_numtxpending(ah, q))
+ break;
-+
-+ udelay(5);
+ }
+ }
+
diff --git a/package/mac80211/patches/572-ath9k_fix_tx_flush.patch b/package/mac80211/patches/572-ath9k_fix_tx_flush.patch
index ddeeb145b..630abc6fd 100644
--- a/package/mac80211/patches/572-ath9k_fix_tx_flush.patch
+++ b/package/mac80211/patches/572-ath9k_fix_tx_flush.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -2149,56 +2149,40 @@ static void ath9k_set_coverage_class(str
+@@ -2149,56 +2149,42 @@ static void ath9k_set_coverage_class(str
static void ath9k_flush(struct ieee80211_hw *hw, bool drop)
{
@@ -32,6 +32,12 @@
- }
+ if (drop)
+ timeout = 1;
++
++ for (j = 0; j < timeout; j++) {
++ int npend = 0;
++
++ if (j)
++ usleep_range(1000, 2000);
- if (drop || ath9k_has_pending_frames(sc, txq)) {
- ath_dbg(common, ATH_DBG_QUEUE, "Drop frames from hw queue:%d\n",
@@ -46,8 +52,6 @@
- ath9k_ps_restore(sc);
- if (npend)
- break;
-+ for (j = 0; j < timeout; j++) {
-+ int npend = 0;
+ for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {
+ if (!ATH_TXQ_SETUP(sc, i))
+ continue;
@@ -59,8 +63,6 @@
+
+ if (!npend)
+ goto out;
-+
-+ usleep_range(1000, 2000);
}
- if (npend) {
diff --git a/package/mac80211/patches/573-ath9k_beacon_stop.patch b/package/mac80211/patches/573-ath9k_beacon_stop.patch
index 7a9f63fc7..5574d1716 100644
--- a/package/mac80211/patches/573-ath9k_beacon_stop.patch
+++ b/package/mac80211/patches/573-ath9k_beacon_stop.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -170,84 +170,30 @@ void ath9k_hw_abort_tx_dma(struct ath_hw
+@@ -171,84 +171,31 @@ void ath9k_hw_abort_tx_dma(struct ath_hw
}
EXPORT_SYMBOL(ath9k_hw_abort_tx_dma);
@@ -34,11 +34,11 @@
REG_WRITE(ah, AR_Q_TXD, 1 << q);
for (wait = wait_time; wait != 0; wait--) {
- if (ath9k_hw_numtxpending(ah, q) == 0)
- break;
+- if (ath9k_hw_numtxpending(ah, q) == 0)
+- break;
- udelay(ATH9K_TIME_QUANTUM);
- }
-
+-
- if (ath9k_hw_numtxpending(ah, q)) {
- ath_dbg(common, ATH_DBG_QUEUE,
- "%s: Num of pending TX Frames %d on Q %d\n",
@@ -73,11 +73,13 @@
- "Failed to stop TX DMA in 100 msec after killing last frame\n");
- break;
- }
-- udelay(ATH9K_TIME_QUANTUM);
++ if (wait != wait_time)
+ udelay(ATH9K_TIME_QUANTUM);
- }
--
+
- REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH);
-+ udelay(ATH9K_TIME_QUANTUM);
++ if (ath9k_hw_numtxpending(ah, q) == 0)
++ break;
}
REG_WRITE(ah, AR_Q_TXD, 0);
diff --git a/package/mac80211/patches/581-mac80211_chantype_change_fix.patch b/package/mac80211/patches/581-mac80211_chantype_change_fix.patch
index 87e277298..b855d1d80 100644
--- a/package/mac80211/patches/581-mac80211_chantype_change_fix.patch
+++ b/package/mac80211/patches/581-mac80211_chantype_change_fix.patch
@@ -1,10 +1,12 @@
--- a/net/mac80211/chan.c
+++ b/net/mac80211/chan.c
-@@ -76,6 +76,7 @@ bool ieee80211_set_channel_type(struct i
-
+@@ -77,6 +77,9 @@ bool ieee80211_set_channel_type(struct i
switch (tmp->vif.bss_conf.channel_type) {
case NL80211_CHAN_NO_HT:
-+ break;
case NL80211_CHAN_HT20:
++ if (superchan > tmp->vif.bss_conf.channel_type)
++ break;
++
superchan = tmp->vif.bss_conf.channel_type;
break;
+ case NL80211_CHAN_HT40PLUS: