dev:ath_4

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.

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.1333150698.txt.gz
  • Last modified: 2012/03/30 23:38
  • by AdrianChadd