Lines Matching refs:rate

1219 static u32 cfg80211_calculate_bitrate_ht(struct rate_info *rate)  in cfg80211_calculate_bitrate_ht()  argument
1224 if (WARN_ON_ONCE(rate->mcs >= 32)) in cfg80211_calculate_bitrate_ht()
1227 modulation = rate->mcs & 7; in cfg80211_calculate_bitrate_ht()
1228 streams = (rate->mcs >> 3) + 1; in cfg80211_calculate_bitrate_ht()
1230 bitrate = (rate->bw == RATE_INFO_BW_40) ? 13500000 : 6500000; in cfg80211_calculate_bitrate_ht()
1241 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_ht()
1248 static u32 cfg80211_calculate_bitrate_dmg(struct rate_info *rate) in cfg80211_calculate_bitrate_dmg() argument
1289 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate))) in cfg80211_calculate_bitrate_dmg()
1292 return __mcs2bitrate[rate->mcs]; in cfg80211_calculate_bitrate_dmg()
1295 static u32 cfg80211_calculate_bitrate_extended_sc_dmg(struct rate_info *rate) in cfg80211_calculate_bitrate_extended_sc_dmg() argument
1308 if (WARN_ON_ONCE(rate->mcs < 6 || rate->mcs > 12)) in cfg80211_calculate_bitrate_extended_sc_dmg()
1311 return __mcs2bitrate[rate->mcs - 6]; in cfg80211_calculate_bitrate_extended_sc_dmg()
1314 static u32 cfg80211_calculate_bitrate_edmg(struct rate_info *rate) in cfg80211_calculate_bitrate_edmg() argument
1342 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate))) in cfg80211_calculate_bitrate_edmg()
1345 return __mcs2bitrate[rate->mcs] * rate->n_bonded_ch; in cfg80211_calculate_bitrate_edmg()
1348 static u32 cfg80211_calculate_bitrate_vht(struct rate_info *rate) in cfg80211_calculate_bitrate_vht() argument
1408 if (rate->mcs > 11) in cfg80211_calculate_bitrate_vht()
1411 switch (rate->bw) { in cfg80211_calculate_bitrate_vht()
1429 bitrate = base[idx][rate->mcs]; in cfg80211_calculate_bitrate_vht()
1430 bitrate *= rate->nss; in cfg80211_calculate_bitrate_vht()
1432 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_vht()
1439 rate->bw, rate->mcs, rate->nss); in cfg80211_calculate_bitrate_vht()
1443 static u32 cfg80211_calculate_bitrate_he(struct rate_info *rate) in cfg80211_calculate_bitrate_he() argument
1472 if (WARN_ON_ONCE(rate->mcs > 13)) in cfg80211_calculate_bitrate_he()
1475 if (WARN_ON_ONCE(rate->he_gi > NL80211_RATE_INFO_HE_GI_3_2)) in cfg80211_calculate_bitrate_he()
1477 if (WARN_ON_ONCE(rate->he_ru_alloc > in cfg80211_calculate_bitrate_he()
1480 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8)) in cfg80211_calculate_bitrate_he()
1483 if (rate->bw == RATE_INFO_BW_160 || in cfg80211_calculate_bitrate_he()
1484 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1485 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_2x996)) in cfg80211_calculate_bitrate_he()
1486 result = rates_160M[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1487 else if (rate->bw == RATE_INFO_BW_80 || in cfg80211_calculate_bitrate_he()
1488 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1489 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_996)) in cfg80211_calculate_bitrate_he()
1490 result = rates_996[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1491 else if (rate->bw == RATE_INFO_BW_40 || in cfg80211_calculate_bitrate_he()
1492 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1493 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_484)) in cfg80211_calculate_bitrate_he()
1494 result = rates_484[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1495 else if (rate->bw == RATE_INFO_BW_20 || in cfg80211_calculate_bitrate_he()
1496 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1497 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_242)) in cfg80211_calculate_bitrate_he()
1498 result = rates_242[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1499 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1500 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_106) in cfg80211_calculate_bitrate_he()
1501 result = rates_106[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1502 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1503 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_52) in cfg80211_calculate_bitrate_he()
1504 result = rates_52[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1505 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1506 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_26) in cfg80211_calculate_bitrate_he()
1507 result = rates_26[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1510 rate->bw, rate->he_ru_alloc); in cfg80211_calculate_bitrate_he()
1517 do_div(tmp, mcs_divisors[rate->mcs]); in cfg80211_calculate_bitrate_he()
1521 result = (result * rate->nss) / 8; in cfg80211_calculate_bitrate_he()
1522 if (rate->he_dcm) in cfg80211_calculate_bitrate_he()
1528 static u32 cfg80211_calculate_bitrate_eht(struct rate_info *rate) in cfg80211_calculate_bitrate_eht() argument
1558 if (WARN_ON_ONCE(rate->mcs > 15)) in cfg80211_calculate_bitrate_eht()
1560 if (WARN_ON_ONCE(rate->eht_gi > NL80211_RATE_INFO_EHT_GI_3_2)) in cfg80211_calculate_bitrate_eht()
1562 if (WARN_ON_ONCE(rate->eht_ru_alloc > in cfg80211_calculate_bitrate_eht()
1565 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8)) in cfg80211_calculate_bitrate_eht()
1569 if (rate->mcs == 14) { in cfg80211_calculate_bitrate_eht()
1570 if ((rate->bw != RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1571 rate->bw != RATE_INFO_BW_80 && in cfg80211_calculate_bitrate_eht()
1572 rate->bw != RATE_INFO_BW_160 && in cfg80211_calculate_bitrate_eht()
1573 rate->bw != RATE_INFO_BW_320) || in cfg80211_calculate_bitrate_eht()
1574 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1575 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_996 && in cfg80211_calculate_bitrate_eht()
1576 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_2x996 && in cfg80211_calculate_bitrate_eht()
1577 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_4x996)) { in cfg80211_calculate_bitrate_eht()
1579 rate->bw, rate->eht_ru_alloc); in cfg80211_calculate_bitrate_eht()
1584 if (rate->bw == RATE_INFO_BW_320 || in cfg80211_calculate_bitrate_eht()
1585 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1586 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_4x996)) in cfg80211_calculate_bitrate_eht()
1587 result = 4 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1588 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1589 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484) in cfg80211_calculate_bitrate_eht()
1590 result = 3 * rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1591 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1592 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_3x996) in cfg80211_calculate_bitrate_eht()
1593 result = 3 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1594 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1595 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484) in cfg80211_calculate_bitrate_eht()
1596 result = 2 * rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1597 else if (rate->bw == RATE_INFO_BW_160 || in cfg80211_calculate_bitrate_eht()
1598 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1599 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_2x996)) in cfg80211_calculate_bitrate_eht()
1600 result = 2 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1601 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1602 rate->eht_ru_alloc == in cfg80211_calculate_bitrate_eht()
1604 result = rates_996[rate->eht_gi] + rates_484[rate->eht_gi] in cfg80211_calculate_bitrate_eht()
1605 + rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1606 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1607 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_996P484) in cfg80211_calculate_bitrate_eht()
1608 result = rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1609 else if (rate->bw == RATE_INFO_BW_80 || in cfg80211_calculate_bitrate_eht()
1610 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1611 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_996)) in cfg80211_calculate_bitrate_eht()
1612 result = rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1613 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1614 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_484P242) in cfg80211_calculate_bitrate_eht()
1615 result = rates_484[rate->eht_gi] + rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1616 else if (rate->bw == RATE_INFO_BW_40 || in cfg80211_calculate_bitrate_eht()
1617 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1618 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_484)) in cfg80211_calculate_bitrate_eht()
1619 result = rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1620 else if (rate->bw == RATE_INFO_BW_20 || in cfg80211_calculate_bitrate_eht()
1621 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1622 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_242)) in cfg80211_calculate_bitrate_eht()
1623 result = rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1624 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1625 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_106P26) in cfg80211_calculate_bitrate_eht()
1626 result = rates_106[rate->eht_gi] + rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1627 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1628 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_106) in cfg80211_calculate_bitrate_eht()
1629 result = rates_106[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1630 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1631 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_52P26) in cfg80211_calculate_bitrate_eht()
1632 result = rates_52[rate->eht_gi] + rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1633 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1634 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_52) in cfg80211_calculate_bitrate_eht()
1635 result = rates_52[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1636 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1637 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_26) in cfg80211_calculate_bitrate_eht()
1638 result = rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1641 rate->bw, rate->eht_ru_alloc); in cfg80211_calculate_bitrate_eht()
1648 do_div(tmp, mcs_divisors[rate->mcs]); in cfg80211_calculate_bitrate_eht()
1651 tmp *= rate->nss; in cfg80211_calculate_bitrate_eht()
1659 static u32 cfg80211_calculate_bitrate_s1g(struct rate_info *rate) in cfg80211_calculate_bitrate_s1g() argument
1725 if (rate->mcs >= 11) in cfg80211_calculate_bitrate_s1g()
1728 switch (rate->bw) { in cfg80211_calculate_bitrate_s1g()
1754 bitrate = base[idx][rate->mcs]; in cfg80211_calculate_bitrate_s1g()
1755 bitrate *= rate->nss; in cfg80211_calculate_bitrate_s1g()
1757 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_s1g()
1763 rate->bw, rate->mcs, rate->nss); in cfg80211_calculate_bitrate_s1g()
1767 u32 cfg80211_calculate_bitrate(struct rate_info *rate) in cfg80211_calculate_bitrate() argument
1769 if (rate->flags & RATE_INFO_FLAGS_MCS) in cfg80211_calculate_bitrate()
1770 return cfg80211_calculate_bitrate_ht(rate); in cfg80211_calculate_bitrate()
1771 if (rate->flags & RATE_INFO_FLAGS_DMG) in cfg80211_calculate_bitrate()
1772 return cfg80211_calculate_bitrate_dmg(rate); in cfg80211_calculate_bitrate()
1773 if (rate->flags & RATE_INFO_FLAGS_EXTENDED_SC_DMG) in cfg80211_calculate_bitrate()
1774 return cfg80211_calculate_bitrate_extended_sc_dmg(rate); in cfg80211_calculate_bitrate()
1775 if (rate->flags & RATE_INFO_FLAGS_EDMG) in cfg80211_calculate_bitrate()
1776 return cfg80211_calculate_bitrate_edmg(rate); in cfg80211_calculate_bitrate()
1777 if (rate->flags & RATE_INFO_FLAGS_VHT_MCS) in cfg80211_calculate_bitrate()
1778 return cfg80211_calculate_bitrate_vht(rate); in cfg80211_calculate_bitrate()
1779 if (rate->flags & RATE_INFO_FLAGS_HE_MCS) in cfg80211_calculate_bitrate()
1780 return cfg80211_calculate_bitrate_he(rate); in cfg80211_calculate_bitrate()
1781 if (rate->flags & RATE_INFO_FLAGS_EHT_MCS) in cfg80211_calculate_bitrate()
1782 return cfg80211_calculate_bitrate_eht(rate); in cfg80211_calculate_bitrate()
1783 if (rate->flags & RATE_INFO_FLAGS_S1G_MCS) in cfg80211_calculate_bitrate()
1784 return cfg80211_calculate_bitrate_s1g(rate); in cfg80211_calculate_bitrate()
1786 return rate->legacy; in cfg80211_calculate_bitrate()
2363 int rate = (rates[i] & 0x7f) * 5; in ieee80211_get_ratemask() local
2367 if (sband->bitrates[j].bitrate == rate) { in ieee80211_get_ratemask()