Go back –> Atheros Linux wireless drivers
ar9271 is an 802.11n 1-stream USB chipset by Atheros. This page covers its development.
Subscribe to this page!
You should subscribe to this page so you can get e-mail updates on changes and news for ar9271 automatically. You'll get an e-mail as soon as this page gets updated.
Since ar9271 support is not yet upstream and the driver is still being worked on we use the Linux driver project mailing list to track its development and patches:
ar9271 support is still under development.
If you'd like to work on development for ar9271 get the code first:
ar9271 requires firmware, you can get ar9271fw from:
You can send patches to:
To: firstname.lastname@example.org Cc: email@example.com
ar9271 hw support
Initial hw support for ar9271 has been committed onto wireless-testing. These patches only added the necessary changes onto ath9k to support the ar9271 hardware. HTC/HIF_USB modules are already on its way on being ported. The last step to support ar9271 will be a new mac80211 driver which makes uses of HTC/HIF_USB and the ath9k hw routines as well as the shared ath.ko for.
ar9271 and ar9170 seem to share a few things, one of which is firmware upload. ar9271's firmware upload routine was modified to make it match ar9170's as much as possible to share it on ath.ko. The only difference between the firmware upload is on ar9170 you can sometimes not account for the success of the last urb submitted which tells the harware the firmware was loaded.
Sharing code between ar9271 and ar6k
Sharing code between ar9271 and ar6k may be possible as the same HTC framework is used. ar6k uses ethernet-like frames though so more review is required.
Atheros host target communication
The Atheros host / target communication framework consists of 3 parts:
- HTC - Host Target Communication
- HIF - Host Interface Layer
- WMI - Wireless Module Interface
ar9271 relies on the Atheros HTC (Host/Target Communication) for the communication between the host CPU the device is present on and between the ar9271 CPU (target).
The Atheros HTC defines a very basic API which allows designers to build protocols of communication for a specific target (device with CPU) and an interconnect/bus. The protocols of communication are Operating System agnostic and architecture agnostic.
When necessary the HTC APIs can be extended to accommodate different interconnects. HTC can also be extended to make enhancements which would make communication more suitable for an Operating System.
It should be noted HTC was originally implemented to accommodate the Atheros AR6000 wireless chipset on Linux and Windows mobile for use on SDIO and SPI.
HTC TX / RX completion callbacks
These TX and RX callbacks in HTC will themselves check the endpoint target and call a respective callback for each endpoint. Control messages are processed via the endpoint 0. Only the RX completion callback makes use of the control endpoint, messages in the control endpoint for TX are disregarded. Buffers are always freed in the TX completion HTC callback. Buffers are only freed by the RX completion HTC callback if the endpoint target does not have a registered callback or if the endpoint is the control endpoint.
HTC Control messages
Messages sent to the RX completion HTC callback on the control endpoint have a message ID which identifies what control message is being received. There are 3 HTC control messages IDs:
When this message is received HTC calls HTCProcessTargetReady().
When this message is received HTC calls HTCProcessConnectionRsp().
When this message is received HTC calls HTCProcessConfigPipeRsp().
The Host InterFace layer, originally designed first for the AR6000 device, is the interconnect driver interface used by a driver. It uses HTC to register callbacks for device insertion and removal, for registration with HTC. ar9271 is the first HIF USB device, as such we have implemented its own HIF driver for USB. The ar9271 module would use the HIF layer to allocate the URBs needed for communication from/to the device. The HIF layer module also defines the callbacks to deal with URBs after being submitted for processing. During initialization the HIF layer uploads the firmware to the ar9271 device upon device probe.
The Wireless Module Interface, also designed first for AR6000, a wireless protocol of communication for Atheros wireless devices using a host/target split. WMI defines commands which you can issue to the target firmware or that the target firmware can send back for processing. WMI also has events for which callbacks are registered, each event has registered callback.