]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
staging: rtl819su: update MgntQuery_MgntFrameTxRate()
authorFlorian Schilhabel <florian.c.schilhabel@googlemail.com>
Thu, 15 Jul 2010 17:03:27 +0000 (19:03 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 22 Jul 2010 19:00:20 +0000 (12:00 -0700)
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c

index 64016a7a213203cfa46ae2b4e1e9ca61b0edd004..2a970a46eb8226c9de7150973e3ef3d0302483a7 100644 (file)
@@ -183,19 +183,53 @@ void init_mgmt_queue(struct ieee80211_device *ieee)
        ieee->mgmt_queue_tail = ieee->mgmt_queue_head = 0;
 }
 
+u8
+MgntQuery_TxRateExcludeCCKRates(struct ieee80211_device *ieee)
+{
+       u16     i;
+       u8      QueryRate = 0;
+       u8      BasicRate;
+
+
+       for( i = 0; i < ieee->current_network.rates_len; i++)
+       {
+               BasicRate = ieee->current_network.rates[i]&0x7F;
+               if(!ieee80211_is_cck_rate(BasicRate))
+               {
+                       if(QueryRate == 0)
+                       {
+                               QueryRate = BasicRate;
+                       }
+                       else
+                       {
+                               if(BasicRate < QueryRate)
+                               {
+                                       QueryRate = BasicRate;
+                               }
+                       }
+               }
+       }
+
+       if(QueryRate == 0)
+       {
+               QueryRate = 12;
+               printk("No BasicRate found!!\n");
+       }
+       return QueryRate;
+}
 u8 MgntQuery_MgntFrameTxRate(struct ieee80211_device *ieee)
 {
        PRT_HIGH_THROUGHPUT      pHTInfo = ieee->pHTInfo;
        u8 rate;
 
-       // 2008/01/25 MH For broadcom, MGNT frame set as OFDM 6M.
-       if(pHTInfo->IOTAction & HT_IOT_ACT_MGNT_USE_CCK_6M)
-               rate = 0x0c;
+       if(pHTInfo->IOTAction & HT_IOT_ACT_WA_IOT_Broadcom)
+       {
+               rate = MgntQuery_TxRateExcludeCCKRates(ieee);
+       }
        else
                rate = ieee->basic_rate & 0x7f;
 
        if(rate == 0){
-               // 2005.01.26, by rcnjko.
                if(ieee->mode == IEEE_A||
                   ieee->mode== IEEE_N_5G||
                   (ieee->mode== IEEE_N_24G&&!pHTInfo->bCurSuppCCK))
@@ -203,17 +237,6 @@ u8 MgntQuery_MgntFrameTxRate(struct ieee80211_device *ieee)
                else
                        rate = 0x02;
        }
-
-       /*
-       // Data rate of ProbeReq is already decided. Annie, 2005-03-31
-       if( pMgntInfo->bScanInProgress || (pMgntInfo->bDualModeScanStep!=0) )
-       {
-       if(pMgntInfo->dot11CurrentWirelessMode==WIRELESS_MODE_A)
-       rate = 0x0c;
-       else
-       rate = 0x02;
-       }
-        */
        return rate;
 }