Lines Matching full:rate

1132 static u32 cfg80211_calculate_bitrate_ht(struct rate_info *rate)  in cfg80211_calculate_bitrate_ht()  argument
1137 if (WARN_ON_ONCE(rate->mcs >= 32)) in cfg80211_calculate_bitrate_ht()
1140 modulation = rate->mcs & 7; in cfg80211_calculate_bitrate_ht()
1141 streams = (rate->mcs >> 3) + 1; in cfg80211_calculate_bitrate_ht()
1143 bitrate = (rate->bw == RATE_INFO_BW_40) ? 13500000 : 6500000; in cfg80211_calculate_bitrate_ht()
1154 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_ht()
1161 static u32 cfg80211_calculate_bitrate_dmg(struct rate_info *rate) in cfg80211_calculate_bitrate_dmg() argument
1202 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate))) in cfg80211_calculate_bitrate_dmg()
1205 return __mcs2bitrate[rate->mcs]; in cfg80211_calculate_bitrate_dmg()
1208 static u32 cfg80211_calculate_bitrate_extended_sc_dmg(struct rate_info *rate) in cfg80211_calculate_bitrate_extended_sc_dmg() argument
1221 if (WARN_ON_ONCE(rate->mcs < 6 || rate->mcs > 12)) in cfg80211_calculate_bitrate_extended_sc_dmg()
1224 return __mcs2bitrate[rate->mcs - 6]; in cfg80211_calculate_bitrate_extended_sc_dmg()
1227 static u32 cfg80211_calculate_bitrate_edmg(struct rate_info *rate) in cfg80211_calculate_bitrate_edmg() argument
1255 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate))) in cfg80211_calculate_bitrate_edmg()
1258 return __mcs2bitrate[rate->mcs] * rate->n_bonded_ch; in cfg80211_calculate_bitrate_edmg()
1261 static u32 cfg80211_calculate_bitrate_vht(struct rate_info *rate) in cfg80211_calculate_bitrate_vht() argument
1321 if (rate->mcs > 11) in cfg80211_calculate_bitrate_vht()
1324 switch (rate->bw) { in cfg80211_calculate_bitrate_vht()
1342 bitrate = base[idx][rate->mcs]; in cfg80211_calculate_bitrate_vht()
1343 bitrate *= rate->nss; in cfg80211_calculate_bitrate_vht()
1345 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_vht()
1351 WARN_ONCE(1, "invalid rate bw=%d, mcs=%d, nss=%d\n", in cfg80211_calculate_bitrate_vht()
1352 rate->bw, rate->mcs, rate->nss); in cfg80211_calculate_bitrate_vht()
1356 static u32 cfg80211_calculate_bitrate_he(struct rate_info *rate) in cfg80211_calculate_bitrate_he() argument
1385 if (WARN_ON_ONCE(rate->mcs > 13)) in cfg80211_calculate_bitrate_he()
1388 if (WARN_ON_ONCE(rate->he_gi > NL80211_RATE_INFO_HE_GI_3_2)) in cfg80211_calculate_bitrate_he()
1390 if (WARN_ON_ONCE(rate->he_ru_alloc > in cfg80211_calculate_bitrate_he()
1393 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8)) in cfg80211_calculate_bitrate_he()
1396 if (rate->bw == RATE_INFO_BW_160) in cfg80211_calculate_bitrate_he()
1397 result = rates_160M[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1398 else if (rate->bw == RATE_INFO_BW_80 || in cfg80211_calculate_bitrate_he()
1399 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1400 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_996)) in cfg80211_calculate_bitrate_he()
1401 result = rates_969[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1402 else if (rate->bw == RATE_INFO_BW_40 || in cfg80211_calculate_bitrate_he()
1403 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1404 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_484)) in cfg80211_calculate_bitrate_he()
1405 result = rates_484[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1406 else if (rate->bw == RATE_INFO_BW_20 || in cfg80211_calculate_bitrate_he()
1407 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1408 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_242)) in cfg80211_calculate_bitrate_he()
1409 result = rates_242[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1410 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1411 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_106) in cfg80211_calculate_bitrate_he()
1412 result = rates_106[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1413 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1414 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_52) in cfg80211_calculate_bitrate_he()
1415 result = rates_52[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1416 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1417 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_26) in cfg80211_calculate_bitrate_he()
1418 result = rates_26[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1421 rate->bw, rate->he_ru_alloc); in cfg80211_calculate_bitrate_he()
1428 do_div(tmp, mcs_divisors[rate->mcs]); in cfg80211_calculate_bitrate_he()
1432 result = (result * rate->nss) / 8; in cfg80211_calculate_bitrate_he()
1433 if (rate->he_dcm) in cfg80211_calculate_bitrate_he()
1439 static u32 cfg80211_calculate_bitrate_eht(struct rate_info *rate) in cfg80211_calculate_bitrate_eht() argument
1469 if (WARN_ON_ONCE(rate->mcs > 15)) in cfg80211_calculate_bitrate_eht()
1471 if (WARN_ON_ONCE(rate->eht_gi > NL80211_RATE_INFO_EHT_GI_3_2)) in cfg80211_calculate_bitrate_eht()
1473 if (WARN_ON_ONCE(rate->eht_ru_alloc > in cfg80211_calculate_bitrate_eht()
1476 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8)) in cfg80211_calculate_bitrate_eht()
1480 if (rate->mcs == 14) { in cfg80211_calculate_bitrate_eht()
1481 if ((rate->bw != RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1482 rate->bw != RATE_INFO_BW_80 && in cfg80211_calculate_bitrate_eht()
1483 rate->bw != RATE_INFO_BW_160 && in cfg80211_calculate_bitrate_eht()
1484 rate->bw != RATE_INFO_BW_320) || in cfg80211_calculate_bitrate_eht()
1485 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1486 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_996 && in cfg80211_calculate_bitrate_eht()
1487 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_2x996 && in cfg80211_calculate_bitrate_eht()
1488 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_4x996)) { in cfg80211_calculate_bitrate_eht()
1490 rate->bw, rate->eht_ru_alloc); in cfg80211_calculate_bitrate_eht()
1495 if (rate->bw == RATE_INFO_BW_320 || in cfg80211_calculate_bitrate_eht()
1496 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1497 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_4x996)) in cfg80211_calculate_bitrate_eht()
1498 result = 4 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1499 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1500 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484) in cfg80211_calculate_bitrate_eht()
1501 result = 3 * rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1502 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1503 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_3x996) in cfg80211_calculate_bitrate_eht()
1504 result = 3 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1505 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1506 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484) in cfg80211_calculate_bitrate_eht()
1507 result = 2 * rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1508 else if (rate->bw == RATE_INFO_BW_160 || in cfg80211_calculate_bitrate_eht()
1509 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1510 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_2x996)) in cfg80211_calculate_bitrate_eht()
1511 result = 2 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1512 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1513 rate->eht_ru_alloc == in cfg80211_calculate_bitrate_eht()
1515 result = rates_996[rate->eht_gi] + rates_484[rate->eht_gi] in cfg80211_calculate_bitrate_eht()
1516 + rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1517 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1518 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_996P484) in cfg80211_calculate_bitrate_eht()
1519 result = rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1520 else if (rate->bw == RATE_INFO_BW_80 || in cfg80211_calculate_bitrate_eht()
1521 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1522 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_996)) in cfg80211_calculate_bitrate_eht()
1523 result = rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1524 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1525 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_484P242) in cfg80211_calculate_bitrate_eht()
1526 result = rates_484[rate->eht_gi] + rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1527 else if (rate->bw == RATE_INFO_BW_40 || in cfg80211_calculate_bitrate_eht()
1528 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1529 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_484)) in cfg80211_calculate_bitrate_eht()
1530 result = rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1531 else if (rate->bw == RATE_INFO_BW_20 || in cfg80211_calculate_bitrate_eht()
1532 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1533 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_242)) in cfg80211_calculate_bitrate_eht()
1534 result = rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1535 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1536 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_106P26) in cfg80211_calculate_bitrate_eht()
1537 result = rates_106[rate->eht_gi] + rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1538 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1539 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_106) in cfg80211_calculate_bitrate_eht()
1540 result = rates_106[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1541 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1542 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_52P26) in cfg80211_calculate_bitrate_eht()
1543 result = rates_52[rate->eht_gi] + rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1544 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1545 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_52) in cfg80211_calculate_bitrate_eht()
1546 result = rates_52[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1547 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1548 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_26) in cfg80211_calculate_bitrate_eht()
1549 result = rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1552 rate->bw, rate->eht_ru_alloc); in cfg80211_calculate_bitrate_eht()
1559 do_div(tmp, mcs_divisors[rate->mcs]); in cfg80211_calculate_bitrate_eht()
1562 tmp *= rate->nss; in cfg80211_calculate_bitrate_eht()
1570 u32 cfg80211_calculate_bitrate(struct rate_info *rate) in cfg80211_calculate_bitrate() argument
1572 if (rate->flags & RATE_INFO_FLAGS_MCS) in cfg80211_calculate_bitrate()
1573 return cfg80211_calculate_bitrate_ht(rate); in cfg80211_calculate_bitrate()
1574 if (rate->flags & RATE_INFO_FLAGS_DMG) in cfg80211_calculate_bitrate()
1575 return cfg80211_calculate_bitrate_dmg(rate); in cfg80211_calculate_bitrate()
1576 if (rate->flags & RATE_INFO_FLAGS_EXTENDED_SC_DMG) in cfg80211_calculate_bitrate()
1577 return cfg80211_calculate_bitrate_extended_sc_dmg(rate); in cfg80211_calculate_bitrate()
1578 if (rate->flags & RATE_INFO_FLAGS_EDMG) in cfg80211_calculate_bitrate()
1579 return cfg80211_calculate_bitrate_edmg(rate); in cfg80211_calculate_bitrate()
1580 if (rate->flags & RATE_INFO_FLAGS_VHT_MCS) in cfg80211_calculate_bitrate()
1581 return cfg80211_calculate_bitrate_vht(rate); in cfg80211_calculate_bitrate()
1582 if (rate->flags & RATE_INFO_FLAGS_HE_MCS) in cfg80211_calculate_bitrate()
1583 return cfg80211_calculate_bitrate_he(rate); in cfg80211_calculate_bitrate()
1584 if (rate->flags & RATE_INFO_FLAGS_EHT_MCS) in cfg80211_calculate_bitrate()
1585 return cfg80211_calculate_bitrate_eht(rate); in cfg80211_calculate_bitrate()
1587 return rate->legacy; in cfg80211_calculate_bitrate()
2164 int rate = (rates[i] & 0x7f) * 5; in ieee80211_get_ratemask() local
2168 if (sband->bitrates[j].bitrate == rate) { in ieee80211_get_ratemask()