All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Chadd <adrian@freebsd.org>
To: Jim Gettys <jg@freedesktop.org>
Cc: "Luis R. Rodriguez" <mcgrof@gmail.com>,
	Dave Taht <dave.taht@gmail.com>,
	Tom Herbert <therbert@google.com>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	Andrew McGregor <andrewmcgr@gmail.com>,
	Matt Smith <smithm@qca.qualcomm.com>,
	Kevin Hayes <hayes@qca.qualcomm.com>,
	Derek Smithies <derek@indranet.co.nz>,
	netdev@vger.kernel.org
Subject: Re: BQL crap and wireless
Date: Tue, 30 Aug 2011 09:44:56 +0800	[thread overview]
Message-ID: <CAJ-Vmom_EwR31Z6r4VpSiKTwE+YXwmRwtwurzr5VUX6nnC67fg@mail.gmail.com> (raw)
In-Reply-To: <4E5C3B47.1050809@freedesktop.org>

On 30 August 2011 09:22, Jim Gettys <jg@freedesktop.org> wrote:

Note: I'm knee deep in the aggregation TX/RX path at the present time
- I'm porting the atheros 802.11n TX aggregation code to FreeBSD.

> Computing the buffering in bytes is better than in packets; but since on
> wireless multicast/broadcast is transmitted at a radically different
> rate than other packets, I expect something based on time is really the
> long term solution; and only the driver has any idea how long a packet
> of a given flavour will likely take to transmit.

And the driver (hopefully!) can find out how long the packet -did-
take to transmit.

There are a bunch of different reasons for why the packet isn't
transmitting or why it can take so long. If (say) an aggregate has 10
hardware (long, short) retries at a high MCS rate, and then 10
software retries, that's up to 100 attempts at transmitting the
sub-frames in some way. It may also involve 10 attempts at an RTS
exchange. But it may also be 10 attempts at transmitting the -whole-
frame. In the case of a long aggregate (say the upper bounds of 4ms,
easily achievable when lower MCS rates are selected), this can take a
long time.

I'm occasionally seeing this in my testing, where the block-ack isn't
seen by the sender. The whole aggregate frame is thus retransmitted in
its entirety. This causes occasional bumps in the testing latency. The
obvious solution is to not form such large aggregates at lower MCS
rates but even single events have an impact on latency.

I'm not at the point yet where I can start tinkering with rate control
and queue management in this way but the idea of asking the rate
control code to manage per-node and overall airtime has crossed my
mind. Ie, the rate control code can see how successful transmissions
are to a given node (at given streams, rates, antenna configurations,
etc) and then enforce aggregate size and retransmission limits there.
Since a decision for any given node will affect the latency on all
subsequent nodes, it makes sense for the rate control code to keep a
global idea of the airtime involved as well as the (current) per-node
logic.

2c, which'll be more when I work the 11n TX A-MPDU kinks out in the
FreeBSD driver,


Adrian

  reply	other threads:[~2011-08-30  1:44 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-26 23:27 BQL crap and wireless Luis R. Rodriguez
2011-08-26 23:27 ` Luis R. Rodriguez
2011-08-29 21:02 ` Luis R. Rodriguez
2011-08-29 21:02   ` Luis R. Rodriguez
2011-08-29 21:10   ` Luis R. Rodriguez
2011-08-29 22:45     ` Dave Taht
2011-08-29 22:54       ` Luis R. Rodriguez
2011-08-29 22:54         ` Luis R. Rodriguez
2011-08-29 23:10         ` Dave Taht
2011-08-29 23:10           ` Dave Taht
2011-08-29 23:15           ` Luis R. Rodriguez
2011-08-29 23:18   ` Andrew McGregor
2011-08-29 23:18     ` Andrew McGregor
2011-08-30  0:24   ` Dave Taht
2011-08-30  1:22     ` Jim Gettys
2011-08-30  1:22       ` Jim Gettys
2011-08-30  1:44       ` Adrian Chadd [this message]
2011-08-30  1:48         ` Adrian Chadd
2011-08-30  1:59       ` Andrew McGregor
2011-08-30  1:59         ` Andrew McGregor
2011-08-30  2:12         ` Jim Gettys
2011-08-30  3:34       ` Tom Herbert
2011-08-30  3:42         ` Adrian Chadd
2011-08-30  3:42           ` Adrian Chadd
2011-08-30  4:23           ` Andrew McGregor
2011-08-30  4:23             ` Andrew McGregor
2011-08-30 13:58           ` Jim Gettys
2011-08-30 13:58             ` Jim Gettys
2011-08-30 21:47             ` Andrew McGregor
2011-08-30 21:47               ` Andrew McGregor
2011-08-31 13:28               ` Jim Gettys
2011-08-31 20:50                 ` Luis R. Rodriguez
2011-08-31 20:50                   ` Luis R. Rodriguez
2011-09-01  2:44                   ` Adrian Chadd
2011-09-01 14:13                   ` John W. Linville
2011-09-01 14:13                     ` John W. Linville
2011-09-01 15:08                     ` Jim Gettys
2011-09-01 15:08                       ` Jim Gettys
2011-09-02 22:03                     ` Luis R. Rodriguez
2011-09-02 22:03                       ` Luis R. Rodriguez
     [not found]                   ` <4E5FA74D.5000705@freedesktop.org>
2011-09-02 21:59                     ` Luis R. Rodriguez
2011-09-02 21:59                       ` Luis R. Rodriguez
2011-09-03  3:01                       ` Jim Gettys
2011-09-03  3:01                         ` Jim Gettys
2011-08-30  1:08   ` Dave Taht
2011-08-30  1:08     ` Dave Taht
2011-08-31 19:48 ` John W. Linville

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=CAJ-Vmom_EwR31Z6r4VpSiKTwE+YXwmRwtwurzr5VUX6nnC67fg@mail.gmail.com \
    --to=adrian@freebsd.org \
    --cc=andrewmcgr@gmail.com \
    --cc=dave.taht@gmail.com \
    --cc=derek@indranet.co.nz \
    --cc=hayes@qca.qualcomm.com \
    --cc=jg@freedesktop.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=mcgrof@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=smithm@qca.qualcomm.com \
    --cc=therbert@google.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.