Lines Matching refs:rate
1122 static u32 cfg80211_calculate_bitrate_ht(struct rate_info *rate)
1127 if (WARN_ON_ONCE(rate->mcs >= 32))
1130 modulation = rate->mcs & 7;
1131 streams = (rate->mcs >> 3) + 1;
1133 bitrate = (rate->bw == RATE_INFO_BW_40) ? 13500000 : 6500000;
1144 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI)
1151 static u32 cfg80211_calculate_bitrate_dmg(struct rate_info *rate)
1192 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate)))
1195 return __mcs2bitrate[rate->mcs];
1198 static u32 cfg80211_calculate_bitrate_edmg(struct rate_info *rate)
1226 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate)))
1229 return __mcs2bitrate[rate->mcs] * rate->n_bonded_ch;
1232 static u32 cfg80211_calculate_bitrate_vht(struct rate_info *rate)
1284 if (rate->mcs > 9)
1287 switch (rate->bw) {
1305 bitrate = base[idx][rate->mcs];
1306 bitrate *= rate->nss;
1308 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI)
1314 WARN_ONCE(1, "invalid rate bw=%d, mcs=%d, nss=%d\n",
1315 rate->bw, rate->mcs, rate->nss);
1319 static u32 cfg80211_calculate_bitrate_he(struct rate_info *rate)
1346 if (WARN_ON_ONCE(rate->mcs > 11))
1349 if (WARN_ON_ONCE(rate->he_gi > NL80211_RATE_INFO_HE_GI_3_2))
1351 if (WARN_ON_ONCE(rate->he_ru_alloc >
1354 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8))
1357 if (rate->bw == RATE_INFO_BW_160 ||
1358 (rate->bw == RATE_INFO_BW_HE_RU &&
1359 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_2x996))
1360 result = rates_160M[rate->he_gi];
1361 else if (rate->bw == RATE_INFO_BW_80 ||
1362 (rate->bw == RATE_INFO_BW_HE_RU &&
1363 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_996))
1364 result = rates_969[rate->he_gi];
1365 else if (rate->bw == RATE_INFO_BW_40 ||
1366 (rate->bw == RATE_INFO_BW_HE_RU &&
1367 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_484))
1368 result = rates_484[rate->he_gi];
1369 else if (rate->bw == RATE_INFO_BW_20 ||
1370 (rate->bw == RATE_INFO_BW_HE_RU &&
1371 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_242))
1372 result = rates_242[rate->he_gi];
1373 else if (rate->bw == RATE_INFO_BW_HE_RU &&
1374 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_106)
1375 result = rates_106[rate->he_gi];
1376 else if (rate->bw == RATE_INFO_BW_HE_RU &&
1377 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_52)
1378 result = rates_52[rate->he_gi];
1379 else if (rate->bw == RATE_INFO_BW_HE_RU &&
1380 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_26)
1381 result = rates_26[rate->he_gi];
1384 rate->bw, rate->he_ru_alloc);
1391 do_div(tmp, mcs_divisors[rate->mcs]);
1395 result = (result * rate->nss) / 8;
1396 if (rate->he_dcm)
1402 u32 cfg80211_calculate_bitrate(struct rate_info *rate)
1404 if (rate->flags & RATE_INFO_FLAGS_MCS)
1405 return cfg80211_calculate_bitrate_ht(rate);
1406 if (rate->flags & RATE_INFO_FLAGS_DMG)
1407 return cfg80211_calculate_bitrate_dmg(rate);
1408 if (rate->flags & RATE_INFO_FLAGS_EDMG)
1409 return cfg80211_calculate_bitrate_edmg(rate);
1410 if (rate->flags & RATE_INFO_FLAGS_VHT_MCS)
1411 return cfg80211_calculate_bitrate_vht(rate);
1412 if (rate->flags & RATE_INFO_FLAGS_HE_MCS)
1413 return cfg80211_calculate_bitrate_he(rate);
1415 return rate->legacy;
1966 int rate = (rates[i] & 0x7f) * 5;
1970 if (sband->bitrates[j].bitrate == rate) {