Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -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 */
+21 −1
Original line number Original line Diff line number Diff line
@@ -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 {