Commit 0c98de65 authored by Sujith's avatar Sujith Committed by John W. Linville

ath9k: Use new scan notifiers from mac80211

The only use case for this right now is ANI calibration,
but more might come up in the future.
Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 707c1b4e
...@@ -559,6 +559,7 @@ struct ath_rfkill { ...@@ -559,6 +559,7 @@ struct ath_rfkill {
#define SC_OP_RFKILL_HW_BLOCKED BIT(13) #define SC_OP_RFKILL_HW_BLOCKED BIT(13)
#define SC_OP_WAIT_FOR_BEACON BIT(14) #define SC_OP_WAIT_FOR_BEACON BIT(14)
#define SC_OP_LED_ON BIT(15) #define SC_OP_LED_ON BIT(15)
#define SC_OP_SCANNING BIT(16)
struct ath_bus_ops { struct ath_bus_ops {
void (*read_cachesize)(struct ath_softc *sc, int *csz); void (*read_cachesize)(struct ath_softc *sc, int *csz);
...@@ -682,4 +683,5 @@ static inline void ath9k_ps_restore(struct ath_softc *sc) ...@@ -682,4 +683,5 @@ static inline void ath9k_ps_restore(struct ath_softc *sc)
ath9k_hw_setpower(sc->sc_ah, ath9k_hw_setpower(sc->sc_ah,
sc->sc_ah->restore_mode); sc->sc_ah->restore_mode);
} }
#endif /* ATH9K_H */ #endif /* ATH9K_H */
...@@ -327,7 +327,7 @@ static void ath_ani_calibrate(unsigned long data) ...@@ -327,7 +327,7 @@ static void ath_ani_calibrate(unsigned long data)
* don't calibrate when we're scanning. * don't calibrate when we're scanning.
* we are most likely not on our home channel. * we are most likely not on our home channel.
*/ */
if (sc->rx.rxfilter & FIF_BCN_PRBRESP_PROMISC) if (sc->sc_flags & SC_OP_SCANNING)
goto set_timer; goto set_timer;
/* Long calibration runs independently of short calibration. */ /* Long calibration runs independently of short calibration. */
...@@ -2616,6 +2616,24 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw, ...@@ -2616,6 +2616,24 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
return ret; return ret;
} }
static void ath9k_sw_scan_start(struct ieee80211_hw *hw)
{
struct ath_softc *sc = hw->priv;
mutex_lock(&sc->mutex);
sc->sc_flags |= SC_OP_SCANNING;
mutex_unlock(&sc->mutex);
}
static void ath9k_sw_scan_complete(struct ieee80211_hw *hw)
{
struct ath_softc *sc = hw->priv;
mutex_lock(&sc->mutex);
sc->sc_flags &= ~SC_OP_SCANNING;
mutex_unlock(&sc->mutex);
}
struct ieee80211_ops ath9k_ops = { struct ieee80211_ops ath9k_ops = {
.tx = ath9k_tx, .tx = ath9k_tx,
.start = ath9k_start, .start = ath9k_start,
...@@ -2633,6 +2651,8 @@ struct ieee80211_ops ath9k_ops = { ...@@ -2633,6 +2651,8 @@ struct ieee80211_ops ath9k_ops = {
.set_tsf = ath9k_set_tsf, .set_tsf = ath9k_set_tsf,
.reset_tsf = ath9k_reset_tsf, .reset_tsf = ath9k_reset_tsf,
.ampdu_action = ath9k_ampdu_action, .ampdu_action = ath9k_ampdu_action,
.sw_scan_start = ath9k_sw_scan_start,
.sw_scan_complete = ath9k_sw_scan_complete,
}; };
static struct { static struct {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment