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

Commit 70b06dac authored by Sujith Manoharan's avatar Sujith Manoharan Committed by John W. Linville
Browse files

ath9k: Add wrappers for beacon events



Using these wrappers allows us to move the 'sched'
variable in ath_softc inside CONFIG_ATH9K_CHANNEL_CONTEXT.

Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 73b5ef0b
Loading
Loading
Loading
Loading
+13 −1
Original line number Original line Diff line number Diff line
@@ -433,6 +433,10 @@ void ath9k_p2p_bss_info_changed(struct ath_softc *sc,
				struct ieee80211_vif *vif);
				struct ieee80211_vif *vif);
void ath9k_p2p_ps_timer(void *priv);
void ath9k_p2p_ps_timer(void *priv);


void ath_chanctx_beacon_recv_ev(struct ath_softc *sc, u32 ts,
				enum ath_chanctx_event ev);
void ath_chanctx_beacon_sent_ev(struct ath_softc *sc,
				enum ath_chanctx_event ev);
void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
		       enum ath_chanctx_event ev);
		       enum ath_chanctx_event ev);
void ath_chanctx_set_next(struct ath_softc *sc, bool force);
void ath_chanctx_set_next(struct ath_softc *sc, bool force);
@@ -453,6 +457,14 @@ static inline void ath9k_init_channel_context(struct ath_softc *sc)
static inline void ath9k_deinit_channel_context(struct ath_softc *sc)
static inline void ath9k_deinit_channel_context(struct ath_softc *sc)
{
{
}
}
static inline void ath_chanctx_beacon_recv_ev(struct ath_softc *sc, u32 ts,
					      enum ath_chanctx_event ev)
{
}
static inline void ath_chanctx_beacon_sent_ev(struct ath_softc *sc,
					      enum ath_chanctx_event ev)
{
}
static inline void ath_chanctx_event(struct ath_softc *sc,
static inline void ath_chanctx_event(struct ath_softc *sc,
				     struct ieee80211_vif *vif,
				     struct ieee80211_vif *vif,
				     enum ath_chanctx_event ev)
				     enum ath_chanctx_event ev)
@@ -901,6 +913,7 @@ struct ath_softc {
#ifdef CONFIG_ATH9K_CHANNEL_CONTEXT
#ifdef CONFIG_ATH9K_CHANNEL_CONTEXT
	struct ath_gen_timer *p2p_ps_timer;
	struct ath_gen_timer *p2p_ps_timer;
	struct ath_vif *p2p_ps_vif;
	struct ath_vif *p2p_ps_vif;
	struct ath_chanctx_sched sched;
#endif
#endif


	unsigned long driver_data;
	unsigned long driver_data;
@@ -925,7 +938,6 @@ struct ath_softc {
	struct ath_chanctx *next_chan;
	struct ath_chanctx *next_chan;
	spinlock_t chan_lock;
	spinlock_t chan_lock;
	struct ath_offchannel offchannel;
	struct ath_offchannel offchannel;
	struct ath_chanctx_sched sched;


#ifdef CONFIG_MAC80211_LEDS
#ifdef CONFIG_MAC80211_LEDS
	bool led_registered;
	bool led_registered;
+2 −3
Original line number Original line Diff line number Diff line
@@ -428,8 +428,7 @@ void ath9k_beacon_tasklet(unsigned long data)
	/* EDMA devices check that in the tx completion function. */
	/* EDMA devices check that in the tx completion function. */
	if (!edma) {
	if (!edma) {
		if (ath9k_is_chanctx_enabled()) {
		if (ath9k_is_chanctx_enabled()) {
			if (sc->sched.beacon_pending)
			ath_chanctx_beacon_sent_ev(sc,
				ath_chanctx_event(sc, NULL,
					  ATH_CHANCTX_EVENT_BEACON_SENT);
					  ATH_CHANCTX_EVENT_BEACON_SENT);
		}
		}


+14 −0
Original line number Original line Diff line number Diff line
@@ -463,6 +463,20 @@ void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
	spin_unlock_bh(&sc->chan_lock);
	spin_unlock_bh(&sc->chan_lock);
}
}


void ath_chanctx_beacon_sent_ev(struct ath_softc *sc,
				enum ath_chanctx_event ev)
{
	if (sc->sched.beacon_pending)
		ath_chanctx_event(sc, NULL, ev);
}

void ath_chanctx_beacon_recv_ev(struct ath_softc *sc, u32 ts,
				enum ath_chanctx_event ev)
{
	sc->sched.next_tbtt = ts;
	ath_chanctx_event(sc, NULL, ev);
}

static int ath_scan_channel_duration(struct ath_softc *sc,
static int ath_scan_channel_duration(struct ath_softc *sc,
				     struct ieee80211_channel *chan)
				     struct ieee80211_channel *chan)
{
{
+3 −5
Original line number Original line Diff line number Diff line
@@ -893,12 +893,10 @@ static int ath9k_rx_skb_preprocess(struct ath_softc *sc,
	}
	}


	if (ath9k_is_chanctx_enabled()) {
	if (ath9k_is_chanctx_enabled()) {
		if (rx_stats->is_mybeacon) {
		if (rx_stats->is_mybeacon)
			sc->sched.next_tbtt = rx_stats->rs_tstamp;
			ath_chanctx_beacon_recv_ev(sc, rx_stats->rs_tstamp,
			ath_chanctx_event(sc, NULL,
					   ATH_CHANCTX_EVENT_BEACON_RECEIVED);
					   ATH_CHANCTX_EVENT_BEACON_RECEIVED);
	}
	}
	}


	ath9k_cmn_process_rssi(common, hw, rx_stats, rx_status);
	ath9k_cmn_process_rssi(common, hw, rx_stats, rx_status);