From: Johannes Berg <johannes@sipsolutions.net>
To: Adrian Chadd <adrian@freebsd.org>
Cc: linux-wireless <linux-wireless@vger.kernel.org>
Subject: Re: off- & multi-channel operation
Date: Mon, 14 Nov 2011 08:52:46 +0100 [thread overview]
Message-ID: <1321257166.4472.9.camel@jlt3.sipsolutions.net> (raw)
In-Reply-To: <CAJ-VmokRJ2fGS5Cb-2OY2vV_-cGdNTmEyBn1acndejiyhE8G7g@mail.gmail.com> (sfid-20111112_234709_362354_FD841A43)
On Sat, 2011-11-12 at 14:46 -0800, Adrian Chadd wrote:
> I'm looking at this in FreeBSD's net80211, primarily to be able to
> bring sanity to tx/rx aggregation handling so things like active, high
> throughput traffic doesn't get annoyed when off-channel mode occurs.
>
> So when you decide to start scanning, there may be frames already in
> the TX queue. If you simply called "start scanning now!", hardware
> like say ath9k would have to do this (and i haven't looked to see if
> it does, I bet it does. :-)
>
> * the TX queue would have to be paused in its entirety, so the higher
> layers both stop sending frames, _and_ any existing call to
> if_transmit/if_start (and the linux equivalents) have entirely
> completed;
> * that doesn't guarantee the hardware-queued TXes have completed, so
> you either have to wait for those to complete before you start
> off-channel operation, or ..
> * .. you tell the driver "i'm about to start scanning, please get ready";
> * where the driver (eg ath9k) would then stop RX/TX DMA, with frames
> still in the RX completion queue and TX pending/completion state;
I have no idea what ath9k does, but we do tell it about start/stop
scanning and flush queues explicitly (the latter may not be the best
thing to do with multi-channel)
> * .. which have to be handled at some point;
> * .. since the hardware may hvae multiple TX queues, but you typically
> use the same for on-channel and off-channel, you have to then handle
> those frames then, OR set them aside and handle them once you go
> on-channel again;
I'm thinking that since the hardware has enough queues, you might use a
set per channel to switch more quickly, but that's up to the driver
implementation :-)
[snip]
> I do think you need the stack to be able to do the frame buffering;
> the driver could exert a little more control so it's not forced to
> simply drop all the frames on the floor, but be given time to complete
> what it's doing before scanning begins.
Yes, well, the driver can always start & stop queues, and for software
scan we do already stop queues (not for hardware scan for obvious
reasons).
johannes
next prev parent reply other threads:[~2011-11-14 8:04 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-09 13:08 off- & multi-channel operation Johannes Berg
2011-11-09 17:48 ` Ben Greear
2011-11-09 18:15 ` Johannes Berg
2011-11-09 19:54 ` Ben Greear
2011-11-11 10:13 ` Johannes Berg
2011-11-11 17:54 ` Ben Greear
2011-11-11 18:00 ` Johannes Berg
2011-11-11 12:48 ` Johannes Berg
2011-11-11 13:16 ` Stanislaw Gruszka
2011-11-11 13:26 ` Johannes Berg
2011-11-12 22:46 ` Adrian Chadd
2011-11-14 7:52 ` Johannes Berg [this message]
2011-11-14 15:25 ` Johannes Berg
2011-11-14 15:37 ` Johannes Berg
2011-11-27 6:07 ` Adrian Chadd
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=1321257166.4472.9.camel@jlt3.sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=adrian@freebsd.org \
--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).