diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/ath/ath5k/ath5k.h | 12 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath5k/phy.c | 3 |
3 files changed, 10 insertions, 16 deletions
diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h index a3019ee4f2fa..d84ccde11171 100644 --- a/drivers/net/wireless/ath/ath5k/ath5k.h +++ b/drivers/net/wireless/ath/ath5k/ath5k.h | |||
@@ -890,10 +890,10 @@ enum ath5k_int { | |||
890 | AR5K_INT_NOCARD = 0xffffffff | 890 | AR5K_INT_NOCARD = 0xffffffff |
891 | }; | 891 | }; |
892 | 892 | ||
893 | /* Software interrupts used for calibration */ | 893 | /* mask which calibration is active at the moment */ |
894 | enum ath5k_software_interrupt { | 894 | enum ath5k_calibration_mask { |
895 | AR5K_SWI_FULL_CALIBRATION = 0x01, | 895 | AR5K_CALIBRATION_FULL = 0x01, |
896 | AR5K_SWI_SHORT_CALIBRATION = 0x02, | 896 | AR5K_CALIBRATION_SHORT = 0x02, |
897 | }; | 897 | }; |
898 | 898 | ||
899 | /* | 899 | /* |
@@ -1102,8 +1102,8 @@ struct ath5k_hw { | |||
1102 | /* Calibration timestamp */ | 1102 | /* Calibration timestamp */ |
1103 | unsigned long ah_cal_tstamp; | 1103 | unsigned long ah_cal_tstamp; |
1104 | 1104 | ||
1105 | /* Software interrupt mask */ | 1105 | /* Calibration mask */ |
1106 | u8 ah_swi_mask; | 1106 | u8 ah_cal_mask; |
1107 | 1107 | ||
1108 | /* | 1108 | /* |
1109 | * Function pointers | 1109 | * Function pointers |
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 39d580017259..539a6d5415fd 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
@@ -2507,7 +2507,7 @@ ath5k_init(struct ath5k_softc *sc) | |||
2507 | sc->curband = &sc->sbands[sc->curchan->band]; | 2507 | sc->curband = &sc->sbands[sc->curchan->band]; |
2508 | sc->imask = AR5K_INT_RXOK | AR5K_INT_RXERR | AR5K_INT_RXEOL | | 2508 | sc->imask = AR5K_INT_RXOK | AR5K_INT_RXERR | AR5K_INT_RXEOL | |
2509 | AR5K_INT_RXORN | AR5K_INT_TXDESC | AR5K_INT_TXEOL | | 2509 | AR5K_INT_RXORN | AR5K_INT_TXDESC | AR5K_INT_TXEOL | |
2510 | AR5K_INT_FATAL | AR5K_INT_GLOBAL | AR5K_INT_SWI; | 2510 | AR5K_INT_FATAL | AR5K_INT_GLOBAL; |
2511 | ret = ath5k_reset(sc, NULL); | 2511 | ret = ath5k_reset(sc, NULL); |
2512 | if (ret) | 2512 | if (ret) |
2513 | goto done; | 2513 | goto done; |
@@ -2673,9 +2673,6 @@ ath5k_intr(int irq, void *dev_id) | |||
2673 | if (status & AR5K_INT_BMISS) { | 2673 | if (status & AR5K_INT_BMISS) { |
2674 | /* TODO */ | 2674 | /* TODO */ |
2675 | } | 2675 | } |
2676 | if (status & AR5K_INT_SWI) { | ||
2677 | tasklet_schedule(&sc->calib); | ||
2678 | } | ||
2679 | if (status & AR5K_INT_MIB) { | 2676 | if (status & AR5K_INT_MIB) { |
2680 | /* | 2677 | /* |
2681 | * These stats are also used for ANI i think | 2678 | * These stats are also used for ANI i think |
@@ -2716,8 +2713,7 @@ ath5k_tasklet_calibrate(unsigned long data) | |||
2716 | struct ath5k_hw *ah = sc->ah; | 2713 | struct ath5k_hw *ah = sc->ah; |
2717 | 2714 | ||
2718 | /* Only full calibration for now */ | 2715 | /* Only full calibration for now */ |
2719 | if (ah->ah_swi_mask != AR5K_SWI_FULL_CALIBRATION) | 2716 | ah->ah_cal_mask |= AR5K_CALIBRATION_FULL; |
2720 | return; | ||
2721 | 2717 | ||
2722 | /* Stop queues so that calibration | 2718 | /* Stop queues so that calibration |
2723 | * doesn't interfere with tx */ | 2719 | * doesn't interfere with tx */ |
@@ -2740,11 +2736,10 @@ ath5k_tasklet_calibrate(unsigned long data) | |||
2740 | ieee80211_frequency_to_channel( | 2736 | ieee80211_frequency_to_channel( |
2741 | sc->curchan->center_freq)); | 2737 | sc->curchan->center_freq)); |
2742 | 2738 | ||
2743 | ah->ah_swi_mask = 0; | ||
2744 | |||
2745 | /* Wake queues */ | 2739 | /* Wake queues */ |
2746 | ieee80211_wake_queues(sc->hw); | 2740 | ieee80211_wake_queues(sc->hw); |
2747 | 2741 | ||
2742 | ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL; | ||
2748 | } | 2743 | } |
2749 | 2744 | ||
2750 | 2745 | ||
diff --git a/drivers/net/wireless/ath/ath5k/phy.c b/drivers/net/wireless/ath/ath5k/phy.c index 01b3f29ec13d..075873f98428 100644 --- a/drivers/net/wireless/ath/ath5k/phy.c +++ b/drivers/net/wireless/ath/ath5k/phy.c | |||
@@ -1119,8 +1119,7 @@ ath5k_hw_calibration_poll(struct ath5k_hw *ah) | |||
1119 | * interrupt (bit gets auto-cleared) */ | 1119 | * interrupt (bit gets auto-cleared) */ |
1120 | if (time_is_before_eq_jiffies(ah->ah_cal_tstamp + cal_intval)) { | 1120 | if (time_is_before_eq_jiffies(ah->ah_cal_tstamp + cal_intval)) { |
1121 | ah->ah_cal_tstamp = jiffies; | 1121 | ah->ah_cal_tstamp = jiffies; |
1122 | ah->ah_swi_mask = AR5K_SWI_FULL_CALIBRATION; | 1122 | tasklet_schedule(&ah->ah_sc->calib); |
1123 | AR5K_REG_ENABLE_BITS(ah, AR5K_CR, AR5K_CR_SWI); | ||
1124 | } | 1123 | } |
1125 | } | 1124 | } |
1126 | 1125 | ||