Changeset 35147


Ignore:
Timestamp:
2013-01-14T10:51:53+01:00 (5 years ago)
Author:
nbd
Message:

ath9k: remove a lock to fix a deadlock on hw reset

Location:
trunk/package/mac80211/patches
Files:
4 edited

Legend:

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

    r35145 r35147  
    238238--- a/drivers/net/wireless/ath/ath9k/ath9k.h 
    239239+++ b/drivers/net/wireless/ath/ath9k/ath9k.h 
    240 @@ -324,7 +324,6 @@ struct ath_rx { 
     240@@ -314,7 +314,6 @@ struct ath_rx { 
     241        u32 *rxlink; 
     242        u32 num_pkts; 
     243        unsigned int rxfilter; 
     244-       spinlock_t rxbuflock; 
     245        struct list_head rxbuf; 
     246        struct ath_descdma rxdma; 
     247        struct ath_rx_edma rx_edma[ATH9K_RX_QUEUE_MAX]; 
     248@@ -324,7 +323,6 @@ struct ath_rx { 
    241249  
    242250 int ath_startrecv(struct ath_softc *sc); 
     
    246254 int ath_rx_init(struct ath_softc *sc, int nbufs); 
    247255 void ath_rx_cleanup(struct ath_softc *sc); 
    248 @@ -641,7 +640,6 @@ void ath_ant_comb_update(struct ath_soft 
     256@@ -641,7 +639,6 @@ void ath_ant_comb_update(struct ath_soft 
    249257 enum sc_op_flags { 
    250258        SC_OP_INVALID, 
     
    366374--- a/drivers/net/wireless/ath/ath9k/recv.c 
    367375+++ b/drivers/net/wireless/ath/ath9k/recv.c 
    368 @@ -280,7 +280,6 @@ int ath_rx_init(struct ath_softc *sc, in 
     376@@ -248,8 +248,6 @@ rx_init_fail: 
     377  
     378 static void ath_edma_start_recv(struct ath_softc *sc) 
     379 { 
     380-       spin_lock_bh(&sc->rx.rxbuflock); 
     381- 
     382        ath9k_hw_rxena(sc->sc_ah); 
     383  
     384        ath_rx_addbuffer_edma(sc, ATH9K_RX_QUEUE_HP, 
     385@@ -261,8 +259,6 @@ static void ath_edma_start_recv(struct a 
     386        ath_opmode_init(sc); 
     387  
     388        ath9k_hw_startpcureceive(sc->sc_ah, !!(sc->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)); 
     389- 
     390-       spin_unlock_bh(&sc->rx.rxbuflock); 
     391 } 
     392  
     393 static void ath_edma_stop_recv(struct ath_softc *sc) 
     394@@ -279,8 +275,6 @@ int ath_rx_init(struct ath_softc *sc, in 
     395        int error = 0; 
    369396  
    370397        spin_lock_init(&sc->sc_pcu_lock); 
    371         spin_lock_init(&sc->rx.rxbuflock); 
     398-       spin_lock_init(&sc->rx.rxbuflock); 
    372399-       clear_bit(SC_OP_RXFLUSH, &sc->sc_flags); 
    373400  
    374401        common->rx_bufsize = IEEE80211_MAX_MPDU_LEN / 2 + 
    375402                             sc->sc_ah->caps.rx_status_len; 
    376 @@ -464,6 +463,13 @@ start_recv: 
     403@@ -438,7 +432,6 @@ int ath_startrecv(struct ath_softc *sc) 
     404                return 0; 
     405        } 
     406  
     407-       spin_lock_bh(&sc->rx.rxbuflock); 
     408        if (list_empty(&sc->rx.rxbuf)) 
     409                goto start_recv; 
     410  
     411@@ -459,26 +452,31 @@ start_recv: 
     412        ath_opmode_init(sc); 
     413        ath9k_hw_startpcureceive(ah, !!(sc->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)); 
     414  
     415-       spin_unlock_bh(&sc->rx.rxbuflock); 
     416- 
    377417        return 0; 
    378418 } 
     
    388428 { 
    389429        struct ath_hw *ah = sc->sc_ah; 
    390 @@ -474,6 +480,8 @@ bool ath_stoprecv(struct ath_softc *sc) 
     430        bool stopped, reset = false; 
     431  
     432-       spin_lock_bh(&sc->rx.rxbuflock); 
     433        ath9k_hw_abortpcurecv(ah); 
    391434        ath9k_hw_setrxfilter(ah, 0); 
    392435        stopped = ath9k_hw_stopdmarecv(ah, &reset); 
     
    397440                ath_edma_stop_recv(sc); 
    398441        else 
    399 @@ -490,15 +498,6 @@ bool ath_stoprecv(struct ath_softc *sc) 
     442                sc->rx.rxlink = NULL; 
     443-       spin_unlock_bh(&sc->rx.rxbuflock); 
     444  
     445        if (!(ah->ah_flags & AH_UNPLUGGED) && 
     446            unlikely(!stopped)) { 
     447@@ -490,15 +488,6 @@ bool ath_stoprecv(struct ath_softc *sc) 
    400448        return stopped && !reset; 
    401449 } 
     
    413461 { 
    414462        /* Check whether the Beacon frame has DTIM indicating buffered bc/mc */ 
    415 @@ -735,6 +734,7 @@ static struct ath_buf *ath_get_next_rx_b 
     463@@ -735,6 +724,7 @@ static struct ath_buf *ath_get_next_rx_b 
    416464                        return NULL; 
    417465        } 
     
    421469                return bf; 
    422470  
    423 @@ -1057,9 +1057,6 @@ int ath_rx_tasklet(struct ath_softc *sc, 
     471@@ -1050,16 +1040,12 @@ int ath_rx_tasklet(struct ath_softc *sc, 
     472                dma_type = DMA_FROM_DEVICE; 
     473  
     474        qtype = hp ? ATH9K_RX_QUEUE_HP : ATH9K_RX_QUEUE_LP; 
     475-       spin_lock_bh(&sc->rx.rxbuflock); 
     476  
     477        tsf = ath9k_hw_gettsf64(ah); 
     478        tsf_lower = tsf & 0xffffffff; 
    424479  
    425480        do { 
     
    431486                memset(&rs, 0, sizeof(rs)); 
    432487                if (edma) 
    433 @@ -1102,15 +1099,6 @@ int ath_rx_tasklet(struct ath_softc *sc, 
     488@@ -1102,15 +1088,6 @@ int ath_rx_tasklet(struct ath_softc *sc, 
    434489  
    435490                ath_debug_stat_rx(sc, &rs); 
     
    447502  
    448503                rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; 
    449 @@ -1245,14 +1233,15 @@ requeue_drop_frag: 
     504@@ -1245,19 +1222,18 @@ requeue_drop_frag: 
    450505                        sc->rx.frag = NULL; 
    451506                } 
     
    467522        } while (1); 
    468523  
     524-       spin_unlock_bh(&sc->rx.rxbuflock); 
     525- 
     526        if (!(ah->imask & ATH9K_INT_RXEOL)) { 
     527                ah->imask |= (ATH9K_INT_RXEOL | ATH9K_INT_RXORN); 
     528                ath9k_hw_set_interrupts(ah); 
    469529--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c 
    470530+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c 
  • trunk/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch

    r35066 r35147  
    11--- a/drivers/net/wireless/ath/ath9k/ath9k.h 
    22+++ b/drivers/net/wireless/ath/ath9k/ath9k.h 
    3 @@ -672,6 +672,7 @@ struct ath_softc { 
     3@@ -671,6 +671,7 @@ struct ath_softc { 
    44        struct ieee80211_hw *hw; 
    55        struct device *dev; 
     
    99        struct survey_info survey[ATH9K_NUM_CHANNELS]; 
    1010  
    11 @@ -744,6 +745,7 @@ struct ath_softc { 
     11@@ -743,6 +744,7 @@ struct ath_softc { 
    1212 #endif 
    1313 }; 
  • trunk/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch

    r35066 r35147  
    136136--- a/drivers/net/wireless/ath/ath9k/recv.c 
    137137+++ b/drivers/net/wireless/ath/ath9k/recv.c 
    138 @@ -946,6 +946,7 @@ static int ath9k_rx_skb_preprocess(struc 
     138@@ -936,6 +936,7 @@ static int ath9k_rx_skb_preprocess(struc 
    139139                                   bool *decrypt_error) 
    140140 { 
     
    144144        /* 
    145145         * everything but the rate is checked here, the rate check is done 
    146 @@ -971,6 +972,20 @@ static int ath9k_rx_skb_preprocess(struc 
     146@@ -961,6 +962,20 @@ static int ath9k_rx_skb_preprocess(struc 
    147147        if (rx_stats->rs_moreaggr) 
    148148                rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL; 
  • trunk/package/mac80211/patches/530-ath9k_extra_leds.patch

    r35066 r35147  
    11--- a/drivers/net/wireless/ath/ath9k/ath9k.h 
    22+++ b/drivers/net/wireless/ath/ath9k/ath9k.h 
    3 @@ -550,6 +550,9 @@ struct ath9k_wow_pattern { 
     3@@ -549,6 +549,9 @@ struct ath9k_wow_pattern { 
    44 void ath_init_leds(struct ath_softc *sc); 
    55 void ath_deinit_leds(struct ath_softc *sc); 
     
    1111 static inline void ath_init_leds(struct ath_softc *sc) 
    1212 { 
    13 @@ -668,6 +671,13 @@ struct ath9k_vif_iter_data { 
     13@@ -667,6 +670,13 @@ struct ath9k_vif_iter_data { 
    1414        int nadhocs;   /* number of adhoc vifs */ 
    1515 }; 
     
    2525        struct ieee80211_hw *hw; 
    2626        struct device *dev; 
    27 @@ -709,9 +719,8 @@ struct ath_softc { 
     27@@ -708,9 +718,8 @@ struct ath_softc { 
    2828        struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS]; 
    2929  
Note: See TracChangeset for help on using the changeset viewer.