Changeset 35153


Ignore:
Timestamp:
2013-01-14T16:59:28+01:00 (5 years ago)
Author:
nbd
Message:

ath9k: fix a soft lockup on smp systems

Backport of r35152

Location:
branches/attitude_adjustment/package/mac80211/patches
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/attitude_adjustment/package/mac80211/patches/300-pending_work.patch

    r35148 r35153  
    12701270        struct ath_hw *ah = sc->sc_ah; 
    12711271        bool ret = true; 
    1272 @@ -195,19 +195,15 @@ static bool ath_prepare_reset(struct ath 
    1273         ath9k_debug_samp_bb_mac(sc); 
    1274         ath9k_hw_disable_interrupts(ah); 
    1275   
    1276 +       tasklet_disable(&sc->intr_tq); 
    1277 + 
    1278         if (!ath_stoprecv(sc)) 
    1279                 ret = false; 
    1280   
     1272@@ -201,14 +201,6 @@ static bool ath_prepare_reset(struct ath 
    12811273        if (!ath_drain_all_txq(sc, retry_tx)) 
    12821274                ret = false; 
     
    12891281-               ath_flushrecv(sc); 
    12901282-       } 
    1291 +       tasklet_enable(&sc->intr_tq); 
    1292   
     1283- 
    12931284        return ret; 
    12941285 } 
    1295 @@ -261,7 +257,6 @@ static int ath_reset_internal(struct ath 
     1286  
     1287@@ -261,11 +253,11 @@ static int ath_reset_internal(struct ath 
    12961288        struct ath_common *common = ath9k_hw_common(ah); 
    12971289        struct ath9k_hw_cal_data *caldata = NULL; 
     
    13011293  
    13021294        __ath_cancel_work(sc); 
    1303 @@ -275,11 +270,10 @@ static int ath_reset_internal(struct ath 
     1295  
     1296+       tasklet_disable(&sc->intr_tq); 
     1297        spin_lock_bh(&sc->sc_pcu_lock); 
     1298  
     1299        if (!(sc->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)) { 
     1300@@ -275,11 +267,10 @@ static int ath_reset_internal(struct ath 
    13041301  
    13051302        if (!hchan) { 
     
    13141311  
    13151312        ath_dbg(common, CONFIG, "Reset to %u MHz, HT40: %d fastcc: %d\n", 
    1316 @@ -821,7 +815,7 @@ static void ath9k_stop(struct ieee80211_ 
     1313@@ -297,6 +288,8 @@ static int ath_reset_internal(struct ath 
     1314  
     1315 out: 
     1316        spin_unlock_bh(&sc->sc_pcu_lock); 
     1317+       tasklet_enable(&sc->intr_tq); 
     1318+ 
     1319        return r; 
     1320 } 
     1321  
     1322@@ -821,7 +814,7 @@ static void ath9k_stop(struct ieee80211_ 
    13171323                ath9k_hw_cfg_gpio_input(ah, ah->led_pin); 
    13181324        } 
  • branches/attitude_adjustment/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch

    r35148 r35153  
    8181--- a/drivers/net/wireless/ath/ath9k/main.c 
    8282+++ b/drivers/net/wireless/ath/ath9k/main.c 
    83 @@ -1121,7 +1121,7 @@ static void ath9k_disable_ps(struct ath_ 
     83@@ -1120,7 +1120,7 @@ static void ath9k_disable_ps(struct ath_ 
    8484        ath_dbg(common, PS, "PowerSave disabled\n"); 
    8585 } 
     
    9090        struct ath_softc *sc = hw->priv; 
    9191        struct ath_hw *ah = sc->sc_ah; 
    92 @@ -1175,9 +1175,11 @@ static int ath9k_config(struct ieee80211 
     92@@ -1174,9 +1174,11 @@ static int ath9k_config(struct ieee80211 
    9393  
    9494        if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) { 
     
    102102                if (ah->curchan) 
    103103                        old_pos = ah->curchan - &ah->channels[0]; 
    104 @@ -1220,7 +1222,23 @@ static int ath9k_config(struct ieee80211 
     104@@ -1219,7 +1221,23 @@ static int ath9k_config(struct ieee80211 
    105105                        memset(&sc->survey[pos], 0, sizeof(struct survey_info)); 
    106106                } 
  • branches/attitude_adjustment/package/mac80211/patches/521-ath9k_cur_txpower.patch

    r35064 r35153  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -1245,6 +1245,8 @@ int ath9k_config(struct ieee80211_hw *hw 
     3@@ -1244,6 +1244,8 @@ int ath9k_config(struct ieee80211_hw *hw 
    44                        return -EINVAL; 
    55                } 
     
    1010                 * The most recent snapshot of channel->noisefloor for the old 
    1111                 * channel is only available after the hardware reset. Copy it to 
    12 @@ -1259,6 +1261,7 @@ int ath9k_config(struct ieee80211_hw *hw 
     12@@ -1258,6 +1260,7 @@ int ath9k_config(struct ieee80211_hw *hw 
    1313                sc->config.txpowlimit = 2 * conf->power_level; 
    1414                ath9k_cmn_update_txpow(ah, sc->curtxpow, 
  • branches/attitude_adjustment/package/mac80211/patches/525-ath9k_use_configured_antenna_gain.patch

    r35064 r35153  
    2222--- a/drivers/net/wireless/ath/ath9k/main.c 
    2323+++ b/drivers/net/wireless/ath/ath9k/main.c 
    24 @@ -1257,7 +1257,10 @@ int ath9k_config(struct ieee80211_hw *hw 
     24@@ -1256,7 +1256,10 @@ int ath9k_config(struct ieee80211_hw *hw 
    2525        } 
    2626  
  • branches/attitude_adjustment/package/mac80211/patches/562-ath9k_add_idle_hack.patch

    r35064 r35153  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -1081,6 +1081,7 @@ static void ath9k_remove_interface(struc 
     3@@ -1080,6 +1080,7 @@ static void ath9k_remove_interface(struc 
    44        ath9k_calculate_summary_state(hw, NULL); 
    55  
     
    99 } 
    1010  
    11 @@ -1133,7 +1134,8 @@ int ath9k_config(struct ieee80211_hw *hw 
     11@@ -1132,7 +1133,8 @@ int ath9k_config(struct ieee80211_hw *hw 
    1212        mutex_lock(&sc->mutex); 
    1313  
  • branches/attitude_adjustment/package/mac80211/patches/564-ath9k_debugfs_diag.patch

    r35064 r35153  
    126126--- a/drivers/net/wireless/ath/ath9k/main.c 
    127127+++ b/drivers/net/wireless/ath/ath9k/main.c 
    128 @@ -470,6 +470,11 @@ irqreturn_t ath_isr(int irq, void *dev) 
     128@@ -469,6 +469,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 */ 
  • branches/attitude_adjustment/package/mac80211/patches/566-ath9k_use_ieee80211_free_txskb.patch

    r35064 r35153  
    128128--- a/drivers/net/wireless/ath/ath9k/main.c 
    129129+++ b/drivers/net/wireless/ath/ath9k/main.c 
    130 @@ -769,7 +769,7 @@ static void ath9k_tx(struct ieee80211_hw 
     130@@ -768,7 +768,7 @@ static void ath9k_tx(struct ieee80211_hw 
    131131  
    132132        return; 
Note: See TracChangeset for help on using the changeset viewer.