ath9k: revert a faulty rx path fix
authorFelix Fietkau <nbd@openwrt.org>
Tue, 20 May 2014 11:09:47 +0000 (11:09 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 20 May 2014 11:09:47 +0000 (11:09 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 40802

package/kernel/mac80211/patches/300-pending_work.patch
package/kernel/mac80211/patches/521-ath9k_cur_txpower.patch
package/kernel/mac80211/patches/523-ath9k_use_configured_antenna_gain.patch
package/kernel/mac80211/patches/542-ath9k_debugfs_diag.patch

index 702b17b33326848f7a7d08e85b0f0c037806d257..dc1e2650fa65db8caa0fc526d48600e45980995a 100644 (file)
@@ -1,13 +1,3 @@
-commit 230ab8c1880266c9cfceac962e2d48309dea79a7
-Author: Felix Fietkau <nbd@openwrt.org>
-Date:   Mon May 19 21:48:56 2014 +0200
-
-    ath9k: re-schedule rx processing after budget exceeded
-    
-    Should improve rx stability under load
-    
-    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-
 commit ff9655bebd25d35ab13c2515a029723b69949720
 Author: Felix Fietkau <nbd@openwrt.org>
 Date:   Mon May 19 21:20:49 2014 +0200
@@ -4328,52 +4318,6 @@ Date:   Tue Apr 29 17:52:36 2014 +0200
                /* Finally check that all iftypes that we're currently
                 * using are actually part of this combination. If they
                 * aren't then we can't use this combination and have
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -444,6 +444,8 @@ void ath9k_tasklet(unsigned long data)
-       ath9k_ps_wakeup(sc);
-       spin_lock(&sc->sc_pcu_lock);
-+      sc->intrstatus = 0;
-+
-       if (status & ATH9K_INT_FATAL) {
-               type = RESET_TYPE_FATAL_INT;
-               ath9k_queue_reset(sc, type);
-@@ -512,10 +514,12 @@ void ath9k_tasklet(unsigned long data)
-       if (status & rxmask) {
-               /* Check for high priority Rx first */
-               if ((ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) &&
--                  (status & ATH9K_INT_RXHP))
--                      ath_rx_tasklet(sc, 0, true);
-+                  (status & ATH9K_INT_RXHP) &&
-+                  ath_rx_tasklet(sc, 0, true))
-+                      sc->intrstatus |= ATH9K_INT_RXHP;
--              ath_rx_tasklet(sc, 0, false);
-+              if (ath_rx_tasklet(sc, 0, false))
-+                      sc->intrstatus |= ATH9K_INT_RXLP;
-       }
-       if (status & ATH9K_INT_TX) {
-@@ -543,6 +547,9 @@ void ath9k_tasklet(unsigned long data)
-       /* re-enable hardware interrupt */
-       ath9k_hw_enable_interrupts(ah);
-+      if (sc->intrstatus)
-+              tasklet_schedule(&sc->intr_tq);
-+
- out:
-       spin_unlock(&sc->sc_pcu_lock);
-       ath9k_ps_restore(sc);
-@@ -609,7 +616,7 @@ irqreturn_t ath_isr(int irq, void *dev)
-               return IRQ_NONE;
-       /* Cache the status */
--      sc->intrstatus = status;
-+      sc->intrstatus |= status;
-       if (status & SCHED_INTR)
-               sched = true;
 --- a/drivers/net/wireless/ath/ath9k/recv.c
 +++ b/drivers/net/wireless/ath/ath9k/recv.c
 @@ -34,7 +34,8 @@ static inline bool ath9k_check_auto_slee
@@ -4437,10 +4381,3 @@ Date:   Tue Apr 29 17:52:36 2014 +0200
                }
  
                if (!budget--)
-@@ -1135,5 +1137,5 @@ requeue:
-               ath9k_hw_set_interrupts(ah);
-       }
--      return 0;
-+      return !budget;
- }
index d4d2989f6b2cfab7d5481c5fc13ab289a0d1dfca..35643230b04279b741db7b8c30673c17ea8f0d4d 100644 (file)
@@ -14,7 +14,7 @@
  
  out:
        spin_unlock_bh(&sc->sc_pcu_lock);
-@@ -1411,6 +1415,7 @@ static int ath9k_config(struct ieee80211
+@@ -1404,6 +1408,7 @@ static int ath9k_config(struct ieee80211
                sc->config.txpowlimit = 2 * conf->power_level;
                ath9k_cmn_update_txpow(ah, sc->curtxpow,
                                       sc->config.txpowlimit, &sc->curtxpow);
index 2ea3fe08b9e015cc7bb21b049ff9627f2e3754b0..aaefa2f2d927c593ba003164bffcedb0d808e2d7 100644 (file)
@@ -21,7 +21,7 @@
        if (ant_gain > max_gain)
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1411,7 +1411,10 @@ static int ath9k_config(struct ieee80211
+@@ -1404,7 +1404,10 @@ static int ath9k_config(struct ieee80211
        }
  
        if (changed & IEEE80211_CONF_CHANGE_POWER) {
index 3db34bb8b93cb9b26c7c5971e111b7babc08a031..764e5e260eb7f6c02ffa1f6c3fa4a3784967f5a9 100644 (file)
                REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV, AR_BTCOEX_WL_LNADIV_FORCE_ON);
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -612,6 +612,11 @@ irqreturn_t ath_isr(int irq, void *dev)
+@@ -605,6 +605,11 @@ irqreturn_t ath_isr(int irq, void *dev)
        ath9k_debug_sync_cause(sc, sync_cause);
        status &= ah->imask;    /* discard unasked-for bits */