This is an old revision of the document!


Atheros wireless driver support

| Driver | HAL | Supported Hardware | 802.11n support | Debugging |

This is the driver for the Atheros PCI/PCIe NICs.

The in-tree driver supports all of the Atheors PCI/PCIe NICs up to the AR9287. This includes the pre-11n chipsets and all 11n chipsets up to the AR9227/AR9287.

Notably - this doesn't yet support the AR5513 MIMO 802.11abg NIC, the AR5523 NICs (AR5212 + USB), the AR7010 series USB NICs, or the AR9271 series USB NICs.

The driver supports the required features for the later series chips (AR9380 and later) and there is an open source HAL (see https://github.com/erikarn/qcamain_open_hal_public) but the HAL has not yet been integrated into FreeBSD-HEAD.

Please see the Hal Hardware Support Page for further more information.

  • 802.11a (5GHz)
  • 802.11bg (2GHz)
  • Half and Quarter rate modes in 5GHz for AR5212 family NICs, AR5416, AR9130, AR9160, AR9280, AR9285 (specifically not AR9287 at the moment)
  • 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, short-GI
  • Mesh, 802.11n support, TDMA support
  • Rate control: Please see the rate control page for more information.
  • Ambient/Automatic Noise Immunity (ANI): Please see the ANI page for more information.
  • Radar pulse detection: 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.
  • 802.11n support: Please see the 80211n page for further information.
  • HAL: Please see the HAL device page for more information.
RIFS Unimplemented Unimplemented
Radar Detection In progress Unimplemented
AR9300/AR94xx/AR95xx support In progress Driver support is in-tree; the HAL is open source but not yet in tree
Non-aggregate software retry support Planned This requires some very strict retransmission behaviour in order to ensure frames aren't transmitted out of order
AP PS-POLL and uAPSD support In progress PS-POLL is in progress; uAPSD will follow
802.11n TDMA support Planned Planned
STA mode powersave Planned Planned
802.11n mesh support Planned Planned

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 - the routines have been ported; but require some integration work and testing.
  • 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 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 long link support for AR5416 and later chipsets
  • 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.
  • (Re) Test Quarter/Half rate support for the AR5212/AR5213 and derivatives.
  • Implement Quarter/Half rate support for AR5416 and later chipsets - non-11n and 11n modes.
  • 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.
  • (Re) Test TDMA support for AR5212/AR5213 and derivatives.
  • Implement TDMA support for AR5416 and later chipsets - non-11n and 11n modes.
ath multi-SSID support - < AR5416 Fixed This needs testing - both open and WEP/WPA
ath multi-SSID support - >= AR5416 Fixed Some further testing would be nice!
ath multicast search key support Fixed Fixed
ath 11n RX support Fixed Completed
net80211 HT/20 support - 2.4ghz Fixed Completed
net80211 HT/20 support - 5ghz Fixed Completed
net80211 HT/40 support Fixed Completed
net80211 short-GI support Fixed Completed
net80211 11n STA mode Fixed Completed
net80211 11n AP mode Fixed Completed
net80211 A-MPDU/A-MSDU RX support Fixed A-MPDU issues resolved; Ath cards require ampdudensity of 8
  • dev/ath_4.1365286910.txt.gz
  • Last modified: 2013/04/06 22:21
  • by AdrianChadd