On 2011-05-25 9:27 PM, Luis R. Rodriguez wrote:
On Wed, May 25, 2011 at 12:24 PM, Luis R. Rodriguez<mcgrof@xxxxxxxxx> wrote:
On Wed, May 25, 2011 at 12:20 PM, Felix Fietkau<nbd@xxxxxxxxxxx> 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@xxxxxxxxxxxxxx> wrote:
On Wed, May 25, 2011 at 4:37 PM, Luis R. Rodriguez<mcgrof@xxxxxxxxx>
wrote:
On Wed, May 25, 2011 at 5:19 AM, Helmut Schaa
<helmut.schaa@xxxxxxxxxxxxxx> wrote:
On Wed, May 25, 2011 at 12:54 AM, Luis R. Rodriguez<mcgrof@xxxxxxxxx>
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
--
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