linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Felix Fietkau <nbd@openwrt.org>
To: Christian Lamparter <chunkeey@googlemail.com>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [RFC] minstrel_ht: fill out more than 3 rates
Date: Sat, 07 Aug 2010 16:28:55 +0200	[thread overview]
Message-ID: <4C5D6DA7.4050707@openwrt.org> (raw)
In-Reply-To: <201008070007.53294.chunkeey@googlemail.com>

On 2010-08-07 12:07 AM, Christian Lamparter wrote:
> Hello Felix,
> 
> I've stumbled into this conundrum a while ago...
> then as usual: forgot that it existed, until yesterday:
> 
> As you know minstrel (our non ht fallback) enables mrr-mode
> only if the driver sets hw->max_rates to 4 or more. 
> minstrel_ht - on the other hand - just prepares a set
> of 3 rates, so at least one additional retry with
> different tx-vectors remains unused...
> 
> How the last tries should be used is up for debate,
> I've opted out for lowest possible MCS.
> (although, some devices may also use a legacy
>  rate for the final tries...)
> 
> And the reason why I think it's worth to do an additional
> round: The reordering penalty for lost MPDUs on the receiver-
> side can be as high as 100ms, which is quite expensive compared
> to some extra airtime...
The problem here is that we have very different forms of retransmission
that receive the same kind of tx rate information, even though they
should be treated in a different way.

With drivers like ath9k, we don't need many retransmission steps. The
hardware-level retransmission stops as soon as it receives a Block Ack,
even if that may only ACK one of many frames (or maybe even none at
all). Software retransmission is then used to ensure that we don't
usually see lost MPDUs (under sane conditions, software-level excessive
retries should be pretty rare).

With this form of aggregation, the processing of the MRR chain is always
restarted for the next transmission attempt.
Since the table is for hw-level retransmission only, we do need to
ensure that we don't put unnecessarily low rates into the MRR array, as
this will limit aggregation size based on the 4-ms limit.

When using hardware aggregation, the behaviour kind of depends on how
the hardware interprets the retransmission information and how many
times it retransmits failed subframes of an A-MPDU transmission that
received a Block Ack.

I think in the long run we need to split this up. In my software
aggregation rewrite, I plan to add rate control lookups per A-MPDU, so
that the rate control algorithm can make a decision based on the number
of failed subframes (or the delta between first frame seqno and last
frame seqno, to better utilize the block ack window). In this case, the
rate control can be (and should be) much more optimistic about rates,
whereas with hardware aggregation we should probably put more emphasis
on reliability to reduce the latency.

- Felix

      reply	other threads:[~2010-08-07 14:28 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-06 22:07 [RFC] minstrel_ht: fill out more than 3 rates Christian Lamparter
2010-08-07 14:28 ` Felix Fietkau [this message]

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=4C5D6DA7.4050707@openwrt.org \
    --to=nbd@openwrt.org \
    --cc=chunkeey@googlemail.com \
    --cc=linux-wireless@vger.kernel.org \
    /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).