diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/main.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index b1dcf89138d3..173a889f9dbb 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
@@ -508,6 +508,9 @@ void ath9k_tasklet(unsigned long data) | |||
508 | wake_up(&sc->tx_wait); | 508 | wake_up(&sc->tx_wait); |
509 | } | 509 | } |
510 | 510 | ||
511 | if (status & ATH9K_INT_GENTIMER) | ||
512 | ath_gen_timer_isr(sc->sc_ah); | ||
513 | |||
511 | ath9k_btcoex_handle_interrupt(sc, status); | 514 | ath9k_btcoex_handle_interrupt(sc, status); |
512 | 515 | ||
513 | /* re-enable hardware interrupt */ | 516 | /* re-enable hardware interrupt */ |
@@ -538,6 +541,7 @@ irqreturn_t ath_isr(int irq, void *dev) | |||
538 | struct ath_hw *ah = sc->sc_ah; | 541 | struct ath_hw *ah = sc->sc_ah; |
539 | struct ath_common *common = ath9k_hw_common(ah); | 542 | struct ath_common *common = ath9k_hw_common(ah); |
540 | enum ath9k_int status; | 543 | enum ath9k_int status; |
544 | u32 sync_cause; | ||
541 | bool sched = false; | 545 | bool sched = false; |
542 | 546 | ||
543 | /* | 547 | /* |
@@ -564,7 +568,8 @@ irqreturn_t ath_isr(int irq, void *dev) | |||
564 | * bits we haven't explicitly enabled so we mask the | 568 | * bits we haven't explicitly enabled so we mask the |
565 | * value to insure we only process bits we requested. | 569 | * value to insure we only process bits we requested. |
566 | */ | 570 | */ |
567 | ath9k_hw_getisr(ah, &status); /* NB: clears ISR too */ | 571 | ath9k_hw_getisr(ah, &status, &sync_cause); /* NB: clears ISR too */ |
572 | ath9k_debug_sync_cause(sc, sync_cause); | ||
568 | status &= ah->imask; /* discard unasked-for bits */ | 573 | status &= ah->imask; /* discard unasked-for bits */ |
569 | 574 | ||
570 | /* | 575 | /* |
@@ -757,6 +762,8 @@ static int ath9k_start(struct ieee80211_hw *hw) | |||
757 | */ | 762 | */ |
758 | ath9k_cmn_init_crypto(sc->sc_ah); | 763 | ath9k_cmn_init_crypto(sc->sc_ah); |
759 | 764 | ||
765 | ath9k_hw_reset_tsf(ah); | ||
766 | |||
760 | spin_unlock_bh(&sc->sc_pcu_lock); | 767 | spin_unlock_bh(&sc->sc_pcu_lock); |
761 | 768 | ||
762 | mutex_unlock(&sc->mutex); | 769 | mutex_unlock(&sc->mutex); |
@@ -1657,13 +1664,8 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw, | |||
1657 | } | 1664 | } |
1658 | 1665 | ||
1659 | if ((changed & BSS_CHANGED_BEACON_ENABLED) || | 1666 | if ((changed & BSS_CHANGED_BEACON_ENABLED) || |
1660 | (changed & BSS_CHANGED_BEACON_INT)) { | 1667 | (changed & BSS_CHANGED_BEACON_INT)) |
1661 | if (ah->opmode == NL80211_IFTYPE_AP && | 1668 | ath9k_beacon_config(sc, vif, changed); |
1662 | bss_conf->enable_beacon) | ||
1663 | ath9k_set_tsfadjust(sc, vif); | ||
1664 | if (ath9k_allow_beacon_config(sc, vif)) | ||
1665 | ath9k_beacon_config(sc, vif, changed); | ||
1666 | } | ||
1667 | 1669 | ||
1668 | if (changed & BSS_CHANGED_ERP_SLOT) { | 1670 | if (changed & BSS_CHANGED_ERP_SLOT) { |
1669 | if (bss_conf->use_short_slot) | 1671 | if (bss_conf->use_short_slot) |