Date: Sat, 3 Jan 2015 20:46:12 -0800 From: Adrian Chadd <adrian@freebsd.org> To: "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org> Subject: [rft] net80211 scan overhaul, pass 1 Message-ID: <CAJ-Vmo=jfx2Y-ndjOojA-n8dJ=qrbYct5LsDKEqE8uuEiShzvw@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
hi all, I've started overhauling the net80211 scan infrastructure so it can support fully-offloaded scan firmware (like the intel iwn(4) NICs, and the upcoming 7260 driver I'm hacking on.) I'd like this patch tested: https://people.freebsd.org/~adrian/net80211/20150103-net80211-scan-overhaul-1.diff This splits the scan code into two halves - the generic bits that drive when and what to do about scanning, and the bits that implement the software scanner. The software scanner is the bit that schedules channel changes, listens for probe response frames, adds them to the scan cache, aborts and goes back to the original channel when needed. It also tells the drivers that scanning is about to happen, so the driver can prepare to go off-channel for a bit. For the intel NICs (and other things, i'm sure) that do full scan offload, we just say "Hey, scan these channels, here's the SSIDs to actively probe for, tell me when you're done" and you get back probe response frames or scan command results with all the relevant information. The wireless stack doesn't have to control the process so fine-grained - as far as the stack and network interface is concerned, it's still associated and traffic is still queued as per normal. The NIC firmware itself takes care of scheduling the off-channel scan bits, sending the sleep frames as it goes off-channel temporarily, etc. It's supposed to be very transparent. We don't even have to send probe request frames during scanning - the firmware will do that for us. This work doesn't do all work required - it's just going to refactor out the scan bits. I still have to turn it into methods that intel and such can be overridden. I still have to go through and plumb the VAP power save state work so we don't actually send sleep/wakeup frames. All of that is done for us in the firmware. So I'd appreciate this getting some testing by FreeBSD-HEAD wifi users. If you see any issues then please let me know. I'm going to commit it in a couple of days so I can continue along the path of refactoring out this stuff and turning it into methods that the iwn and future drivers can override to implement their own scanning module. Thanks! -adrian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmo=jfx2Y-ndjOojA-n8dJ=qrbYct5LsDKEqE8uuEiShzvw>