source: branches/backfire/package/mac80211/patches/550-ath9k_bb_fix.patch @ 20973

Last change on this file since 20973 was 20973, checked in by nbd, 6 years ago

ath9k: backport the rx stuck bugfix change from r20967

File size: 1.5 KB
  • drivers/net/wireless/ath/ath9k/hw.c

    a b static void ath9k_enable_rfkill(struct a 
    19111911        REG_SET_BIT(ah, AR_PHY_TEST, RFSILENT_BB); 
    19121912} 
    19131913 
     1914bool ath9k_hw_check_alive(struct ath_hw *ah) 
     1915{ 
     1916        int count = 50; 
     1917        u32 reg; 
     1918 
     1919        if (AR_SREV_9285_10_OR_LATER(ah)) 
     1920                return true; 
     1921 
     1922        do { 
     1923                reg = REG_READ(ah, AR_OBS_BUS_1); 
     1924 
     1925                if ((reg & 0x7E7FFFEF) == 0x00702400) 
     1926                        continue; 
     1927 
     1928                switch (reg & 0x7E000B00) { 
     1929                case 0x1E000000: 
     1930                case 0x52000B00: 
     1931                case 0x18000B00: 
     1932                        continue; 
     1933                default: 
     1934                        return true; 
     1935                } 
     1936        } while (count-- > 0); 
     1937 
     1938        return false; 
     1939} 
     1940EXPORT_SYMBOL(ath9k_hw_check_alive); 
     1941 
    19141942int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan, 
    19151943                    bool bChannelChange) 
    19161944{ 
  • drivers/net/wireless/ath/ath9k/hw.h

    a b void ath9k_hw_set11nmac2040(struct ath_h 
    679679void ath9k_hw_beaconinit(struct ath_hw *ah, u32 next_beacon, u32 beacon_period); 
    680680void ath9k_hw_set_sta_beacon_timers(struct ath_hw *ah, 
    681681                                    const struct ath9k_beacon_state *bs); 
     682bool ath9k_hw_check_alive(struct ath_hw *ah); 
    682683 
    683684bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode); 
    684685 
  • drivers/net/wireless/ath/ath9k/main.c

    a b void ath9k_tasklet(unsigned long data) 
    405405 
    406406        ath9k_ps_wakeup(sc); 
    407407 
    408         if (status & ATH9K_INT_FATAL) { 
     408        if ((status & ATH9K_INT_FATAL) || 
     409            !ath9k_hw_check_alive(ah)) { 
    409410                ath_reset(sc, false); 
    410411                ath9k_ps_restore(sc); 
    411412                return; 
Note: See TracBrowser for help on using the repository browser.