Lets make wifi fast again!
 help / color / mirror / Atom feed
From: Adrian Chadd <adrian@freebsd.org>
To: Dave Taht <dave.taht@gmail.com>
Cc: "Jonathan Morton" <chromatix99@gmail.com>,
	make-wifi-fast@lists.bufferbloat.net,
	"ath9k-devel@lists.ath9k.org" <ath9k-devel@lists.ath9k.org>,
	"Toke Høiland-Jørgensen" <toke@toke.dk>
Subject: Re: [Make-wifi-fast] [ath9k-devel]  Diagram of the ath9k TX path
Date: Tue, 10 May 2016 00:15:11 -0700	[thread overview]
Message-ID: <CAJ-Vmomd06KQba4vynVFyPZ9=e6mkT6ppzWHGesrJ_Nnc2AoPg@mail.gmail.com> (raw)
In-Reply-To: <CAA93jw55fQooUXhqGRQgOfZgwByMVzuZ14XAbi5Ae=oSaHLUjw@mail.gmail.com>

Well, there shouldn't /also/ be a software queue behind each TXQ at
that point. Eg, in FreeBSD, I queue up to 64 frames per station and
then default to round robining between stations when it's time to form
another aggregate. It's done that way so i or someone else can
implement a wifi queue discipline in between the per-station / per-TID
queues and the hardware queue that knew about time of flight, etc.

The variations on the internal driver tended to slide some more
complicated queue management and rate control between the bit that
dequeued from the per-TID/per-STA packet queue and formed aggregates.
Ie, the aggregate was only formed at hardware queue time, and only two
were pushed into the hardware at once. There were only deep hardware
queues in very old, pre-11n drivers, to minimise CPU overhead.

So yeah, do reduce that a bit. The hardware queue should be two
frames, there shouldn't be anything needed to be queued up behind it
in the software queue backing it if you're aggregating, and if you
/are/, that queue should be backed based on flight time (eg lots of
little frames, or one big aggregate, but not lots of big aggregates.)

Yeah, I also have to add NOACK support for A-MPDU in the freebsd
driver for various reasons (voice, yes, but also multicast A-MPDU.)
You just need to ensure that you slide along the BAW in a way that
flushes the sender, or you may drop some frames but you're in the BAW,
and then the receiver buffers them for up to their timeout value
(typically tens of milliseconds) waiting for more frames in the BAW
(hopefully retries). I dunno if you're really allowed to be sending
NOACK data frames if you've negotiated immediate blockack though!

And yeah for time? totally depends on what you're doing. Yes, if you
have lots of stations actively doing traffic, then yes you should just
form smaller aggregates. It's especially good for dealing with the
full frame retries (ie, RTS/CTS worked, but the data frame didn't, and
you didn't get a block-ack at all.) On longer aggregates, that can
/really/ hurt - ie, you're likely better off doing one full retry only
and then failing it so you can requeue it in software and break it up
into a smaller set of aggregates after the rate control code gets the
update.

(God, I should really do this all to freebsd now that I'm kinda
allowed to again..)


-adrian

  parent reply	other threads:[~2016-05-10  7:15 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-09 11:00 [Make-wifi-fast] " Toke Høiland-Jørgensen
2016-05-09 15:35 ` Dave Taht
2016-05-10  2:25   ` Jonathan Morton
2016-05-10  2:59     ` Dave Taht
2016-05-10  3:30       ` [Make-wifi-fast] [ath9k-devel] " Adrian Chadd
2016-05-10  4:04         ` Dave Taht
2016-05-10  4:22           ` Aaron Wood
2016-05-10  7:15           ` Adrian Chadd [this message]
2016-05-10  7:17             ` Adrian Chadd
2016-05-10  3:41       ` [Make-wifi-fast] " David Lang
2016-05-10  4:59         ` Dave Taht
2016-05-10  5:22           ` David Lang
2016-05-10  9:04             ` Toke Høiland-Jørgensen
2016-05-11 14:12               ` Dave Täht
2016-05-11 15:09                 ` Dave Taht
2016-05-11 15:20                   ` Toke Høiland-Jørgensen
2016-05-13 17:46         ` Bob McMahon
2016-05-13 17:49           ` Dave Taht
2016-05-13 18:05             ` Bob McMahon
2016-05-13 18:11               ` Bob McMahon
2016-05-13 18:57               ` Dave Taht
2016-05-13 19:20                 ` Aaron Wood
2016-05-13 20:21                   ` Dave Taht
2016-05-13 20:51                     ` Dave Taht
2016-05-13 20:49           ` David Lang

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

  List information: https://lists.bufferbloat.net/postorius/lists/make-wifi-fast.lists.bufferbloat.net/

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

  git send-email \
    --in-reply-to='CAJ-Vmomd06KQba4vynVFyPZ9=e6mkT6ppzWHGesrJ_Nnc2AoPg@mail.gmail.com' \
    --to=adrian@freebsd.org \
    --cc=ath9k-devel@lists.ath9k.org \
    --cc=chromatix99@gmail.com \
    --cc=dave.taht@gmail.com \
    --cc=make-wifi-fast@lists.bufferbloat.net \
    --cc=toke@toke.dk \
    /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