1) The command
iwconfig wlan0 rate 54M fixed
is inefficient[1] since Linux kernel itself invocates one of the two default rate control algorithms:
- minstrel (and/or minstrel_ht)
- PID
You can verify which was chosen for your interface by checking the output of 'dmesg'.
In case the algorithm is 'minstrel/minstrel_ht', to manually set the rates, do the following from the terminal (as a root user)
# echo 'index' > /sys/kernel/debug/ieee80211/phy0/rc/fixed_rate_idx
where the 'index' is an allowed 'rate index'. You can try small integers. This adjusts the rate to some fixed value in a few seconds.
References:
http://lxr.free-electrons.com/source/net/mac80211/rc80211_minstrel.h#L113
[1] I need someone to comment on this 'inefficiency'.
2) The switch
CONFIG_MAC80211_HAS_RC=y (and similar switches around it in the 'kernel .config file')
can be played with. However,
Failed to select rate control algorithm
is one message I found in 'dmesg' output once I did that and no wireless interfaces worked. I believe there's a dependency on this 'rate control' algorithm in the ath*k drivers. I would like to know if this can be avoided somehow.
Acknowledgements:
Thanks to @bcopeland and @johill at #linux-wireless for the guidance all the way!