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.
Supported Hardware
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.
Operating Modes
- 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
Driver Components
- 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.
Bug List
- Check FreeBSD GNATS for bugs filed to freebsd-wireless
Work in progress
| 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 |
Small Project Wish List
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.
Larger Project Wish List
- 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.
Fixed Issues
| 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 |
Useful Links
- Atheros Patent: Adaptive Noise Immunity: http://www.freepatentsonline.com/7349503.html
- Atheros Patent: Noise Floor Calibration / Signal Strength Detection: http://www.freepatentsonline.com/7245893.html
- Atheros Patent: Offset/Gain calibration for ADCs: http://www.freepatentsonline.com/7541952.html
- Atheros Patent: Radar Pulse Detection/Estimation: http://ip.com/patent/US6891496
- May 2008 IEEE: Atheros 2.4/5 Ghz 2×2 MIMO SoC (talk slides?): http://www.ewh.ieee.org/r6/scv/ssc/May2008_WLAN.pdf