Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dev:ath_4 [2011/11/22 13:58] – AdrianChadddev:ath_4 [2020/11/14 23:04] (current) – Fix 1 broken link | archive.org SashaVigole
Line 1: Line 1:
 ====== Atheros wireless driver support ====== ====== Atheros wireless driver support ======
  
-%%|%% [[dev/ath(4)|Driver]] | [[dev/ath_hal(4)|HAL]] | [[dev/ath_hal(4)/HardwareSupport|Supported Hardware]] | [[dev/ath(4)/80211n|802.11n support]] |+%%|%% [[dev/ath(4)|Driver]] | [[dev/ath_hal(4)|HAL]] | [[dev/ath_hal(4)/HardwareSupport|Supported Hardware]] | [[dev/ath(4)/80211n|802.11n support]] | [[dev/ath(4)/Debugging|Debugging]] |
  
-===== Location =====+This is the driver for the Atheros PCI/PCIe NICs.
  
-Primary development is now in %%FreeBSD%%-HEAD.+===== Supported Hardware =====
  
-===== Why? =====+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/).
  
-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. +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 eventual aim is to support all current and past Atheros wireless devices with a clean, portable, documented driver and HAL. +
- +
-===== HAL ===== +
- +
-Please see the [[dev/ath_hal(4)|HAL device page]] for more information. +
- +
-===== Supported Hardware =====+
  
-Please see the [[dev/ath_hal(4)/HardwareSupport|Hal Hardware Support Page]] for more information.+Please see the [[dev/ath_hal(4)/HardwareSupport|Hal Hardware Support Page]] for further more information.
  
 ===== Operating Modes ===== ===== Operating Modes =====
Line 25: Line 17:
   * 802.11a (5GHz)   * 802.11a (5GHz)
   * 802.11bg (2GHz)   * 802.11bg (2GHz)
-  * Half and Quarter rate modes in 5GHz for AR5212 family NICs+  * 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   * Turbo (static 40mhz mode) for AR5212 family NICs
   * 900mhz NIC support (TODO: which 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+  * 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
  
-===== Rate Control =====+===== Driver Components =====
  
-TODO +  * Rate control: Please see the [[dev/ath_rate(4)|rate control page]] for more information. 
- +  * Ambient/Automatic Noise Immunity (ANI): Please see the [[dev/ath_hal(4)/AutomaticNoiseImmunity|ANI page]] for more information. 
-===== Ambient Noise Immunity (ANI) ===== +  * Radar pulse detection: Please see the [[dev/ath_hal(4)/RadarDetection|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. 
-Please see the [[dev/ath_hal(4)/AutomaticNoiseImmunity|ANI page]] for more information. +  * HAL: Please see the [[dev/ath_hal(4)|HAL device page]] for more information.
- +
-===== DFS/Radar Detection ===== +
- +
-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 [[dev/ath_hal(4)/RadarDetection|HAL Radar Detection]] page. This includes links to some relevant Atheros Patents. +
- +
-===== 802.11n support ===== +
- +
-Please see the [[dev/ath(4)/80211n]] page for further information.+
  
 ===== Bug List ===== ===== Bug List =====
Line 56: Line 39:
 ===== Work in progress ===== ===== Work in progress =====
  
-| 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 | | RIFS | Unimplemented | Unimplemented |
 | Radar Detection | In progress | 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 | +| Non-aggregate software retry support | Planned | This requires some very strict retransmission behaviour in order to ensure frames aren't transmitted out of order | 
-| AR5416 regression | Investigation | +| AP PS-POLL and uAPSD support | In progress | PS-POLL done; uAPSD will follow | 
-| AR9285 regression | Investigation |+| 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 ===== ===== Small Project Wish List =====
Line 70: Line 52:
 The following is a set of simple projects which interested developers can use to get familiar with the ath/hal codebase. The following is a set of simple projects which interested developers can use to get familiar with the ath/hal codebase.
  
-  * 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. +  * Bluetooth Coexistence for AR9280/AR9285 - the routines have been ported; but require some integration work and testing.
-  * 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.   * 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.
-  * 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. 
   * Tidy up the build structure for the ath tools so they can be included in the system by default?   * 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 ===== ===== Larger Project Wish List =====
  
-  * Implement software TX aggregation and retransmit for AR5416 and later chipsets in 11n mode. 
   * Support channel busy surveys (a la mac80211.)   * 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.   * (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   * 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).   * Investigate and fix power saving mode(s).
   * ATIM?   * ATIM?
   * Auto-sleep support in AR9280 and later?   * 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.   * 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.   * 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 ===== ===== Fixed Issues =====
  
 | ath multi-SSID support - < AR5416 | Fixed | This needs testing - both open and WEP/WPA | | 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 multi-SSID support - >= AR5416 | Fixed | Some further testing would be nice! | 
-| 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 multicast search key support | Fixed | Fixed | 
-| ath 11n RX support | Fixed | Basic 11n RX seems to work - A-MPDU/A-MSDU seems buggy and needs to be debugged | +| ath 11n RX support | Fixed | Completed | 
-| net80211 HT/20 support - 2.4ghz | Fixed | This is the current mode being used to test | +| net80211 HT/20 support - 2.4ghz | Fixed | Completed | 
-| net80211 HT/20 support - 5ghz | Fixed | Needs testing | +| net80211 HT/20 support - 5ghz | Fixed | Completed | 
-| net80211 HT/40 support | Fixed | Needs implementing | +| net80211 HT/40 support | Fixed | Completed | 
-| net80211 short-GI support | Fixed | Needs testing | +| net80211 short-GI support | Fixed | Completed | 
-| net80211 11n STA mode | Fixed | This is being tested at the moment | +| net80211 11n STA mode | Fixed | Completed | 
-| net80211 11n AP mode | Fixed | Needs implementing |+| net80211 11n AP mode | Fixed | Completed |
 | net80211 A-MPDU/A-MSDU RX support | Fixed | A-MPDU issues resolved; Ath cards require ampdudensity of 8 | | net80211 A-MPDU/A-MSDU RX support | Fixed | A-MPDU issues resolved; Ath cards require ampdudensity of 8 |
  
Line 113: Line 98:
   * Atheros Patent: Offset/Gain calibration for ADCs: [[http://www.freepatentsonline.com/7541952.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]]   * Atheros Patent: Radar Pulse Detection/Estimation: [[http://ip.com/patent/US6891496]]
-  * May 2008 IEEE: Atheros 2.4/5 Ghz 2x2 MIMO %%SoC%% (talk slides?): [[http://www.ewh.ieee.org/r6/scv/ssc/May2008_WLAN.pdf]]+  * 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]]
  
  • dev/ath_4.1321970334.txt.gz
  • Last modified: 2011/11/22 13:58
  • by AdrianChadd