From: Felix Fietkau <nbd@openwrt.org>
To: Derek Smithies <derek@indranet.co.nz>
Cc: linux-wireless <linux-wireless@vger.kernel.org>,
Benoit PAPILLAULT <benoit.papillault@free.fr>,
"Luis R. Rodriguez" <lrodriguez@atheros.com>,
Christian Lamparter <chunkeey@googlemail.com>,
Johannes Berg <johannes@sipsolutions.net>
Subject: Re: [RFC/RFT] minstrel_ht: new rate control module for 802.11n
Date: Mon, 01 Mar 2010 23:58:13 +0100 [thread overview]
Message-ID: <4B8C4685.8020202@openwrt.org> (raw)
In-Reply-To: <alpine.DEB.2.00.1003021122550.14059@kauri.acheron.indranet.co.nz>
On 2010-03-01 11:38 PM, Derek Smithies wrote:
> Hi,
> Great work on getting this far - it was a huge undertaking.
>
> Ok, before diving into the code, can we take a quick moment to think on
> this. I wonder if you can answer the following questions:
>
> a)Minstrel worked hard at using information that is good and reliable: -
> which is the record of what rates worked, and what rates failed.
> Minstrel avoids using things like RSSI (which is not reliable)
Yes, I still rely purely on tx status feedback, no RSSI voodoo.
> b)You have stated in previous emails that with 802.11n there are too many
> rates for minstrels random sampling technique.
>
> What is the approach taken in 802.11n & minstrel? I remember some comment
> about dividing the 802.11n rate set up into groups, and then minstrel does
> its thing within the rates of each group. - Do I have the idea here?
The previous comments were based on faulty tx status feedback because of
an ath9k issue that I resolved in a previous patch. The current
implementation still does random sampling, with one exception: each
sampling attempt goes to a different MCS group.
Other than that, I split up the MCS rates into groups mainly because
it's easier to deal with and allows me to calculate raw transmit
durations at compile time.
I did add some small special cases though. For instance if the code
detects that the current transmit rate is failing really quickly on a
multi-stream rate, it falls back to the max_tp_rate of a single-stream
group, while leaving around enough feedback for EWMA.
This reduces the strength of the throughput drop when I disconnect one
antenna (which kills off pretty much all of the dual-stream rates
immediately).
> Where have you tested 802.11n & minstrel?
Only at home. I just finished ironing out most of the important bugs
today, so this hasn't seen any significant long-term testing yet.
> Does 802.11n&minstrel pass the basic test
> a) put two nodes on the desk - rate is high
> b) move one of the nodes (or remove antenna) - rate should drop
> c) move nodes back to the configuration of a)
> -rate should go high again
Yes, this was my primary test. I also did some tests with removing both
antennas and moving the laptop away and back again.
I also did quite a few tests switching back and forth between
minstrel_ht and the ath9k rate control to compare them as accurately as
possible. In HT40, rate adaptation with minstrel is usually a little
slower (only a minor difference here, probably caused by the much larger
search space), but it's able to deal with sources of interference (e.g.
Bluetooth) a lot better.
It also reacts much faster to problems with spatial multiplexing, and
seems to get a better average throughput in HT20 in my tests.
> Does 802.11n&minstrel work well with time?
> In other words, is the throughput 10 hours later the same as at the start
> of the test?
If I force it to single-stream mode, then it seems to be just as
reliable at sticking to a specific rate as the legacy implementation.
With dual-stream rates it's hard to tell, because the reliability of
rates varies quickly, even if the positions is fixed. I do not see any
*significant* variations in throughput though.
- Felix
next prev parent reply other threads:[~2010-03-01 22:58 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-01 22:05 [RFC/RFT] minstrel_ht: new rate control module for 802.11n Felix Fietkau
2010-03-01 22:38 ` Derek Smithies
2010-03-01 22:58 ` Felix Fietkau [this message]
2010-03-01 23:04 ` Derek Smithies
2010-03-02 12:19 ` Björn Smedman
2010-03-02 14:51 ` Felix Fietkau
2010-03-02 15:47 ` Björn Smedman
2010-03-02 16:14 ` Felix Fietkau
2010-06-23 16:36 ` [ath9k-devel] " Björn Smedman
2010-06-23 16:36 ` Björn Smedman
2010-06-23 17:07 ` [ath9k-devel] " Felix Fietkau
2010-06-23 17:07 ` Felix Fietkau
2010-06-23 18:47 ` [ath9k-devel] " Björn Smedman
2010-06-23 18:47 ` Björn Smedman
2010-06-23 19:27 ` [ath9k-devel] " Felix Fietkau
2010-06-23 19:27 ` Felix Fietkau
2010-06-23 23:56 ` [ath9k-devel] " Björn Smedman
2010-06-23 23:56 ` Björn Smedman
2010-06-28 0:01 ` [ath9k-devel] " Björn Smedman
2010-06-28 0:01 ` Björn Smedman
2010-06-28 0:12 ` [ath9k-devel] " Felix Fietkau
2010-06-28 0:12 ` Felix Fietkau
2010-06-28 10:20 ` [ath9k-devel] " Björn Smedman
2010-06-28 10:20 ` Björn Smedman
2010-06-28 10:27 ` [ath9k-devel] " Felix Fietkau
2010-06-28 10:27 ` Felix Fietkau
2010-03-02 21:55 ` Derek Smithies
2010-03-04 14:12 ` Bob Copeland
2010-03-04 16:40 ` Björn Smedman
2010-03-04 20:11 ` Derek Smithies
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=4B8C4685.8020202@openwrt.org \
--to=nbd@openwrt.org \
--cc=benoit.papillault@free.fr \
--cc=chunkeey@googlemail.com \
--cc=derek@indranet.co.nz \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=lrodriguez@atheros.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.