u8 HTGetHighestMCSRate(struct rtllib_device *ieee, u8 *pMCSRateSet, u8 *pMCSFilter) { u8 i, j; u8 bitMap; u8 mcsRate = 0; u8 availableMcsRate[16]; if (pMCSRateSet == NULL || pMCSFilter == NULL) { RTLLIB_DEBUG(RTLLIB_DL_ERR, "pMCSRateSet or pMCSFilter can't " "be null in HTGetHighestMCSRate()\n"); return false; } for (i = 0; i < 16; i++) availableMcsRate[i] = pMCSRateSet[i] & pMCSFilter[i]; for (i = 0; i < 16; i++) { if (availableMcsRate[i] != 0) break; } if (i == 16) return false; for (i = 0; i < 16; i++) { if (availableMcsRate[i] != 0) { bitMap = availableMcsRate[i]; for (j = 0; j < 8; j++) { if ((bitMap%2) != 0) { if (HTMcsToDataRate(ieee, (8*i+j)) > HTMcsToDataRate(ieee, mcsRate)) mcsRate = (8*i+j); } bitMap = bitMap>>1; } } }
int ieee80211_wx_get_rate(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { u32 tmp_rate = 0; #ifdef RTL8192SU //printk("===>mode:%d, halfNmode:%d\n", ieee->mode, ieee->bHalfWirelessN24GMode); if (ieee->mode & (IEEE_A | IEEE_B | IEEE_G)) tmp_rate = ieee->rate; else if (ieee->mode & IEEE_N_5G) tmp_rate = 580; else if (ieee->mode & IEEE_N_24G) { if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev)) tmp_rate = HTHalfMcsToDataRate(ieee, 15); else tmp_rate = HTMcsToDataRate(ieee, 15); } #else tmp_rate = TxCountToDataRate(ieee, ieee->softmac_stats.CurrentShowTxate); #endif wrqu->bitrate.value = tmp_rate * 500000; return 0; }
u8 HTGetHighestMCSRate(struct rtllib_device *ieee, u8 *pMCSRateSet, u8 *pMCSFilter) { u8 i, j; u8 bitMap; u8 mcsRate = 0; u8 availableMcsRate[16]; if (pMCSRateSet == NULL || pMCSFilter == NULL) { netdev_warn(ieee->dev, "%s(): pMCSRateSet and pMCSFilter are null\n", __func__); return false; } for (i = 0; i < 16; i++) availableMcsRate[i] = pMCSRateSet[i] & pMCSFilter[i]; for (i = 0; i < 16; i++) { if (availableMcsRate[i] != 0) break; } if (i == 16) return false; for (i = 0; i < 16; i++) { if (availableMcsRate[i] != 0) { bitMap = availableMcsRate[i]; for (j = 0; j < 8; j++) { if ((bitMap%2) != 0) { if (HTMcsToDataRate(ieee, (8*i+j)) > HTMcsToDataRate(ieee, mcsRate)) mcsRate = (8*i+j); } bitMap >>= 1; } } }