On Fri, 2006-03-24 at 08:18 -0800, Jouni Malinen wrote:
> On Thu, Mar 23, 2006 at 10:43:38PM +0000, David Woodhouse wrote:
> 
> > This patch makes us default to 11M, which ought to work for most people.
> 
> Is this code supposed to work with IEEE 802.11a (which would also use
> OFDM modulation)? If yes, please note that 11 Mbps is not a valid IEEE
> 802.11a TX rate.

Er, well spotted. Let's do it like this instead...

diff --git a/net/ieee80211/softmac/ieee80211softmac_module.c 
b/net/ieee80211/softmac/ieee80211softmac_module.c
index 6f99f78..60f06a3 100644
--- a/net/ieee80211/softmac/ieee80211softmac_module.c
+++ b/net/ieee80211/softmac/ieee80211softmac_module.c
@@ -183,16 +183,21 @@ void ieee80211softmac_start(struct net_d
         */
        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)
diff --git a/net/ieee80211/softmac/ieee80211softmac_wx.c 
b/net/ieee80211/softmac/ieee80211softmac_wx.c
index e1a9bc6..b559aa9 100644
--- a/net/ieee80211/softmac/ieee80211softmac_wx.c
+++ b/net/ieee80211/softmac/ieee80211softmac_wx.c
@@ -135,11 +135,15 @@ ieee80211softmac_wx_set_rate(struct net_
        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) {

-- 
dwmw2

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to