OSDN Git Service

ath9k: MCC, print time elapsed between events
authorJanusz Dziedzic <janusz.dziedzic@tieto.com>
Fri, 27 Nov 2015 08:37:17 +0000 (09:37 +0100)
committerKalle Valo <kvalo@qca.qualcomm.com>
Tue, 8 Dec 2015 14:51:02 +0000 (16:51 +0200)
This is useful for MCC debugging and bug fixing.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/channel.c

index b42f4a9..acc21f6 100644 (file)
@@ -981,6 +981,7 @@ struct ath_softc {
        struct ath_offchannel offchannel;
        struct ath_chanctx *next_chan;
        struct completion go_beacon;
+       struct timespec last_event_time;
 #endif
 
        unsigned long driver_data;
index 5a1ede6..50e614b 100644 (file)
@@ -226,6 +226,20 @@ static const char *chanctx_state_string(enum ath_chanctx_state state)
        }
 }
 
+static const u32 chanctx_event_delta(struct ath_softc *sc)
+{
+       u64 ms;
+       struct timespec ts, *old;
+
+       getrawmonotonic(&ts);
+       old = &sc->last_event_time;
+       ms = ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
+       ms -= old->tv_sec * 1000 + old->tv_nsec / 1000000;
+       sc->last_event_time = ts;
+
+       return (u32)ms;
+}
+
 void ath_chanctx_check_active(struct ath_softc *sc, struct ath_chanctx *ctx)
 {
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
@@ -489,10 +503,11 @@ void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
 
        spin_lock_bh(&sc->chan_lock);
 
-       ath_dbg(common, CHAN_CTX, "cur_chan: %d MHz, event: %s, state: %s\n",
+       ath_dbg(common, CHAN_CTX, "cur_chan: %d MHz, event: %s, state: %s, delta: %u ms\n",
                sc->cur_chan->chandef.center_freq1,
                chanctx_event_string(ev),
-               chanctx_state_string(sc->sched.state));
+               chanctx_state_string(sc->sched.state),
+               chanctx_event_delta(sc));
 
        switch (ev) {
        case ATH_CHANCTX_EVENT_BEACON_PREPARE: