linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Felix Fietkau <nbd@openwrt.org>
To: "Luis R. Rodriguez" <mcgrof@gmail.com>
Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	hostap@lists.shmoo.com, Matt Smith <Matt.Smith@atheros.com>
Subject: Re: Initial automatic channel selection implementation
Date: Thu, 26 May 2011 12:45:47 +0200	[thread overview]
Message-ID: <4DDE2F5B.3020804@openwrt.org> (raw)
In-Reply-To: <BANLkTimRiU9Pv1B1=VC3XuREbmnpLk3S7w@mail.gmail.com>

On 2011-05-25 9:27 PM, Luis R. Rodriguez wrote:
> On Wed, May 25, 2011 at 12:24 PM, Luis R. Rodriguez<mcgrof@gmail.com>  wrote:
>>  On Wed, May 25, 2011 at 12:20 PM, Felix Fietkau<nbd@openwrt.org>  wrote:
>>>  On 2011-05-25 5:01 PM, Luis R. Rodriguez wrote:
>>>>
>>>>  On Wed, May 25, 2011 at 7:45 AM, Helmut Schaa
>>>>  <helmut.schaa@googlemail.com>    wrote:
>>>>>
>>>>>    On Wed, May 25, 2011 at 4:37 PM, Luis R. Rodriguez<mcgrof@gmail.com>
>>>>>    wrote:
>>>>>>
>>>>>>    On Wed, May 25, 2011 at 5:19 AM, Helmut Schaa
>>>>>>    <helmut.schaa@googlemail.com>    wrote:
>>>>>>>
>>>>>>>    On Wed, May 25, 2011 at 12:54 AM, Luis R. Rodriguez<mcgrof@gmail.com>
>>>>>>>    wrote:
>>>>>>>>
>>>>>>>>    Yes, thanks this is a lot of work already done. Now we just need a
>>>>>>>>    basic algorithm to parse this, quantify how ideal this channel is and
>>>>>>>>    then spit out a desired optimal channel.
>>>>>>>
>>>>>>>    That's what I've hacked some time ago (in form of the attached _ugly_
>>>>>>>  shell
>>>>>>>    script that does auto channel selection with rt2x00, not sure if it
>>>>>>>  works
>>>>>>>    correct with other drivers as the survey dump differs somehow between
>>>>>>>    rt2x00, ath5k and ath9k, and it only does channel 1-11):
>>>>>>>
>>>>>>>    - Iterate over all channels and stay on each channel for some time
>>>>>>
>>>>>>    Nice, yeah I was thinking of using the offchannel operation if we want
>>>>>>    to spend more time there for inspection and if associated. For first
>>>>>>    iteration it should be possible to just move around. In fact for AP
>>>>>>    purposes I suppose one will want to just start AP mode ASAP and then
>>>>>>    later do offchannel operations to do the inspection on the ideal
>>>>>>    channel. Otherwise we sit there idle until we complete the Automatic
>>>>>>    Channel Selection thingy.
>>>>>
>>>>>    Correct, especially if we also consider 5Ghz channels. Offchannel
>>>>>  operations
>>>>>    would be nice but how can we ensure AP mode while being offchannel?
>>>>
>>>>  Notification of absence.
>>>>
>>>>>>>    - Store busy time stats for each channel
>>>>>>>    - Choose the channel with the lowest busy time (and on 2.4Ghz also
>>>>>>>     check the busy times on adjacent channels)
>>>>>>
>>>>>>    So I was reviewing this -- if we are TX'ing or RX'ing it seems to me
>>>>>>    we should skip that time from the busy time, otherwise the "busy" time
>>>>>>    includes time we induced on TX'ing or RX'ing ourselves. So I was
>>>>>>    thinking of using the:
>>>>>>
>>>>>>     (active time - rx time - tx time)  / busy time
>>>>>
>>>>>    Looks good ;) just one problem from a rt2x00 POV: We can't report rx/tx
>>>>>  busy
>>>>>    time separately, we can only advice the hw to include or exclude rx/tx
>>>>>  time
>>>>>    from the busy time statistics.
>>>>
>>>>  Doh, I see.. well in order for the above math to be useful we'd have
>>>>  to be consistent across drivers. What is being done by rt2x00 right
>>>>  now? If the later then the math would still work, otherwise then we'd
>>>>  need to adjust.
>>>
>>>  Excluding rx time isn't even a good idea, since it makes no distinction
>>>  between local BSS or other activity in the area.
>>
>>  What if we do an offchannel operation?
>
> Once we figure out that...
>
> The missing piece is how to deal with noise info here. In short the
> lower noise we have the better signal we'll get. The challenge then is
> to take into consideration the noise mathematically in such a that a
> high noise value would nullify any clean idle air time ratio
> conditions from the formula postulated before. Let me review again
> with some modifications.
>
> Active time is the time we spend on the channel, so to get an idea of
> how "busy" that channel is we have to remove the tx and rx time from
> that channel. That gives us the time we spent idle on that channel.
> Then the busy time is a subset of the entire active time but we should
> also exclude the time we spent tx'ing and rx'ing as well. We then
> have:
>
>   (busy time - rx time - tx time) / (active time - rx time - tx time)
>
> This is a bounded ratio already, given that if we spent 0 time tx'ing
> 0 time rx'ing, but 10 ms on a channel, and all that time we had busy
> time as well we'd have a ratio of 10 / 10 = 1. In the best case we'd
> have  0 / 10 = 0.
>
> What I'd like to do is to affect the ratio to nullify it if the noise
> is very low on the channel. Given that noise is logarithmic we'd have
> to use a logarithmic function as well. Working on that now.
Please explain why you want to remove the rx time, it makes no sense to 
me. Without rx time you will usually not get any useful indication of 
how busy the channel is.

