nexmon – Rev 1

Subversion Repositories:
Rev:
diff -Naur linux-2.6.21.1_orig/net/ieee80211/softmac/ieee80211softmac_module.c linux-2.6.21.1_rawtx/net/ieee80211/softmac/ieee80211softmac_module.c
--- linux-2.6.21.1_orig/net/ieee80211/softmac/ieee80211softmac_module.c 2007-04-27 23:49:26.000000000 +0200
+++ linux-2.6.21.1_rawtx/net/ieee80211/softmac/ieee80211softmac_module.c        2007-12-03 23:38:51.000000000 +0100
@@ -238,18 +238,34 @@
        struct ieee80211softmac_txrates *txrates = &mac->txrates;
        u32 change = 0;
 
-       change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
-       txrates->default_rate = ieee80211softmac_highest_supported_rate(mac, &mac->bssinfo.supported_rates, 0);
+       if (mac->ieee->iw_mode == IW_MODE_MONITOR)
+       {
+               change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
+               txrates->default_rate = mac->txrates.user_rate;
 
-       change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
-       txrates->default_fallback = lower_rate(mac, txrates->default_rate);
+               change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
+               txrates->default_fallback = mac->txrates.user_rate;
 
-       change |= IEEE80211SOFTMAC_TXRATECHG_MCAST;
-       txrates->mcast_rate = ieee80211softmac_highest_supported_rate(mac, &mac->bssinfo.supported_rates, 1);
+               change |= IEEE80211SOFTMAC_TXRATECHG_MCAST;
+               txrates->mcast_rate = mac->txrates.user_rate;
 
-       if (mac->txrates_change)
-               mac->txrates_change(mac->dev, change);
+               if (mac->txrates_change)
+                       mac->txrates_change(mac->dev, change);
+       }
+       else
+       {
+               change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
+               txrates->default_rate = ieee80211softmac_highest_supported_rate(mac, &mac->bssinfo.supported_rates, 0);
+
+               change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
+               txrates->default_fallback = lower_rate(mac, txrates->default_rate);
 
+               change |= IEEE80211SOFTMAC_TXRATECHG_MCAST;
+               txrates->mcast_rate = ieee80211softmac_highest_supported_rate(mac, &mac->bssinfo.supported_rates, 1);
+
+               if (mac->txrates_change)
+                       mac->txrates_change(mac->dev, change);
+       }
 }
 
 void ieee80211softmac_init_bss(struct ieee80211softmac_device *mac)