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
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
AR9300/AR94xx/AR95xx support In progress In progress
Filtered frames support In progress In progress
Non-aggregate software retry support Planned In progress
AP PS-POLL and uAPSD support Planned Requires correct filtered frames and software retry support before this is feasible

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 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.
  • 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 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.1365286676.txt.gz
  • Last modified: 2013/04/06 22:17
  • by AdrianChadd