Atheros chipsets such as AR5001X+ found in IBM_11a/b/g_Wireless_LAN_Mini_PCI_Adapter and AR5004X found in IBM_11a/b/g_Wireless_LAN_Mini_PCI_Adapter_II support atheros Super A and Super G (also known as Turbo) modes. These allow using of two channels for transmition between two Atheros devices, allowing for speeds up to 108Mbit/s.
These modes are however sometimes turned off on the WiFi card's EEPROM. When using Madwifi drivers, you can check, whether it is turned on.
With turbo modes on, madwifi driver should say something like this upon load.
wifi0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: turboA rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: turboG rates: 6Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
If it states onle turboG rate, it may be a problem with countrycode/region domain. Search Madwifi mailinglists for solution. If the driver detects no turbo modes and setting region domain doesn't help, you may need to turn them on. This can probably be done using Microsoft Windows. See this thread.
If you really want to get this to work, and you don't have Windows, it is still possible, so read on.
Setting Turbo modes in Linux
If anybody knows how to do this in a cleaner or nicer way, please rewrite this.
First of all, you need to get drivers from the ath-driver project to work. If these don't work (and they may not!), trying this unnecessarily dangerous, as any slip will render your card useless, as Madwifi closed HAL won't load and you won't be able to access the EEPROM to repair the damage.
Download , or find another ar5k modified to do something similar and modify it to do what you want.
The capability bits, located at 0x00c2 are described in eeprom.c of ath-driver. You need to set the "Disable turbo A" and "Disable turbo G" bits
to 0. Doing this straight away will however violate checksum for EEPROM, which is done XORing subsequent 2-bytes. They should XOR up to 0xffff.
Therefore, if you modify these two bits, you need to add 0x8008 (or whatever orig^new^0xffff gives) somewhere where the EEPROM is not used,
or find out the bits which are actually used
for this. For example bytes around 0x00cc seem to be empty (but may not be with your card! Check it!).
mod2.c contains two commented-out parts. The first can be used for the actual rewriting, the second to dump the relevant parts of EEPROM, which
are 0x00c0 to 0x00c0+832.
If anything bad happens, source code for the ath-driver can be of great help.
Note: On some IBM Wireless LAN Mini PCI Adapters (e.g. FRU 39T0081) the EEPROM is write protected. There is now known way to alter the bits (neither with wbemtest nor with linux)