summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSujith Manoharan <c_manoha@qca.qualcomm.com>2014-08-23 13:29:18 +0530
committerJohn W. Linville <linville@tuxdriver.com>2014-08-28 14:49:37 -0400
commit70b06dacfe8bd1f62de058e2116388b8f7c58531 (patch)
tree23fb20e4710c2865cd2f28744278b0542dcc34da
parent73b5ef0bbfa03ba31bcaf781bc38b7af38e6999b (diff)
downloadop-kernel-dev-70b06dacfe8bd1f62de058e2116388b8f7c58531.zip
op-kernel-dev-70b06dacfe8bd1f62de058e2116388b8f7c58531.tar.gz
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: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/ath9k.h14
-rw-r--r--drivers/net/wireless/ath/ath9k/beacon.c5
-rw-r--r--drivers/net/wireless/ath/ath9k/channel.c14
-rw-r--r--drivers/net/wireless/ath/ath9k/recv.c8
4 files changed, 32 insertions, 9 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 8cf8e4f..352c5da 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -433,6 +433,10 @@ void ath9k_p2p_bss_info_changed(struct ath_softc *sc,
struct ieee80211_vif *vif);
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,
enum ath_chanctx_event ev);
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 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,
struct ieee80211_vif *vif,
enum ath_chanctx_event ev)
@@ -901,6 +913,7 @@ struct ath_softc {
#ifdef CONFIG_ATH9K_CHANNEL_CONTEXT
struct ath_gen_timer *p2p_ps_timer;
struct ath_vif *p2p_ps_vif;
+ struct ath_chanctx_sched sched;
#endif
unsigned long driver_data;
@@ -925,7 +938,6 @@ struct ath_softc {
struct ath_chanctx *next_chan;
spinlock_t chan_lock;
struct ath_offchannel offchannel;
- struct ath_chanctx_sched sched;
#ifdef CONFIG_MAC80211_LEDS
bool led_registered;
diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c
index 68c95d4..dc68d11 100644
--- a/drivers/net/wireless/ath/ath9k/beacon.c
+++ b/drivers/net/wireless/ath/ath9k/beacon.c
@@ -428,9 +428,8 @@ void ath9k_beacon_tasklet(unsigned long data)
/* EDMA devices check that in the tx completion function. */
if (!edma) {
if (ath9k_is_chanctx_enabled()) {
- if (sc->sched.beacon_pending)
- ath_chanctx_event(sc, NULL,
- ATH_CHANCTX_EVENT_BEACON_SENT);
+ ath_chanctx_beacon_sent_ev(sc,
+ ATH_CHANCTX_EVENT_BEACON_SENT);
}
if (ath9k_csa_is_finished(sc, vif))
diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c
index ae0b3f9..39df24c 100644
--- a/drivers/net/wireless/ath/ath9k/channel.c
+++ b/drivers/net/wireless/ath/ath9k/channel.c
@@ -463,6 +463,20 @@ void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
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,
struct ieee80211_channel *chan)
{
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index cc91749..2aaf233 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -893,11 +893,9 @@ static int ath9k_rx_skb_preprocess(struct ath_softc *sc,
}
if (ath9k_is_chanctx_enabled()) {
- if (rx_stats->is_mybeacon) {
- sc->sched.next_tbtt = rx_stats->rs_tstamp;
- ath_chanctx_event(sc, NULL,
- ATH_CHANCTX_EVENT_BEACON_RECEIVED);
- }
+ if (rx_stats->is_mybeacon)
+ ath_chanctx_beacon_recv_ev(sc, rx_stats->rs_tstamp,
+ ATH_CHANCTX_EVENT_BEACON_RECEIVED);
}
ath9k_cmn_process_rssi(common, hw, rx_stats, rx_status);
OpenPOWER on IntegriCloud