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: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
707c1b4e68
commit
0c98de6535
|
@ -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)
|
||||||
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)
|
||||||
* 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,
|
||||||
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 = {
|
||||||
.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 {
|
||||||
|
|
Loading…
Reference in New Issue