diff options
author | Florian Schilhabel <florian.c.schilhabel@googlemail.com> | 2010-07-15 19:03:27 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-07-22 12:00:20 -0700 |
commit | e2e864931880d29551288a73fa243dfa5d56af88 (patch) | |
tree | 9858382043c1f089a70cb78d2ec42ccb56f2a100 /drivers/staging/rtl8192su | |
parent | c9b4d3ea110bea625b9f014824d2dc479f3d0d97 (diff) |
staging: rtl819su: update MgntQuery_MgntFrameTxRate()
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/rtl8192su')
-rw-r--r-- | drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c index 64016a7a2132..2a970a46eb82 100644 --- a/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c @@ -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; } |