Increasingly, 802.11 devices are being used by mobile users. This results in very dynamic wireless channels that are difficult to use efficiently. Current rate selection algorithms are dominated by probe-based approaches that search for the best transmission rate using trial-and-error. In mobile environments, probe-based techniques often perform poorly because they inefficiently search for the moving target presented by the constantly changing channel. We have developed a channel-aware rate adaptation algorithm - CHARM - that uses signal strength measurements collected by the wireless cards to help select the transmission rate. Moreover, unlike previous approaches CHARM leverages channel reciprocity to obtain channel information, so the information is available to the transmitter without incurring RTS/CTS overhead. This combination of techniques allows CHARM to respond quickly to dynamic channel changes. We implemented CHARM in the Madwifi driver for wireless cards using the Atheros c...