aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath
diff options
context:
space:
mode:
authorBruno Randolf <br1@einfach.org>2010-10-19 03:56:54 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-11-09 16:13:26 -0500
commitedb40a23c8dc5b5be219bf4561074b6233bba65f (patch)
treec5f22914ac7f8463ed112cea163780680ae77a5e /drivers/net/wireless/ath
parent3dd0923de491d72a041f82a9d0aaccc473fd2c42 (diff)
ath5k: Add channel time to survey data
Include the channel utilization (busy, rx, tx) in the survey results. Signed-off-by: Bruno Randolf <br1@einfach.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 8251946842e6..484aad5b11b5 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -3206,14 +3206,32 @@ static int ath5k_get_survey(struct ieee80211_hw *hw, int idx,
3206{ 3206{
3207 struct ath5k_softc *sc = hw->priv; 3207 struct ath5k_softc *sc = hw->priv;
3208 struct ieee80211_conf *conf = &hw->conf; 3208 struct ieee80211_conf *conf = &hw->conf;
3209 struct ath_common *common = ath5k_hw_common(sc->ah);
3210 struct ath_cycle_counters *cc = &common->cc_survey;
3211 unsigned int div = common->clockrate * 1000;
3209 3212
3210 if (idx != 0) 3213 if (idx != 0)
3211 return -ENOENT; 3214 return -ENOENT;
3212 3215
3213 survey->channel = conf->channel; 3216 survey->channel = conf->channel;
3214 survey->filled = SURVEY_INFO_NOISE_DBM; 3217 survey->filled = SURVEY_INFO_NOISE_DBM;
3215 survey->noise = sc->ah->ah_noise_floor; 3218 survey->noise = sc->ah->ah_noise_floor;
3216 3219
3220 spin_lock_bh(&common->cc_lock);
3221 ath_hw_cycle_counters_update(common);
3222 if (cc->cycles > 0) {
3223 survey->filled |= SURVEY_INFO_CHANNEL_TIME |
3224 SURVEY_INFO_CHANNEL_TIME_BUSY |
3225 SURVEY_INFO_CHANNEL_TIME_RX |
3226 SURVEY_INFO_CHANNEL_TIME_TX;
3227 survey->channel_time += cc->cycles / div;
3228 survey->channel_time_busy += cc->rx_busy / div;
3229 survey->channel_time_rx += cc->rx_frame / div;
3230 survey->channel_time_tx += cc->tx_frame / div;
3231 }
3232 memset(cc, 0, sizeof(*cc));
3233 spin_unlock_bh(&common->cc_lock);
3234
3217 return 0; 3235 return 0;
3218} 3236}
3219 3237