| Home | |
| Disabling Carrier Sense on Wireless Devices | |
| Prof. Hari Balakrishnan's group at MIT has a webpage where they describe two ways of disabling carrier sense on Atheros-based wireless cards using the Madwifi driver. The first way is to use Openhal. Openhal is supposed to have a flag in the code that can simply be set to zero to turn off carrier sense. (The value of this flag is basically copied to a particular bit in a particular register in the hardware, and this bit controls the carrier sense function.) | |
| On trying this out and looking through the Openhal code, I figured out that this flag works only for Atheros 5210 chipsets (typically used in cards that only have 802.11a support). 802.11a/b/g cards use the 5212 chipset. Further, on talking to some people from Atheros I found that: 1. The carrier sense function is a part of the radio sub-system, which is the most rapidly evolving component of any chipset, and whose implementation can vary significantly between different incarnations of the same chipset. 2. Bits/registers that can control carrier sense are only used for diagnostics by the chip manufacturer. Such controls are not part of any hardware interface, and therefore can change completely between different incarnations of the same chipset. In other words, even if one knows what bit in what register to turn off in order to disable carrier sense for a particular chip, this may not work on a different incarnation of the same chip. 3. Atheros will not give out information about what bit/register (if any) controls carrier sense in a particular chip implementation, except to licensed manufacturing customers under agreement. | |
| So, the flag mentioned by the MIT group works only for the 5210 chipset (and probably for some specific implementation only). It is extremely difficult, if not impossible, to figure out what bit/register to tweak to achieve the same thing in a different chipset. | |
| The second method described by the MIT group (this is the method they used for their EWIND 2005 paper) involves disabling random backoff. This gives the effect of disabling carrier sense under specific transmission patterns (see their webpage for details). I have not been able to get this method to work either :( Again it appears that the problem may have to do with chip/driver versions. Also, using this method limits the kind of experiments that can be run (since it requires that all senders broadcast equal sized packets and keep their send queues full continuously). | |
| Home |