Initial 802.11n / ath support merge plan

Adrian Chadd adrian at
Wed Dec 22 15:49:55 UTC 2010

Hi all,

I'd like to start the process for merging in my initial 802.11n
support into -HEAD and -8.

My 802.11n work can be broken into a few chunks. The details aren't
exhaustive, but they give a good idea of the breadth of the
development I've been doing here.

What I'd like to do is commit bits and pieces of work, rather than
just doing a big "code drop" that changes a whole lot of stuff. Then
let it bake for time, let users test it, etc, before moving onto the
next bits.

* net80211 work:
  + mostly to handle some of the 802.11n station related bits - enough
for 2.4ghz HT/20 association. I've not tried 5ghz 11n; and HT/40
doesn't yet seem to work for whatever reason;

* if_ath HAL work:
  + move 91xx and 92xx support into different chipset directories in
the ath_hal directory
  + added support for the AR9100
  + merged in some changes from Linux ath9k
  + some chipset reset path refactoring/restructuring
  + a set of "hardware ops" to abstract out the per-chipset
differences of the AR5416 and later chips - again, based on ath9k - to
make it easier in the future to port ath9k code to our HAL
  + added new hooks to tidy up handling TX descriptor completion for
multi-rate stuff

* ath_rate work:
  + ath_rate_sample now knows about _basic_ 802.11n stuff; enough to
TX MCS rates
  + ath_rate_sample now calls a HAL method to pull the multi-rate TX
completion data out, rather than fondling the TX descriptors directly
  + ath_rate_sample provides the TX rate list as an array, rather than
directly calling the HAL to set up the TX descriptor

* if_ath work:
  + refactored out the TX, RX, beacon, TDMA and debug code into
separate source files
  + enabled some 802.11n related bits facing net80211
  + added basic non-aggregate 11n TX support (incomplete so far)
  + disabled multicast hw crypto for now - this breaks AES-CCMP
encryption which is needed for 11n WPA

What I'd like to do in the short short term:

* merge in the net80211 changes into HEAD, then backport those to
RELENG_8. This sets up the scene to support 802.11n in station mode,
but shouldn't break existing setups;
* maintain the ath/ath_hal/ath_rate stuff in my GIT tree for now, and
release drop-in snapshots for people to play with (and I've verified
that the code does work under RELENG_8 :-);

What I'd like to do moving forward, beginning in early Jan 2011:

* Bring over the changes to the rate control modules to tidy up how
they fondle the hardware - these changes are reasonably self-contained
* Bring over the ath_hal changes. This brings over the AR9100 support,
the re-factored HAL structure and changes from ath9k. I could try to
separate that work out into separate patches but it's likely going to
be a lot of of work for little gain.
* Let users then test the AR5416, AR9160, AR9280, AR9285 support - and
then find/fix whatever bugs crop up there (and the bugs that still
* Finally, once that's done, look at attacking the if_ath code to
enable the initial 11n support.

What do people think?


More information about the freebsd-arch mailing list