Madwifi is a Linux kernel driver for Wireless LAN chipsets from Atheros. The Wiki pages create here are used to store extensive knowledge about Madwifi driver and new feature developments for WINLAB developpers.The official MadWifi website has very limited useful information for new developments. This is a good starting point to learn, share and practise new implementations which could enhance MAC, PHY/Radio and other cross-layer wireless research projects of WINLAB.

Driver Features WishList

Here is a wish list of features we would like to be implemented or exposed

Currently Supported Per Packet Statistics by the Madwifi Driver

The following per packet statistics are currently being provided by madwifi driver.

  • RSSI : RSSI is provided on a per packet basis by the madwifi driver. Libmac provides an interface to this parameter on a per packet basis as an appended parameter to each of the frames on the receive side.
  • Timestamp : The receive side timestamp is provided as a 64 bit value of the microsecond resolution timer appended on the receive side by the madwifi driver on a per packet basis.
  • Current Transmit Rate : The current transmit rate is provided on a per packet basis by the madwifi driver as a receive side appended parameter on the received frames.
  • Priority : The 802.1q parameter “priority” of the MAC frames is provided by the madwifi driver. The priority field is used to set the priority field in the VLAN tagged MAC layer frames injected as 802.1q frames in case of non-zero value for the priority field.




Openhal is a port of the OpenBSD hal for atheros device drivers that is source-compatible with the Madwifi driver for linux. Openhal can be obtained directly from Openhal source is provided along with the WINLAB Madwifi and the user can build the driver with Openhal as opposed to the binary-only HAL in the madwifi driver source. To build with Openhal, place the Openhal source directory in the Madwifi directory. Now edit and set the following:

HAL=${DEPTH}/openhal ATH_HAL=${DEPTH}/openhal

After this, go to the top directory and build like you normally would.


Madwifi-ng is the new madwifi driver code from Atheros that supports additional features including Virtual AP’s, WDS, XR, Compression etc. Please refer to for more information on the current state of madwifi-ng, features supported and planned in future releases. WINLAB specific features including per-packet statistics have been ported to madwifi-ng and is expected to be the madwifi driver to be supported in the future.

CW behaviour

CW cannot be set to arbitrary values, HAL accepts on power of 2 values. Hence, adjustments are restricted to discrete levels.

Rate Control Algorithms

Monitor Mode

  • What happened if set to promiscuous?

Hacking CCA

Refer Multi-MAC Paper

Channel Switch

Atheros Tools

Ath Stats

The following ath stats have been added to libmac's mac_params and and accessible through the libmac provided interface mac_get_params() to driver statistics.

mac_watchdog, mac_hardware, mac_bmiss, mac_bstuck, mac_rxorn, mac_rxeol, mac_txurn, mac_mib, mac_intrcoal, mac_tx_packets, mac_tx_mgmt, mac_tx_discard, mac_tx_invalid, mac_tx_qstop, mac_tx_encap, mac_tx_nonode, mac_tx_nobuf, mac_tx_nobufmgt, mac_tx_linear, mac_tx_nodata, mac_tx_busdma, mac_tx_xretries, mac_tx_fifoerr, mac_tx_filtered, mac_tx_shortretry, mac_tx_longretry, mac_tx_badrate, mac_tx_noack, mac_tx_rts, mac_tx_cts, mac_tx_shortpre, mac_tx_altrate, mac_tx_protect, mac_tx_ctsburst, mac_rx_nobuf, mac_rx_busdma, mac_rx_orn, mac_rx_crcerr, mac_rx_fifoerr,


mac_rx_badmic, mac_rx_phyerr, mac_rx_phy, mac_rx_tooshort, mac_rx_toobig, mac_rx_packets, mac_rx_mgt, mac_rx_ctl, mac_tx_rssi, mac_rx_rssi, mac_be_xmit, mac_be_nobuf, mac_per_cal, mac_per_calfail, mac_per_rfgain, mac_rate_calls, mac_rate_raise, mac_rate_drop, mac_ant_defswitch, mac_ant_txswitch, mac_ant_rx, mac_ant_tx

Please note that the above are the same aggregate statistics provided by ath_stats() and are read only using the libmac interface.


  1. Overlay MAC (Mobisys paper) Comments
  2. Pipeline MAC (E-Wind paper) Comments
  3. MultiMAC Comments
Last modified 18 years ago Last modified on Aug 25, 2006, 9:25:55 PM
Note: See TracWiki for help on using the wiki.