[PATCH] softmac: reduce default rate to 11Mbps.
authorDavid Woodhouse <dwmw2@infradead.org>
Thu, 23 Mar 2006 22:43:38 +0000 (22:43 +0000)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 27 Mar 2006 19:04:13 +0000 (14:04 -0500)
We don't make much of an attempt to fall back to lower rates, and 54M
just isn't reliable enough for many people. In fact, it's not clear we
even set it to 11M if we're trying to associate with an 802.11b AP.

This patch makes us default to 11M, which ought to work for most people.
When we actually handle dynamic rate adjustment, we can reconsider the
defaults -- but even then, probably it makes as much sense to start at
11M and adjust it upwards as it does to start at 54M and reduce it.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/ieee80211/softmac/ieee80211softmac_module.c
net/ieee80211/softmac/ieee80211softmac_wx.c

index 6f99f781bff820fcfbb7718165bf7d57b755b995..60f06a31f0d1ada1bdaa1d7ae735f8fa607070d3 100644 (file)
@@ -183,16 +183,21 @@ void ieee80211softmac_start(struct net_device *dev)
         */
        if (mac->txrates_change)
                oldrates = mac->txrates;
-       if (ieee->modulation & IEEE80211_OFDM_MODULATION) {
-               mac->txrates.default_rate = IEEE80211_OFDM_RATE_54MB;
-               change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
-               mac->txrates.default_fallback = IEEE80211_OFDM_RATE_24MB;
-               change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
-       } else if (ieee->modulation & IEEE80211_CCK_MODULATION) {
+       /* FIXME: We don't correctly handle backing down to lower
+          rates, so 801.11g devices start off at 11M for now. People
+          can manually change it if they really need to, but 11M is
+          more reliable. Note similar logic in
+          ieee80211softmac_wx_set_rate() */     
+       if (ieee->modulation & IEEE80211_CCK_MODULATION) {
                mac->txrates.default_rate = IEEE80211_CCK_RATE_11MB;
                change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
                mac->txrates.default_fallback = IEEE80211_CCK_RATE_5MB;
                change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
+       } else if (ieee->modulation & IEEE80211_OFDM_MODULATION) {
+               mac->txrates.default_rate = IEEE80211_OFDM_RATE_54MB;
+               change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
+               mac->txrates.default_fallback = IEEE80211_OFDM_RATE_24MB;
+               change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
        } else
                assert(0);
        if (mac->txrates_change)
index e1a9bc6d36fffb840686996678b802fabe229b41..b559aa9b5507712acea32ca7b6e7c614e5e37773 100644 (file)
@@ -135,11 +135,15 @@ ieee80211softmac_wx_set_rate(struct net_device *net_dev,
        int err = -EINVAL;
 
        if (in_rate == -1) {
-               /* automatic detect */
-               if (ieee->modulation & IEEE80211_OFDM_MODULATION)
-                       in_rate = 54000000;
-               else
+               /* FIXME: We don't correctly handle backing down to lower
+                  rates, so 801.11g devices start off at 11M for now. People
+                  can manually change it if they really need to, but 11M is
+                  more reliable. Note similar logic in
+                  ieee80211softmac_wx_set_rate() */     
+               if (ieee->modulation & IEEE80211_CCK_MODULATION)
                        in_rate = 11000000;
+               else
+                       in_rate = 54000000;
        }
 
        switch (in_rate) {