Interview with Adrian Chadd on 802.11n in FreeBSD

Adrian Chadd is the current FreeBSD net80211/ath driver maintainer and developer. He’s been working with a few others
to get usable 802.11n support into FreeBSD. We thought we’d have a quick chat and ask how things are going.What’s the state of 801.11n on FreeBSD?

It’s working for me in both station and access point modes. I
primarily focus on Atheros hardware; others have reported success with
the Intel NICs supported by the iwn driver.

So this isn’t just about getting FreeBSD-base PCs communicating over
802.11n. You’re talking about embedded FreeBSD installs on wifi
router hardware?

Yes. It’s primarily a technology demonstration (ie, showing that it is
indeed possible) but it also ends up being a great way to do
regression and performance testing. A lot of the wifi router hardware
is quite cheap and plentiful, making it ideal for testing. Others are
finding it useful as part of their research projects, for example a
group at Swinburne University are beginning to use FreeBSD on
embedded hardware as part of their research into link congestion and
quality of service improvements.

Router hacking has a long and glorious history. What in particular are
you trying to accomplish? What advanced features are you trying to

For the most part I’m simply investigating how feasible it all is. For
the most part I’m trying to give people the tools they need to go out
and do more interesting things. So really, I’m trying to accomplish
“community enabling.” 🙂

So this is OSNews, so you know we say this with love, but why do it?
What does FreeBSD bring to this sphere that, say, Linux can’t?

Honestly? Nothing. Besides that it’s BSD, not Linux. There are
features that Linux has that BSD doesn’t and vice versa. If you’re
interested in the BSD way of things, my work is just lowering the bar
a little.

It looks like you’re drawing on work that the Linux community has done
to produce drivers for chipsets and other hardware? How close does
that work get you to where you want to be?

Luckily, Sam Leffler left most of the 802.11n protocol stack code in
FreeBSD before he left for greener pastures, so I only really had to
focus on the driver. There was a bit of debugging and cleaning up but
yes, I luckily didn’t have to implement too much there.

I’ve been working closely with the Atheros developers over in the
OpenWRT and ath9k project, on both board support and 11n chipset
support. We’ve found a few bugs together in both codebases – having to
“bootstrap” FreeBSD’s Atheros 802.11 support from scratch has had me
do a bit of a code review of ath9k and in doing this I’ve found a few
things that weren’t really right. I’d like to hope that both FreeBSD
and Linux/ath9k have helped each other in this respect.

I’ve also been working closely with Atheros (now Qualcomm Atheros) who
have given me access to their internal drivers and documentation
through an Open Source NDA Programme. This has helped me bootstrap the
rest of the missing Atheros 11n chipset support.

Can you see other opportunities to benefit from other initiatives in
the Linux community in the same way?

Quite likely. I think cross pollination between projects can only be a
good thing. Even if both projects decide to go along different paths,
even just having to sit down and think about alternatives is going to
help you in the long run.

As for what they are, I can likely list a few more after the christmas break. 🙂

If you had the chance to draw on some expertise from outside of your
current group of collaborators, what kinds of skills or efforts do you
need the most at this point?

For the most part I (and Linux wireless as well) just need some
interested people who don’t mind getting their hands dirty in the
code. We’re all happy to answer questions and help you figure out
what’s going on; you just need to be the inquisitive type!

For more information on the project:

Do you know someone who’s working on an interesting OS-related project? let us know, and we’ll interview them for OSNews.


  1. 2011-12-27 7:30 pm
  2. 2011-12-28 8:03 am
  3. 2011-12-28 3:04 pm
    • 2011-12-28 8:01 pm