[PATCH] ieee80211softmac: Fix setting of initial transmit rates
authorLarry Finger <Larry.Finger@lwfinger.net>
Wed, 14 Feb 2007 00:58:03 +0000 (18:58 -0600)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 14 Feb 2007 20:45:05 +0000 (15:45 -0500)
There is a bug in ieee80211softmac that always sets the user rate
to 11Mbs, no matter the capabilities of the device. This bug was
probably beneficial as long as the bcm43xx cards were rate limited;
however, most are now capable of relatively high speeds. This patch
fixes that bug and eliminates an assert that is no longer needed.

Once the cards are capable of full OFDM speeds, the 24 Mbs rate will
be changed to 54 Mbs.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/ieee80211/softmac/ieee80211softmac_module.c
net/ieee80211/softmac/ieee80211softmac_wx.c

index 256207b71dc94ce135aca1d3adc36f5c49875305..770a068b298bb822871164343f39d4fceb22d62e 100644 (file)
@@ -265,17 +265,10 @@ void ieee80211softmac_init_bss(struct ieee80211softmac_device *mac)
        /* Change the default txrate to the highest possible value.
         * The txrate machine will lower it, if it is too high.
         */
-       /* 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) {
+       if (ieee->modulation & IEEE80211_OFDM_MODULATION)
+               txrates->user_rate = IEEE80211_OFDM_RATE_24MB;
+       else
                txrates->user_rate = IEEE80211_CCK_RATE_11MB;
-       } else if (ieee->modulation & IEEE80211_OFDM_MODULATION) {
-               txrates->user_rate = IEEE80211_OFDM_RATE_54MB;
-       } else
-               assert(0);
 
        txrates->default_rate = IEEE80211_CCK_RATE_1MB;
        change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
index fa2f7da606a95488f5893b5cf4538c6083b770b9..89c83fa9aacb1fd91e6be04a2ae0a5a8c2c44065 100644 (file)
@@ -177,15 +177,10 @@ ieee80211softmac_wx_set_rate(struct net_device *net_dev,
        int err = -EINVAL;
 
        if (in_rate == -1) {
-               /* 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;
+               if (ieee->modulation & IEEE80211_OFDM_MODULATION)
+                       in_rate = 24000000;
                else
-                       in_rate = 54000000;
+                       in_rate = 11000000;
        }
 
        switch (in_rate) {