Search Linux Wireless

Re: [PATCH 2/2] ath5k: Add channel time to survey data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <br1@xxxxxxxxxxx> wrote:
> Include the channel utilization (busy, rx, tx) in the survey results.
>
> Signed-off-by: Bruno Randolf <br1@xxxxxxxxxxx>
> ---
>  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 majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux