diff options
Diffstat (limited to 'drivers/net/wireless/ath5k/base.c')
-rw-r--r-- | drivers/net/wireless/ath5k/base.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c index 8862d245c82b..e18305b781c9 100644 --- a/drivers/net/wireless/ath5k/base.c +++ b/drivers/net/wireless/ath5k/base.c | |||
@@ -126,6 +126,7 @@ static struct ath5k_srev_name srev_names[] = { | |||
126 | { "5414", AR5K_VERSION_VER, AR5K_SREV_VER_AR5414 }, | 126 | { "5414", AR5K_VERSION_VER, AR5K_SREV_VER_AR5414 }, |
127 | { "5416", AR5K_VERSION_VER, AR5K_SREV_VER_AR5416 }, | 127 | { "5416", AR5K_VERSION_VER, AR5K_SREV_VER_AR5416 }, |
128 | { "5418", AR5K_VERSION_VER, AR5K_SREV_VER_AR5418 }, | 128 | { "5418", AR5K_VERSION_VER, AR5K_SREV_VER_AR5418 }, |
129 | { "2425", AR5K_VERSION_VER, AR5K_SREV_VER_AR2425 }, | ||
129 | { "xxxxx", AR5K_VERSION_VER, AR5K_SREV_UNKNOWN }, | 130 | { "xxxxx", AR5K_VERSION_VER, AR5K_SREV_UNKNOWN }, |
130 | { "5110", AR5K_VERSION_RAD, AR5K_SREV_RAD_5110 }, | 131 | { "5110", AR5K_VERSION_RAD, AR5K_SREV_RAD_5110 }, |
131 | { "5111", AR5K_VERSION_RAD, AR5K_SREV_RAD_5111 }, | 132 | { "5111", AR5K_VERSION_RAD, AR5K_SREV_RAD_5111 }, |
@@ -2341,7 +2342,8 @@ ath5k_init(struct ath5k_softc *sc) | |||
2341 | * Enable interrupts. | 2342 | * Enable interrupts. |
2342 | */ | 2343 | */ |
2343 | sc->imask = AR5K_INT_RX | AR5K_INT_TX | AR5K_INT_RXEOL | | 2344 | sc->imask = AR5K_INT_RX | AR5K_INT_TX | AR5K_INT_RXEOL | |
2344 | AR5K_INT_RXORN | AR5K_INT_FATAL | AR5K_INT_GLOBAL; | 2345 | AR5K_INT_RXORN | AR5K_INT_FATAL | AR5K_INT_GLOBAL | |
2346 | AR5K_INT_MIB; | ||
2345 | 2347 | ||
2346 | ath5k_hw_set_intr(sc->ah, sc->imask); | 2348 | ath5k_hw_set_intr(sc->ah, sc->imask); |
2347 | /* Set ack to be sent at low bit-rates */ | 2349 | /* Set ack to be sent at low bit-rates */ |
@@ -2521,7 +2523,11 @@ ath5k_intr(int irq, void *dev_id) | |||
2521 | if (status & AR5K_INT_BMISS) { | 2523 | if (status & AR5K_INT_BMISS) { |
2522 | } | 2524 | } |
2523 | if (status & AR5K_INT_MIB) { | 2525 | if (status & AR5K_INT_MIB) { |
2524 | /* TODO */ | 2526 | /* |
2527 | * These stats are also used for ANI i think | ||
2528 | * so how about updating them more often ? | ||
2529 | */ | ||
2530 | ath5k_hw_update_mib_counters(ah, &sc->ll_stats); | ||
2525 | } | 2531 | } |
2526 | } | 2532 | } |
2527 | } while (ath5k_hw_is_intr_pending(ah) && counter-- > 0); | 2533 | } while (ath5k_hw_is_intr_pending(ah) && counter-- > 0); |
@@ -3014,6 +3020,10 @@ ath5k_get_stats(struct ieee80211_hw *hw, | |||
3014 | struct ieee80211_low_level_stats *stats) | 3020 | struct ieee80211_low_level_stats *stats) |
3015 | { | 3021 | { |
3016 | struct ath5k_softc *sc = hw->priv; | 3022 | struct ath5k_softc *sc = hw->priv; |
3023 | struct ath5k_hw *ah = sc->ah; | ||
3024 | |||
3025 | /* Force update */ | ||
3026 | ath5k_hw_update_mib_counters(ah, &sc->ll_stats); | ||
3017 | 3027 | ||
3018 | memcpy(stats, &sc->ll_stats, sizeof(sc->ll_stats)); | 3028 | memcpy(stats, &sc->ll_stats, sizeof(sc->ll_stats)); |
3019 | 3029 | ||