- Felix

  parent reply	other threads:[~2011-05-26 10:45 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-24 12:48 Initial automatic channel selection implementation Luis R. Rodriguez
2011-05-24 14:27 ` Helmut Schaa
2011-05-24 18:07   ` Eduard GV
2011-05-24 21:21     ` Pavel Roskin
2011-05-24 22:54   ` Luis R. Rodriguez
2011-05-25 12:19     ` Helmut Schaa
2011-05-25 14:37       ` Luis R. Rodriguez
2011-05-25 14:45         ` Helmut Schaa
2011-05-25 15:01           ` Luis R. Rodriguez
2011-05-25 19:20             ` Felix Fietkau
2011-05-25 19:24               ` Luis R. Rodriguez
2011-05-25 19:27                 ` Luis R. Rodriguez
2011-05-25 20:01                   ` Luis R. Rodriguez
2011-05-26 10:45                   ` Felix Fietkau [this message]
2011-05-26 23:45                     ` Luis R. Rodriguez
2011-05-27  0:23                       ` Felix Fietkau
2011-05-27  0:59                         ` Luis R. Rodriguez
2011-06-02 22:36                           ` Luis R. Rodriguez
2011-06-02 23:49                             ` Felix Fietkau
2011-06-03  5:23                               ` Luis R. Rodriguez
2011-05-26  7:37         ` Jouni Malinen
2011-05-24 15:28 ` Pavel Roskin
2011-05-24 16:44   ` Cristian Ionescu-Idbohrn
2011-05-24 17:04     ` Pavel Roskin
2011-05-25  4:24       ` Helmut Schaa
2011-05-25  4:39         ` Adrian Chadd
2011-05-25  8:08         ` Cristian Ionescu-Idbohrn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DDE2F5B.3020804@openwrt.org \
    --to=nbd@openwrt.org \
    --cc=Matt.Smith@atheros.com \
    --cc=helmut.schaa@googlemail.com \
    --cc=hostap@lists.shmoo.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=mcgrof@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).