██████╗ ██████╗ ██████╗ █████╗ █████╗
██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗
██████╔╝██████╔╝██████╔╝███████║███████║
██╔══██╗██╔══██╗██╔═══╝ ██╔══██║██╔══██║
██║ ██║██║ ██║██║ ██║ ██║██║ ██║
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝
This repository contains the development of the rate & power controller Robust Rate Adaptation Algorithm (RRPAA) for ath9k drivers. It adds the RRPAA algorithm to the Linux mac80211 subsystem and it also updates the driver ath9k in order to be consistent with the new algorithm. It is based on the RRPAA algorithm specification defined on "IEEE 802.11 parameters adaptation for Performance enhancement in high density Wireless networks" master thesis by Matías Richart.
The code was made in 2 steps:
- Adding power support to Linux mac80211 subsystem.
- Adding the implementation of the RRPAA algorithm.
The first step is based on the code generated by Thomas Hühn in his Mintrel Blues rate & power controller implementation. We updated a bit this code and we integrated it to the ath9k driver. In the second step we created the RRPAA algorithm in three files:
rc80211_rrpaa.hdefines all constants and structures to be used by the algorithm.rc80211_rrpaa.ccontains the algorithm.rc80211_rrpaa_debugfs.ccontains the debugger functions.
Our development environment is Linux OpenWRT on embedded routers driving Atheros ath9k WiFi hardware
- get the current trunk verision of OpenWRT (
git clone https://github.com/openwrt/openwrt.git) - checkout RRPAA current version
- copy all patches from the src folder into /openwrt/packages/kernel/mac80211/patches
- Add
MAC80211_RC_RRPAAandMAC80211_RC_DEFAULT_RRPAAconstants belowMAC80211_RC_MINSTREL_VHTconstant in the mac80211 makefile (openwrt/package/kernel/mac80211/Makefile). - rebuild mac80211 subsystem by:
make package/mac80211/{clean,compile}or re-build complite OpenWrt - install new mac80211 package and new ath9k packages or flash full image to your router
You can use the rrpaa_install.sh script, which will make automatically the step 1 to the step 5.
Everybody can participate, and any help is highly appreciated. Feel free to send pull requests or open a new issue via GitHub.