Changeset 38304


Ignore:
Timestamp:
2013-10-05T14:12:21+02:00 (4 years ago)
Author:
nbd
Message:

ath9k: fix tx queueing issues after background scans

Signed-off-by: Felix Fietkau <nbd@…>

Location:
trunk/package/kernel/mac80211/patches
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/kernel/mac80211/patches/300-pending_work.patch

    r38257 r38304  
    15201520                                     msecs_to_jiffies(ATH_PLL_WORK_INTERVAL)); 
    15211521  
    1522 @@ -238,9 +237,6 @@ static bool ath_complete_reset(struct at 
     1522@@ -209,6 +208,7 @@ static bool ath_complete_reset(struct at 
     1523        struct ath_hw *ah = sc->sc_ah; 
     1524        struct ath_common *common = ath9k_hw_common(ah); 
     1525        unsigned long flags; 
     1526+       int i; 
     1527  
     1528        if (ath_startrecv(sc) != 0) { 
     1529                ath_err(common, "Unable to restart recv logic\n"); 
     1530@@ -236,10 +236,16 @@ static bool ath_complete_reset(struct at 
     1531                } 
     1532        work: 
    15231533                ath_restart_work(sc); 
    1524         } 
     1534-       } 
    15251535  
    15261536-       if ((ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) && sc->ant_rx != 3) 
    15271537-               ath_ant_comb_update(sc); 
    1528 - 
     1538+               for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { 
     1539+                       if (!ATH_TXQ_SETUP(sc, i)) 
     1540+                               continue; 
     1541+ 
     1542+                       spin_lock_bh(&sc->tx.txq[i].axq_lock); 
     1543+                       ath_txq_schedule(sc, &sc->tx.txq[i]); 
     1544+                       spin_unlock_bh(&sc->tx.txq[i].axq_lock); 
     1545+               } 
     1546+       } 
     1547  
    15291548        ieee80211_wake_queues(sc->hw); 
    15301549  
    1531         return true; 
    1532 @@ -966,6 +962,8 @@ static int ath9k_add_interface(struct ie 
     1550@@ -543,21 +549,10 @@ chip_reset: 
     1551  
     1552 static int ath_reset(struct ath_softc *sc) 
     1553 { 
     1554-       int i, r; 
     1555+       int r; 
     1556  
     1557        ath9k_ps_wakeup(sc); 
     1558- 
     1559        r = ath_reset_internal(sc, NULL); 
     1560- 
     1561-       for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { 
     1562-               if (!ATH_TXQ_SETUP(sc, i)) 
     1563-                       continue; 
     1564- 
     1565-               spin_lock_bh(&sc->tx.txq[i].axq_lock); 
     1566-               ath_txq_schedule(sc, &sc->tx.txq[i]); 
     1567-               spin_unlock_bh(&sc->tx.txq[i].axq_lock); 
     1568-       } 
     1569- 
     1570        ath9k_ps_restore(sc); 
     1571  
     1572        return r; 
     1573@@ -966,6 +961,8 @@ static int ath9k_add_interface(struct ie 
    15331574        struct ath_softc *sc = hw->priv; 
    15341575        struct ath_hw *ah = sc->sc_ah; 
     
    15391580        mutex_lock(&sc->mutex); 
    15401581  
    1541 @@ -979,6 +977,12 @@ static int ath9k_add_interface(struct ie 
     1582@@ -979,6 +976,12 @@ static int ath9k_add_interface(struct ie 
    15421583        if (ath9k_uses_beacons(vif->type)) 
    15431584                ath9k_beacon_assign_slot(sc, vif); 
     
    15521593        return 0; 
    15531594 } 
    1554 @@ -1016,6 +1020,7 @@ static void ath9k_remove_interface(struc 
     1595@@ -1016,6 +1019,7 @@ static void ath9k_remove_interface(struc 
    15551596 { 
    15561597        struct ath_softc *sc = hw->priv; 
     
    15601601        ath_dbg(common, CONFIG, "Detach Interface\n"); 
    15611602  
    1562 @@ -1030,6 +1035,8 @@ static void ath9k_remove_interface(struc 
     1603@@ -1030,6 +1034,8 @@ static void ath9k_remove_interface(struc 
    15631604        ath9k_calculate_summary_state(hw, NULL); 
    15641605        ath9k_ps_restore(sc); 
     
    15691610 } 
    15701611  
    1571 @@ -1193,8 +1200,6 @@ static int ath9k_config(struct ieee80211 
     1612@@ -1193,8 +1199,6 @@ static int ath9k_config(struct ieee80211 
    15721613  
    15731614        if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) { 
     
    15781619                int old_pos = -1; 
    15791620                unsigned long flags; 
    1580 @@ -1202,8 +1207,8 @@ static int ath9k_config(struct ieee80211 
     1621@@ -1202,8 +1206,8 @@ static int ath9k_config(struct ieee80211 
    15811622                if (ah->curchan) 
    15821623                        old_pos = ah->curchan - &ah->channels[0]; 
     
    15891630                /* update survey stats for the old channel before switching */ 
    15901631                spin_lock_irqsave(&common->cc_lock, flags); 
    1591 @@ -1211,7 +1216,7 @@ static int ath9k_config(struct ieee80211 
     1632@@ -1211,7 +1215,7 @@ static int ath9k_config(struct ieee80211 
    15921633                spin_unlock_irqrestore(&common->cc_lock, flags); 
    15931634  
     
    15981639                /* 
    15991640                 * If the operating channel changes, change the survey in-use flags 
    1600 @@ -1374,9 +1379,6 @@ static void ath9k_sta_notify(struct ieee 
     1641@@ -1374,9 +1378,6 @@ static void ath9k_sta_notify(struct ieee 
    16011642        struct ath_softc *sc = hw->priv; 
    16021643        struct ath_node *an = (struct ath_node *) sta->drv_priv; 
     
    16081649        case STA_NOTIFY_SLEEP: 
    16091650                an->sleeping = true; 
    1610 @@ -2094,7 +2096,7 @@ static void ath9k_wow_add_pattern(struct 
     1651@@ -2094,7 +2095,7 @@ static void ath9k_wow_add_pattern(struct 
    16111652 { 
    16121653        struct ath_hw *ah = sc->sc_ah; 
  • trunk/package/kernel/mac80211/patches/512-ath9k_channelbw_debugfs.patch

    r37919 r38304  
    7373--- a/drivers/net/wireless/ath/ath9k/main.c 
    7474+++ b/drivers/net/wireless/ath/ath9k/main.c 
    75 @@ -1200,8 +1200,10 @@ static int ath9k_config(struct ieee80211 
     75@@ -1199,8 +1199,10 @@ static int ath9k_config(struct ieee80211 
    7676  
    7777        if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) { 
     
    8484  
    8585                if (ah->curchan) 
    86 @@ -1238,7 +1240,23 @@ static int ath9k_config(struct ieee80211 
     86@@ -1237,7 +1239,23 @@ static int ath9k_config(struct ieee80211 
    8787                        memset(&sc->survey[pos], 0, sizeof(struct survey_info)); 
    8888                } 
  • trunk/package/kernel/mac80211/patches/521-ath9k_cur_txpower.patch

    r37919 r38304  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -286,8 +286,12 @@ static int ath_reset_internal(struct ath 
     3@@ -296,8 +296,12 @@ static int ath_reset_internal(struct ath 
    44            (sc->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)) 
    55                ath9k_mci_set_txpower(sc, true, false); 
     
    1515 out: 
    1616        spin_unlock_bh(&sc->sc_pcu_lock); 
    17 @@ -1299,6 +1303,7 @@ static int ath9k_config(struct ieee80211 
     17@@ -1298,6 +1302,7 @@ static int ath9k_config(struct ieee80211 
    1818                sc->config.txpowlimit = 2 * conf->power_level; 
    1919                ath9k_cmn_update_txpow(ah, sc->curtxpow, 
  • trunk/package/kernel/mac80211/patches/524-ath9k_use_configured_antenna_gain.patch

    r37919 r38304  
    2222--- a/drivers/net/wireless/ath/ath9k/main.c 
    2323+++ b/drivers/net/wireless/ath/ath9k/main.c 
    24 @@ -1299,7 +1299,10 @@ static int ath9k_config(struct ieee80211 
     24@@ -1298,7 +1298,10 @@ static int ath9k_config(struct ieee80211 
    2525        } 
    2626  
  • trunk/package/kernel/mac80211/patches/542-ath9k_debugfs_diag.patch

    r37919 r38304  
    126126--- a/drivers/net/wireless/ath/ath9k/main.c 
    127127+++ b/drivers/net/wireless/ath/ath9k/main.c 
    128 @@ -462,6 +462,11 @@ irqreturn_t ath_isr(int irq, void *dev) 
     128@@ -472,6 +472,11 @@ irqreturn_t ath_isr(int irq, void *dev) 
    129129        ath9k_hw_getisr(ah, &status);   /* NB: clears ISR too */ 
    130130        status &= ah->imask;    /* discard unasked-for bits */ 
Note: See TracChangeset for help on using the changeset viewer.