source: trunk/package/mac80211/patches/571-ath9k_reset_debug.patch @ 28245

Last change on this file since 28245 was 28245, checked in by nbd, 5 years ago

mac80211: update to wireless-testing 2011-09-14

File size: 3.8 KB
  • drivers/net/wireless/ath/ath9k/debug.h

    a b struct ath_buf; 
    2525 
    2626#ifdef CONFIG_ATH9K_DEBUGFS 
    2727#define TX_STAT_INC(q, c) sc->debug.stats.txstats[q].c++ 
     28#define RESET_STAT_INC(sc, type) sc->debug.stats.reset[type]++ 
    2829#else 
    2930#define TX_STAT_INC(q, c) do { } while (0) 
     31#define RESET_STAT_INC(sc, type) do { } while (0) 
    3032#endif 
    3133 
    3234#ifdef CONFIG_ATH9K_DEBUGFS 
    struct ath_rx_stats { 
    171173        u8 rs_antenna; 
    172174}; 
    173175 
     176enum ath_reset_type { 
     177        RESET_TYPE_BB_HANG, 
     178        RESET_TYPE_BB_WATCHDOG, 
     179        RESET_TYPE_FATAL_INT, 
     180        RESET_TYPE_TX_ERROR, 
     181        RESET_TYPE_TX_HANG, 
     182        RESET_TYPE_PLL_HANG, 
     183        __RESET_TYPE_MAX 
     184}; 
     185 
    174186struct ath_stats { 
    175187        struct ath_interrupt_stats istats; 
    176188        struct ath_tx_stats txstats[ATH9K_NUM_TX_QUEUES]; 
    177189        struct ath_rx_stats rxstats; 
     190        u32 reset[__RESET_TYPE_MAX]; 
    178191}; 
    179192 
    180193#define ATH_DBG_MAX_SAMPLES     10 
  • drivers/net/wireless/ath/ath9k/main.c

    a b void ath9k_tasklet(unsigned long data) 
    679679 
    680680        if ((status & ATH9K_INT_FATAL) || 
    681681            (status & ATH9K_INT_BB_WATCHDOG)) { 
     682                enum ath_reset_type type; 
     683 
     684                if (status & ATH9K_INT_FATAL) 
     685                        type = RESET_TYPE_FATAL_INT; 
     686                else 
     687                        type = RESET_TYPE_BB_WATCHDOG; 
     688 
     689                RESET_STAT_INC(sc, type); 
    682690                ieee80211_queue_work(sc->hw, &sc->hw_reset_work); 
    683691                goto out; 
    684692        } 
    void ath_hw_check(struct work_struct *wo 
    9951003        ath_dbg(common, ATH_DBG_RESET, "Possible baseband hang, " 
    9961004                "busy=%d (try %d)\n", busy, sc->hw_busy_count + 1); 
    9971005        if (busy >= 99) { 
    998                 if (++sc->hw_busy_count >= 3) 
     1006                if (++sc->hw_busy_count >= 3) { 
     1007                        RESET_STAT_INC(sc, RESET_TYPE_BB_HANG); 
    9991008                        ieee80211_queue_work(sc->hw, &sc->hw_reset_work); 
     1009                } 
    10001010 
    10011011        } else if (busy >= 0) 
    10021012                sc->hw_busy_count = 0; 
    static void ath_hw_pll_rx_hang_check(str 
    10161026                        /* Rx is hung for more than 500ms. Reset it */ 
    10171027                        ath_dbg(common, ATH_DBG_RESET, 
    10181028                                "Possible RX hang, resetting"); 
     1029                        RESET_STAT_INC(sc, RESET_TYPE_PLL_HANG); 
    10191030                        ieee80211_queue_work(sc->hw, &sc->hw_reset_work); 
    10201031                        count = 0; 
    10211032                } 
  • drivers/net/wireless/ath/ath9k/xmit.c

    a b static void ath_tx_complete_aggr(struct  
    587587 
    588588        rcu_read_unlock(); 
    589589 
    590         if (needreset) 
     590        if (needreset) { 
     591                RESET_STAT_INC(sc, RESET_TYPE_TX_ERROR); 
    591592                ieee80211_queue_work(sc->hw, &sc->hw_reset_work); 
     593        } 
    592594} 
    593595 
    594596static bool ath_lookup_legacy(struct ath_buf *bf) 
    static void ath_tx_complete_poll_work(st 
    22702272        if (needreset) { 
    22712273                ath_dbg(ath9k_hw_common(sc->sc_ah), ATH_DBG_RESET, 
    22722274                        "tx hung, resetting the chip\n"); 
     2275                RESET_STAT_INC(sc, RESET_TYPE_TX_HANG); 
    22732276                ieee80211_queue_work(sc->hw, &sc->hw_reset_work); 
    22742277        } 
    22752278 
  • drivers/net/wireless/ath/ath9k/debug.c

    a b static ssize_t read_file_wiphy(struct fi 
    523523        if (tmp & ATH9K_RX_FILTER_PHYRADAR) 
    524524                len += snprintf(buf + len, sizeof(buf) - len, " PHYRADAR"); 
    525525        if (tmp & ATH9K_RX_FILTER_MCAST_BCAST_ALL) 
    526                 len += snprintf(buf + len, sizeof(buf) - len, " MCAST_BCAST_ALL\n"); 
    527         else 
    528                 len += snprintf(buf + len, sizeof(buf) - len, "\n"); 
     526                len += snprintf(buf + len, sizeof(buf) - len, " MCAST_BCAST_ALL"); 
     527 
     528        len += snprintf(buf + len, sizeof(buf) - len, 
     529                       "\n\nReset causes:\n" 
     530                       "  baseband hang: %d\n" 
     531                       "  baseband watchdog: %d\n" 
     532                       "  fatal hardware error interrupt: %d\n" 
     533                       "  tx hardware error: %d\n" 
     534                       "  tx path hang: %d\n" 
     535                       "  pll rx hang: %d\n", 
     536                       sc->debug.stats.reset[RESET_TYPE_BB_HANG], 
     537                       sc->debug.stats.reset[RESET_TYPE_BB_WATCHDOG], 
     538                       sc->debug.stats.reset[RESET_TYPE_FATAL_INT], 
     539                       sc->debug.stats.reset[RESET_TYPE_TX_ERROR], 
     540                       sc->debug.stats.reset[RESET_TYPE_TX_HANG], 
     541                       sc->debug.stats.reset[RESET_TYPE_PLL_HANG]); 
    529542 
    530543        if (len > sizeof(buf)) 
    531544                len = sizeof(buf); 
Note: See TracBrowser for help on using the repository browser.