Lines Matching full:rate
1265 static u32 cfg80211_calculate_bitrate_ht(struct rate_info *rate) in cfg80211_calculate_bitrate_ht() argument
1270 if (WARN_ON_ONCE(rate->mcs >= 32)) in cfg80211_calculate_bitrate_ht()
1273 modulation = rate->mcs & 7; in cfg80211_calculate_bitrate_ht()
1274 streams = (rate->mcs >> 3) + 1; in cfg80211_calculate_bitrate_ht()
1276 bitrate = (rate->bw == RATE_INFO_BW_40) ? 13500000 : 6500000; in cfg80211_calculate_bitrate_ht()
1287 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_ht()
1294 static u32 cfg80211_calculate_bitrate_dmg(struct rate_info *rate) in cfg80211_calculate_bitrate_dmg() argument
1335 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate))) in cfg80211_calculate_bitrate_dmg()
1338 return __mcs2bitrate[rate->mcs]; in cfg80211_calculate_bitrate_dmg()
1341 static u32 cfg80211_calculate_bitrate_extended_sc_dmg(struct rate_info *rate) in cfg80211_calculate_bitrate_extended_sc_dmg() argument
1354 if (WARN_ON_ONCE(rate->mcs < 6 || rate->mcs > 12)) in cfg80211_calculate_bitrate_extended_sc_dmg()
1357 return __mcs2bitrate[rate->mcs - 6]; in cfg80211_calculate_bitrate_extended_sc_dmg()
1360 static u32 cfg80211_calculate_bitrate_edmg(struct rate_info *rate) in cfg80211_calculate_bitrate_edmg() argument
1388 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate))) in cfg80211_calculate_bitrate_edmg()
1391 return __mcs2bitrate[rate->mcs] * rate->n_bonded_ch; in cfg80211_calculate_bitrate_edmg()
1394 static u32 cfg80211_calculate_bitrate_vht(struct rate_info *rate) in cfg80211_calculate_bitrate_vht() argument
1454 if (rate->mcs > 11) in cfg80211_calculate_bitrate_vht()
1457 switch (rate->bw) { in cfg80211_calculate_bitrate_vht()
1475 bitrate = base[idx][rate->mcs]; in cfg80211_calculate_bitrate_vht()
1476 bitrate *= rate->nss; in cfg80211_calculate_bitrate_vht()
1478 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_vht()
1484 WARN_ONCE(1, "invalid rate bw=%d, mcs=%d, nss=%d\n", in cfg80211_calculate_bitrate_vht()
1485 rate->bw, rate->mcs, rate->nss); in cfg80211_calculate_bitrate_vht()
1489 static u32 cfg80211_calculate_bitrate_he(struct rate_info *rate) in cfg80211_calculate_bitrate_he() argument
1518 if (WARN_ON_ONCE(rate->mcs > 13)) in cfg80211_calculate_bitrate_he()
1521 if (WARN_ON_ONCE(rate->he_gi > NL80211_RATE_INFO_HE_GI_3_2)) in cfg80211_calculate_bitrate_he()
1523 if (WARN_ON_ONCE(rate->he_ru_alloc > in cfg80211_calculate_bitrate_he()
1526 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8)) in cfg80211_calculate_bitrate_he()
1529 if (rate->bw == RATE_INFO_BW_160 || in cfg80211_calculate_bitrate_he()
1530 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1531 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_2x996)) in cfg80211_calculate_bitrate_he()
1532 result = rates_160M[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1533 else if (rate->bw == RATE_INFO_BW_80 || in cfg80211_calculate_bitrate_he()
1534 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1535 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_996)) in cfg80211_calculate_bitrate_he()
1536 result = rates_996[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1537 else if (rate->bw == RATE_INFO_BW_40 || in cfg80211_calculate_bitrate_he()
1538 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1539 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_484)) in cfg80211_calculate_bitrate_he()
1540 result = rates_484[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1541 else if (rate->bw == RATE_INFO_BW_20 || in cfg80211_calculate_bitrate_he()
1542 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1543 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_242)) in cfg80211_calculate_bitrate_he()
1544 result = rates_242[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1545 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1546 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_106) in cfg80211_calculate_bitrate_he()
1547 result = rates_106[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1548 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1549 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_52) in cfg80211_calculate_bitrate_he()
1550 result = rates_52[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1551 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1552 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_26) in cfg80211_calculate_bitrate_he()
1553 result = rates_26[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1556 rate->bw, rate->he_ru_alloc); in cfg80211_calculate_bitrate_he()
1563 do_div(tmp, mcs_divisors[rate->mcs]); in cfg80211_calculate_bitrate_he()
1567 result = (result * rate->nss) / 8; in cfg80211_calculate_bitrate_he()
1568 if (rate->he_dcm) in cfg80211_calculate_bitrate_he()
1574 static u32 cfg80211_calculate_bitrate_eht(struct rate_info *rate) in cfg80211_calculate_bitrate_eht() argument
1604 if (WARN_ON_ONCE(rate->mcs > 15)) in cfg80211_calculate_bitrate_eht()
1606 if (WARN_ON_ONCE(rate->eht_gi > NL80211_RATE_INFO_EHT_GI_3_2)) in cfg80211_calculate_bitrate_eht()
1608 if (WARN_ON_ONCE(rate->eht_ru_alloc > in cfg80211_calculate_bitrate_eht()
1611 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8)) in cfg80211_calculate_bitrate_eht()
1615 if (rate->mcs == 14) { in cfg80211_calculate_bitrate_eht()
1616 if ((rate->bw != RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1617 rate->bw != RATE_INFO_BW_80 && in cfg80211_calculate_bitrate_eht()
1618 rate->bw != RATE_INFO_BW_160 && in cfg80211_calculate_bitrate_eht()
1619 rate->bw != RATE_INFO_BW_320) || in cfg80211_calculate_bitrate_eht()
1620 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1621 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_996 && in cfg80211_calculate_bitrate_eht()
1622 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_2x996 && in cfg80211_calculate_bitrate_eht()
1623 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_4x996)) { in cfg80211_calculate_bitrate_eht()
1625 rate->bw, rate->eht_ru_alloc); in cfg80211_calculate_bitrate_eht()
1630 if (rate->bw == RATE_INFO_BW_320 || in cfg80211_calculate_bitrate_eht()
1631 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1632 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_4x996)) in cfg80211_calculate_bitrate_eht()
1633 result = 4 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1634 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1635 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484) in cfg80211_calculate_bitrate_eht()
1636 result = 3 * rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1637 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1638 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_3x996) in cfg80211_calculate_bitrate_eht()
1639 result = 3 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1640 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1641 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484) in cfg80211_calculate_bitrate_eht()
1642 result = 2 * rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1643 else if (rate->bw == RATE_INFO_BW_160 || in cfg80211_calculate_bitrate_eht()
1644 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1645 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_2x996)) in cfg80211_calculate_bitrate_eht()
1646 result = 2 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1647 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1648 rate->eht_ru_alloc == in cfg80211_calculate_bitrate_eht()
1650 result = rates_996[rate->eht_gi] + rates_484[rate->eht_gi] in cfg80211_calculate_bitrate_eht()
1651 + rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1652 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1653 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_996P484) in cfg80211_calculate_bitrate_eht()
1654 result = rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1655 else if (rate->bw == RATE_INFO_BW_80 || in cfg80211_calculate_bitrate_eht()
1656 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1657 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_996)) in cfg80211_calculate_bitrate_eht()
1658 result = rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1659 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1660 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_484P242) in cfg80211_calculate_bitrate_eht()
1661 result = rates_484[rate->eht_gi] + rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1662 else if (rate->bw == RATE_INFO_BW_40 || in cfg80211_calculate_bitrate_eht()
1663 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1664 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_484)) in cfg80211_calculate_bitrate_eht()
1665 result = rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1666 else if (rate->bw == RATE_INFO_BW_20 || in cfg80211_calculate_bitrate_eht()
1667 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1668 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_242)) in cfg80211_calculate_bitrate_eht()
1669 result = rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1670 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1671 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_106P26) in cfg80211_calculate_bitrate_eht()
1672 result = rates_106[rate->eht_gi] + rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1673 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1674 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_106) in cfg80211_calculate_bitrate_eht()
1675 result = rates_106[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1676 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1677 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_52P26) in cfg80211_calculate_bitrate_eht()
1678 result = rates_52[rate->eht_gi] + rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1679 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1680 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_52) in cfg80211_calculate_bitrate_eht()
1681 result = rates_52[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1682 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1683 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_26) in cfg80211_calculate_bitrate_eht()
1684 result = rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1687 rate->bw, rate->eht_ru_alloc); in cfg80211_calculate_bitrate_eht()
1694 do_div(tmp, mcs_divisors[rate->mcs]); in cfg80211_calculate_bitrate_eht()
1697 tmp *= rate->nss; in cfg80211_calculate_bitrate_eht()
1705 static u32 cfg80211_calculate_bitrate_s1g(struct rate_info *rate) in cfg80211_calculate_bitrate_s1g() argument
1771 if (rate->mcs >= 11) in cfg80211_calculate_bitrate_s1g()
1774 switch (rate->bw) { in cfg80211_calculate_bitrate_s1g()
1800 bitrate = base[idx][rate->mcs]; in cfg80211_calculate_bitrate_s1g()
1801 bitrate *= rate->nss; in cfg80211_calculate_bitrate_s1g()
1803 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_s1g()
1808 WARN_ONCE(1, "invalid rate bw=%d, mcs=%d, nss=%d\n", in cfg80211_calculate_bitrate_s1g()
1809 rate->bw, rate->mcs, rate->nss); in cfg80211_calculate_bitrate_s1g()
1813 u32 cfg80211_calculate_bitrate(struct rate_info *rate) in cfg80211_calculate_bitrate() argument
1815 if (rate->flags & RATE_INFO_FLAGS_MCS) in cfg80211_calculate_bitrate()
1816 return cfg80211_calculate_bitrate_ht(rate); in cfg80211_calculate_bitrate()
1817 if (rate->flags & RATE_INFO_FLAGS_DMG) in cfg80211_calculate_bitrate()
1818 return cfg80211_calculate_bitrate_dmg(rate); in cfg80211_calculate_bitrate()
1819 if (rate->flags & RATE_INFO_FLAGS_EXTENDED_SC_DMG) in cfg80211_calculate_bitrate()
1820 return cfg80211_calculate_bitrate_extended_sc_dmg(rate); in cfg80211_calculate_bitrate()
1821 if (rate->flags & RATE_INFO_FLAGS_EDMG) in cfg80211_calculate_bitrate()
1822 return cfg80211_calculate_bitrate_edmg(rate); in cfg80211_calculate_bitrate()
1823 if (rate->flags & RATE_INFO_FLAGS_VHT_MCS) in cfg80211_calculate_bitrate()
1824 return cfg80211_calculate_bitrate_vht(rate); in cfg80211_calculate_bitrate()
1825 if (rate->flags & RATE_INFO_FLAGS_HE_MCS) in cfg80211_calculate_bitrate()
1826 return cfg80211_calculate_bitrate_he(rate); in cfg80211_calculate_bitrate()
1827 if (rate->flags & RATE_INFO_FLAGS_EHT_MCS) in cfg80211_calculate_bitrate()
1828 return cfg80211_calculate_bitrate_eht(rate); in cfg80211_calculate_bitrate()
1829 if (rate->flags & RATE_INFO_FLAGS_S1G_MCS) in cfg80211_calculate_bitrate()
1830 return cfg80211_calculate_bitrate_s1g(rate); in cfg80211_calculate_bitrate()
1832 return rate->legacy; in cfg80211_calculate_bitrate()
2534 int rate = (rates[i] & 0x7f) * 5; in ieee80211_get_ratemask() local
2538 if (sband->bitrates[j].bitrate == rate) { in ieee80211_get_ratemask()