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 Atheros PCI/PCIe NICs. This includes the pre-11n chipsets and all 11n chipsets up to the AR9227/AR9287 (using sys/dev/ath/ath_hal/) and AR9380 and later (using sys/contrib/dev/ath/ath_hal/).
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.
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, 2 and 3 stream operation (MCS0-23), HT/20 and HT/40 channel width, short-GI
- Mesh, 802.11n support, TDMA support
- STA powersave support
- AP powersave 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 dev/ath(4)/RadarFFT.
802.11n support: Please see the dev/ath(4)/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 |
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 done; uAPSD will follow |
802.11n TDMA support |
In progress |
802.11n rates work, A-MSDU support is needed to reach full 802.11n throughput |
802.11n mesh support |
Planned |
Planned |
Add/document MCI bluetooth coex support |
Planned |
Planned |
PAPRD for AR9380 and later |
Planned |
Planned |
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?
Larger Project Wish List
- 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.
Completed Wish List
- (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.
- Implement per-packet TPC (Transmission Power Control) for chipsets which support it - required for full DFS support.
- 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.
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 2x2 MIMO SoC (talk slides?): https://web.archive.org/web/20080830021352/http://www.ewh.ieee.org/r6/scv/ssc/May2008_WLAN.pdf