This is an old revision of the document!


Atheros wireless driver support

Primary development is now in FreeBSD-HEAD.

This work attempts to bring in fixes both from Linux ath9k (from the wireless-testing branch), the Atheros HAL code (not currently open source) and from local testing.

The eventual aim is to support all current and past Atheros wireless devices with a clean, portable, documented driver and HAL.

Please see the HAL device page for more information.

Please see the Hal Hardware Support Page for more information.

  • 802.11a (5GHz)
  • 802.11bg (2GHz)
  • Half and Quarter rate modes in 5GHz for AR5212 family NICs
  • Turbo (static 40mhz mode) for AR5212 family NICs
  • 900mhz NIC support (TODO: which NICs)
  • 802.11na (5GHz) and 802.11ng (2.4GHz), 1 and 2 stream operation (MCS0-15), HT/20 and HT/40 channel width

TODO

Please see the ANI page for more information.

The DFS machinery is driven by code in the net80211 stack. The driver simply reports that a radar event has been detected.

At this stage, ath(4) does not support radar detection. This may change in the future.

For an introduction to the radar detection/classification information currently available, please see the HAL Radar Detection page. This includes links to some relevant Atheros Patents.

There's also some initial software support for extracting the information out via userland at RadarFFT.

Please see the 80211n page for further information.

net80211 A-MPDU/A-MSDU TX support - STA Unimplemented Needs implementing
net80211 A-MPDU/A-MSDU TX support - AP Unimplemented Needs implementing
ath 11n TX support In progress Basic 11n TX seems to work - no A-MPDU/A-MSDU is implemented. HT40/ShortGI works.
ath 11n protection Buggy - In Progress There's no legacy protection for 11n frames. Investigate and fix!
RIFS Unimplemented Unimplemented
Radar Detection In progress Unimplemented
AR9285 PCIe LOCAL_TIMEOUT Investigation Some people w/ AR9285's are seeing LOCAL_TIMEOUT errors (which are currently not fatal); add some debugging code to see what kinds of circumstances trigger these and try to repair it

The following is a set of simple projects which interested developers can use to get familiar with the ath/hal codebase.

  • Bluetooth Coexistence for AR9280/AR9285 - port ath9k btcoex routines and add some debugging to ensure it's actually functioning.
  • RFKill for AR5416 and later (both software and hardware) - investigate how it's done for the previous chipsets (AR5212 in particular) and what ath9k does; then plan out a implementation and testing plan.
  • Tidy up the build structure for the ath tools so they can be included in the system by default?
  • Modify if_ath.c to report the per-radio control/extension noise floor and RSSI - net80211 has already been taught about it, ath_hal has been taught about how to export the statistics; all that's needed is the glue in if_ath.c.
  • Support channel busy surveys (a la mac80211.)
  • (Re) Test Quarter/Half rate support for the AR5212/AR5213 and derivatives.
  • (Re) Test long link support for AR5212/AR5213 and derivatives - this essentially tweaks the ACK, RTS, CTS and various IFS timings to support long distance links.
  • Implement Quarter/Half rate support for AR5416 and later chipsets - non-11n and 11n modes.
  • Implement long link support for AR5416 and later chipsets
  • (Re) Test TDMA support for AR5212/AR5213 and derivatives.
  • Implement TDMA support for AR5416 and later chipsets - non-11n and 11n modes.
  • Investigate and fix power saving mode(s).
  • ATIM?
  • Auto-sleep support in AR9280 and later?
  • AR9271 and USB support in the HAL - a pre-requisite for supporting the 11n NICs after the AR9170-based devices.
  • Implement per-packet TPC (Transmission Power Control) for chipsets which support it - required for full DFS support.

= Completed Wish List ==

  • Implement software TX aggregation and retransmit for AR5416 and later chipsets in 11n mode.
  • The HAL configuration variables are global (eg debug, beacon timer adjustments, ALQ logging.) It would be nice to have these per-HAL instance - so move them to the public part of the ath_hal struct and initialise them on device attach. They're not per-vif; they're per-device.
  • I've added quite a few more statistics to the per-device ioctl statistics (sys/dev/ath/if_athioctl.h); athstats needs to be taught about these new statistics so they can be reported.
ath multi-SSID support - < AR5416 Fixed This needs testing - both open and WEP/WPA
ath multi-SSID support - >= AR5416 Fixed There's bugs in the hardware encryption handling - this needs to be investigated and fixed!
ath multicast search key support Fixed Disabled in this codebase because the current code in -HEAD breaks AES/CCMP encryption, required for 802.11n. Find and repair the damage.
ath 11n RX support Fixed Basic 11n RX seems to work - A-MPDU/A-MSDU seems buggy and needs to be debugged
net80211 HT/20 support - 2.4ghz Fixed This is the current mode being used to test
net80211 HT/20 support - 5ghz Fixed Needs testing
net80211 HT/40 support Fixed Needs implementing
net80211 short-GI support Fixed Needs testing
net80211 11n STA mode Fixed This is being tested at the moment
net80211 11n AP mode Fixed Needs implementing
net80211 A-MPDU/A-MSDU RX support Fixed A-MPDU issues resolved; Ath cards require ampdudensity of 8
  • dev/ath_4.1340239786.txt.gz
  • Last modified: 2012/06/21 00:49
  • by AdrianChadd