From: Dan Williams <dcbw@redhat.com>
To: Daniel Drake <dsd@gentoo.org>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>,
Michael Wu <flamingice@sourmilk.net>,
Stephen Hemminger <shemminger@osdl.org>,
Arjan van de Ven <arjan@infradead.org>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: Network drivers that don't suspend on interface down
Date: Wed, 20 Dec 2006 22:29:09 -0500 [thread overview]
Message-ID: <1166671750.23168.35.camel@localhost.localdomain> (raw)
In-Reply-To: <4589FAA6.509@gentoo.org>
On Wed, 2006-12-20 at 22:08 -0500, Daniel Drake wrote:
> Matthew Garrett wrote:
> >> There are additional implementation problems: scanning requires 2
> >> different ioctl calls: siwscan, then several giwscan. If you want the
> >> driver to effectively temporarily bring the interface up when userspace
> >> requests a scan but the interface was down, then how does the driver
> >> know when to bring it down again?
> >
> > Hm. Does the spec not set any upper bound on how long it might take for
> > APs to respond? I'm afraid that my 802.11 knowledge is pretty slim.
>
> I'm not sure, but thats not entirely relevant either. The time it takes
> for the AP to respond is not related to the delay between userspace
> sending the siwscan and giwscan ioctls (unless you're thinking of
> userspace being too quick, but GIWSCAN already returns -EINPROGRESS when
> appropriate so this is detectable)
Channel dwell time for a passive scan is usually around 100ms - 250ms,
depending on how accurate you want your scan results (== wait longer),
and how much power you want to save (== don't wait long).
Correct userspace apps should:
1) Set a timer for, say, 8 seconds
2) Issue an SIWSCAN command
3) Wait for the GIWSCAN netlink event from the card, get results via
GIWSCAN command when it comes; cancel the timer from (2)
4) If the timer fires because no GIWSCAN event was received, try to get
scan results via GIWSCAN command from the driver anyway
<rant>
Note that NDIS requires a driver to return _something_ within 2 seconds
of a scan request. Even if you're an 802.11a card (madwifi *cough*, I'm
starting a new thing where I cough after...). So it's certainly
possible to return scan results in a timely manner, since the Windows
drivers for these cards are obviously doing it just fine.
Drivers should buffer scan results from past scans, age them
appropriately, and purge them when they get too old. Drivers should
never, ever, clear the scan result list when SIWSCAN or GIWSCAN is
called, because that means there's a window when a scan result request
from some other app could illegitimately return no BSSID records.
</rant>
> > Picking a number out of thin air would be one answer, but clearly less
> > than ideal. This may be a case of us not being able to satisfy everyone,
> > and so just having to force the user to choose between low power or
> > wireless scanning.
>
> I think it's reasonable to keep the interface down, but then when the
> user does want to connect, bring the interface up, scan, present scan
> results. Scanning is quick, there would be minimal wait needed here.
Unless you're madwifi *cough* and then you may have to wait up to _14_
seconds for a full scan of all a/bg channels. That's just insane. I
have no idea why that's the case (or at least was up to earlier this
year) but it's just unacceptable.
> Alternatively, if you do want to prepare scan results in the background
> every 2 minutes, use a sequence something like:
>
> - bring interface up
> - siwscan
> - giwscan [...]
> - bring interface down
> - repeat after 2 mins
>
> If this kind of thing was implemented at the driver level, in most cases
> it would be identical to doing the above anyway.
Right. It should 100% be in userspace and not in the drivers. Who says
2 minutes is the right interval? Putting that stuff, and the get/set
commands for changing that interval, in the driver is just plain wrong.
Dan
> Daniel
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2006-12-21 3:27 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20061219185223.GA13256@srcf.ucam.org>
[not found] ` <200612191959.43019.david-b@pacbell.net>
[not found] ` <20061220042648.GA19814@srcf.ucam.org>
[not found] ` <200612192114.49920.david-b@pacbell.net>
[not found] ` <20061220053417.GA29877@suse.de>
[not found] ` <20061220055209.GA20483@srcf.ucam.org>
[not found] ` <1166601025.3365.1345.camel@laptopd505.fenrus.org>
2006-12-20 12:53 ` Network drivers that don't suspend on interface down Matthew Garrett
2006-12-20 13:38 ` Arjan van de Ven
2006-12-20 14:31 ` Matthew Garrett
2006-12-20 15:51 ` Arjan van de Ven
2006-12-20 22:49 ` Stephen Hemminger
2006-12-20 23:37 ` Rick Jones
2006-12-19 23:51 ` Stephen Hemminger
2006-12-21 0:11 ` Francois Romieu
2006-12-20 0:26 ` Stephen Hemminger
2006-12-21 11:18 ` Francois Romieu
2006-12-21 1:12 ` Matthew Garrett
2006-12-21 2:05 ` Michael Wu
2006-12-21 2:18 ` Matthew Garrett
2006-12-21 2:38 ` Daniel Drake
2006-12-21 2:45 ` Matthew Garrett
2006-12-21 3:08 ` Daniel Drake
2006-12-21 3:25 ` Matthew Garrett
2006-12-21 3:37 ` Dan Williams
2006-12-21 3:29 ` Dan Williams [this message]
2006-12-21 3:14 ` Dan Williams
2006-12-21 13:14 ` jamal
2006-12-21 2:29 ` Daniel Drake
2006-12-21 2:10 ` Jesse Brandeburg
2006-12-21 8:54 ` Arjan van de Ven
2006-12-22 1:03 ` Herbert Xu
2006-12-23 8:54 ` Pavel Machek
2006-12-20 15:27 ` Olivier Galibert
2006-12-20 15:34 ` Arjan van de Ven
2006-12-20 16:40 ` Olivier Galibert
2006-12-20 17:21 ` Arjan van de Ven
2006-12-20 20:40 ` Benny Amorsen
2006-12-20 21:49 ` Arjan van de Ven
2006-12-20 21:15 ` Stefan Rompf
2006-12-20 14:00 ` Jiri Benc
2006-12-20 18:12 ` Dan Williams
2006-12-21 1:15 ` Matthew Garrett
2006-12-21 1:57 ` Michael Wu
2006-12-21 2:20 ` Matthew Garrett
2006-12-21 3:02 ` Dan Williams
2006-12-21 3:06 ` Dan Williams
2006-12-21 3:14 ` Matthew Garrett
2006-12-21 3:32 ` Dan Williams
2006-12-21 13:19 ` Sven-Haegar Koch
2006-12-21 17:16 ` Dan Williams
2006-12-21 18:27 ` Valdis.Kletnieks
2006-12-22 1:25 ` Matt Domsch
2006-12-20 16:04 ` Maciej W. Rozycki
2006-12-21 5:25 David Brownell
2006-12-21 7:08 ` Stephen Hemminger
2006-12-21 8:11 ` David Brownell
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=1166671750.23168.35.camel@localhost.localdomain \
--to=dcbw@redhat.com \
--cc=arjan@infradead.org \
--cc=dsd@gentoo.org \
--cc=flamingice@sourmilk.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
--cc=netdev@vger.kernel.org \
--cc=shemminger@osdl.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).