I'm not sure if I'm understanding the way the data is represented. I'm
pulling it via nl80211 (or even if just using iw to poll the values
regularly). They just appear to go back and forwards in time, as well
as being very large values. Am I missing something? Is the count not
supposed to be the amount of time for the measure since the card was
brought up?

Also, what does the 'channel time' value actually mean by 'time the
station spent on this channel'? How is this different to the 'Channel
busy time'? If it's not just busy time, but time the station was
locked on this channel, why is the value FAR smaller than the channel
busy time...?

Thanks,

--
Jonathan Guerin



On Tue, Oct 19, 2010 at 5:56 PM, Bruno Randolf <b...@einfach.org> wrote:
> Include the channel utilization (busy, rx, tx) in the survey results.
>
> Signed-off-by: Bruno Randolf <b...@einfach.org>
> ---
>  drivers/net/wireless/ath/ath5k/base.c |   20 +++++++++++++++++++-
>  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 8251946..484aad5 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,
>  {
>        struct ath5k_softc *sc = hw->priv;
>        struct ieee80211_conf *conf = &hw->conf;
> +       struct ath_common *common = ath5k_hw_common(sc->ah);
> +       struct ath_cycle_counters *cc = &common->cc_survey;
> +       unsigned int div = common->clockrate * 1000;
>
> -        if (idx != 0)
> +       if (idx != 0)
>                return -ENOENT;
>
>        survey->channel = conf->channel;
>        survey->filled = SURVEY_INFO_NOISE_DBM;
>        survey->noise = sc->ah->ah_noise_floor;
>
> +       spin_lock_bh(&common->cc_lock);
> +       ath_hw_cycle_counters_update(common);
> +       if (cc->cycles > 0) {
> +               survey->filled |= SURVEY_INFO_CHANNEL_TIME |
> +                       SURVEY_INFO_CHANNEL_TIME_BUSY |
> +                       SURVEY_INFO_CHANNEL_TIME_RX |
> +                       SURVEY_INFO_CHANNEL_TIME_TX;
> +               survey->channel_time += cc->cycles / div;
> +               survey->channel_time_busy += cc->rx_busy / div;
> +               survey->channel_time_rx += cc->rx_frame / div;
> +               survey->channel_time_tx += cc->tx_frame / div;
> +       }
> +       memset(cc, 0, sizeof(*cc));
> +       spin_unlock_bh(&common->cc_lock);
> +
>        return 0;
>  }
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to