Lines Matching refs:rate
1201 static u32 cfg80211_calculate_bitrate_ht(struct rate_info *rate) in cfg80211_calculate_bitrate_ht() argument
1206 if (WARN_ON_ONCE(rate->mcs >= 32)) in cfg80211_calculate_bitrate_ht()
1209 modulation = rate->mcs & 7; in cfg80211_calculate_bitrate_ht()
1210 streams = (rate->mcs >> 3) + 1; in cfg80211_calculate_bitrate_ht()
1212 bitrate = (rate->bw == RATE_INFO_BW_40) ? 13500000 : 6500000; in cfg80211_calculate_bitrate_ht()
1223 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_ht()
1230 static u32 cfg80211_calculate_bitrate_dmg(struct rate_info *rate) in cfg80211_calculate_bitrate_dmg() argument
1271 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate))) in cfg80211_calculate_bitrate_dmg()
1274 return __mcs2bitrate[rate->mcs]; in cfg80211_calculate_bitrate_dmg()
1277 static u32 cfg80211_calculate_bitrate_extended_sc_dmg(struct rate_info *rate) in cfg80211_calculate_bitrate_extended_sc_dmg() argument
1290 if (WARN_ON_ONCE(rate->mcs < 6 || rate->mcs > 12)) in cfg80211_calculate_bitrate_extended_sc_dmg()
1293 return __mcs2bitrate[rate->mcs - 6]; in cfg80211_calculate_bitrate_extended_sc_dmg()
1296 static u32 cfg80211_calculate_bitrate_edmg(struct rate_info *rate) in cfg80211_calculate_bitrate_edmg() argument
1324 if (WARN_ON_ONCE(rate->mcs >= ARRAY_SIZE(__mcs2bitrate))) in cfg80211_calculate_bitrate_edmg()
1327 return __mcs2bitrate[rate->mcs] * rate->n_bonded_ch; in cfg80211_calculate_bitrate_edmg()
1330 static u32 cfg80211_calculate_bitrate_vht(struct rate_info *rate) in cfg80211_calculate_bitrate_vht() argument
1390 if (rate->mcs > 11) in cfg80211_calculate_bitrate_vht()
1393 switch (rate->bw) { in cfg80211_calculate_bitrate_vht()
1411 bitrate = base[idx][rate->mcs]; in cfg80211_calculate_bitrate_vht()
1412 bitrate *= rate->nss; in cfg80211_calculate_bitrate_vht()
1414 if (rate->flags & RATE_INFO_FLAGS_SHORT_GI) in cfg80211_calculate_bitrate_vht()
1421 rate->bw, rate->mcs, rate->nss); in cfg80211_calculate_bitrate_vht()
1425 static u32 cfg80211_calculate_bitrate_he(struct rate_info *rate) in cfg80211_calculate_bitrate_he() argument
1454 if (WARN_ON_ONCE(rate->mcs > 13)) in cfg80211_calculate_bitrate_he()
1457 if (WARN_ON_ONCE(rate->he_gi > NL80211_RATE_INFO_HE_GI_3_2)) in cfg80211_calculate_bitrate_he()
1459 if (WARN_ON_ONCE(rate->he_ru_alloc > in cfg80211_calculate_bitrate_he()
1462 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8)) in cfg80211_calculate_bitrate_he()
1465 if (rate->bw == RATE_INFO_BW_160) in cfg80211_calculate_bitrate_he()
1466 result = rates_160M[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1467 else if (rate->bw == RATE_INFO_BW_80 || in cfg80211_calculate_bitrate_he()
1468 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1469 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_996)) in cfg80211_calculate_bitrate_he()
1470 result = rates_969[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1471 else if (rate->bw == RATE_INFO_BW_40 || in cfg80211_calculate_bitrate_he()
1472 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1473 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_484)) in cfg80211_calculate_bitrate_he()
1474 result = rates_484[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1475 else if (rate->bw == RATE_INFO_BW_20 || in cfg80211_calculate_bitrate_he()
1476 (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1477 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_242)) in cfg80211_calculate_bitrate_he()
1478 result = rates_242[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1479 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1480 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_106) in cfg80211_calculate_bitrate_he()
1481 result = rates_106[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1482 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1483 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_52) in cfg80211_calculate_bitrate_he()
1484 result = rates_52[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1485 else if (rate->bw == RATE_INFO_BW_HE_RU && in cfg80211_calculate_bitrate_he()
1486 rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_26) in cfg80211_calculate_bitrate_he()
1487 result = rates_26[rate->he_gi]; in cfg80211_calculate_bitrate_he()
1490 rate->bw, rate->he_ru_alloc); in cfg80211_calculate_bitrate_he()
1497 do_div(tmp, mcs_divisors[rate->mcs]); in cfg80211_calculate_bitrate_he()
1501 result = (result * rate->nss) / 8; in cfg80211_calculate_bitrate_he()
1502 if (rate->he_dcm) in cfg80211_calculate_bitrate_he()
1508 static u32 cfg80211_calculate_bitrate_eht(struct rate_info *rate) in cfg80211_calculate_bitrate_eht() argument
1538 if (WARN_ON_ONCE(rate->mcs > 15)) in cfg80211_calculate_bitrate_eht()
1540 if (WARN_ON_ONCE(rate->eht_gi > NL80211_RATE_INFO_EHT_GI_3_2)) in cfg80211_calculate_bitrate_eht()
1542 if (WARN_ON_ONCE(rate->eht_ru_alloc > in cfg80211_calculate_bitrate_eht()
1545 if (WARN_ON_ONCE(rate->nss < 1 || rate->nss > 8)) in cfg80211_calculate_bitrate_eht()
1549 if (rate->mcs == 14) { in cfg80211_calculate_bitrate_eht()
1550 if ((rate->bw != RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1551 rate->bw != RATE_INFO_BW_80 && in cfg80211_calculate_bitrate_eht()
1552 rate->bw != RATE_INFO_BW_160 && in cfg80211_calculate_bitrate_eht()
1553 rate->bw != RATE_INFO_BW_320) || in cfg80211_calculate_bitrate_eht()
1554 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1555 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_996 && in cfg80211_calculate_bitrate_eht()
1556 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_2x996 && in cfg80211_calculate_bitrate_eht()
1557 rate->eht_ru_alloc != NL80211_RATE_INFO_EHT_RU_ALLOC_4x996)) { in cfg80211_calculate_bitrate_eht()
1559 rate->bw, rate->eht_ru_alloc); in cfg80211_calculate_bitrate_eht()
1564 if (rate->bw == RATE_INFO_BW_320 || in cfg80211_calculate_bitrate_eht()
1565 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1566 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_4x996)) in cfg80211_calculate_bitrate_eht()
1567 result = 4 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1568 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1569 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484) in cfg80211_calculate_bitrate_eht()
1570 result = 3 * rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1571 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1572 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_3x996) in cfg80211_calculate_bitrate_eht()
1573 result = 3 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1574 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1575 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484) in cfg80211_calculate_bitrate_eht()
1576 result = 2 * rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1577 else if (rate->bw == RATE_INFO_BW_160 || in cfg80211_calculate_bitrate_eht()
1578 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1579 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_2x996)) in cfg80211_calculate_bitrate_eht()
1580 result = 2 * rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1581 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1582 rate->eht_ru_alloc == in cfg80211_calculate_bitrate_eht()
1584 result = rates_996[rate->eht_gi] + rates_484[rate->eht_gi] in cfg80211_calculate_bitrate_eht()
1585 + rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1586 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1587 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_996P484) in cfg80211_calculate_bitrate_eht()
1588 result = rates_996[rate->eht_gi] + rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1589 else if (rate->bw == RATE_INFO_BW_80 || in cfg80211_calculate_bitrate_eht()
1590 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1591 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_996)) in cfg80211_calculate_bitrate_eht()
1592 result = rates_996[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1593 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1594 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_484P242) in cfg80211_calculate_bitrate_eht()
1595 result = rates_484[rate->eht_gi] + rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1596 else if (rate->bw == RATE_INFO_BW_40 || in cfg80211_calculate_bitrate_eht()
1597 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1598 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_484)) in cfg80211_calculate_bitrate_eht()
1599 result = rates_484[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1600 else if (rate->bw == RATE_INFO_BW_20 || in cfg80211_calculate_bitrate_eht()
1601 (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1602 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_242)) in cfg80211_calculate_bitrate_eht()
1603 result = rates_242[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1604 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1605 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_106P26) in cfg80211_calculate_bitrate_eht()
1606 result = rates_106[rate->eht_gi] + rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1607 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1608 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_106) in cfg80211_calculate_bitrate_eht()
1609 result = rates_106[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1610 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1611 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_52P26) in cfg80211_calculate_bitrate_eht()
1612 result = rates_52[rate->eht_gi] + rates_26[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_52) in cfg80211_calculate_bitrate_eht()
1615 result = rates_52[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1616 else if (rate->bw == RATE_INFO_BW_EHT_RU && in cfg80211_calculate_bitrate_eht()
1617 rate->eht_ru_alloc == NL80211_RATE_INFO_EHT_RU_ALLOC_26) in cfg80211_calculate_bitrate_eht()
1618 result = rates_26[rate->eht_gi]; in cfg80211_calculate_bitrate_eht()
1621 rate->bw, rate->eht_ru_alloc); in cfg80211_calculate_bitrate_eht()
1628 do_div(tmp, mcs_divisors[rate->mcs]); in cfg80211_calculate_bitrate_eht()
1631 tmp *= rate->nss; in cfg80211_calculate_bitrate_eht()
1639 u32 cfg80211_calculate_bitrate(struct rate_info *rate) in cfg80211_calculate_bitrate() argument
1641 if (rate->flags & RATE_INFO_FLAGS_MCS) in cfg80211_calculate_bitrate()
1642 return cfg80211_calculate_bitrate_ht(rate); in cfg80211_calculate_bitrate()
1643 if (rate->flags & RATE_INFO_FLAGS_DMG) in cfg80211_calculate_bitrate()
1644 return cfg80211_calculate_bitrate_dmg(rate); in cfg80211_calculate_bitrate()
1645 if (rate->flags & RATE_INFO_FLAGS_EXTENDED_SC_DMG) in cfg80211_calculate_bitrate()
1646 return cfg80211_calculate_bitrate_extended_sc_dmg(rate); in cfg80211_calculate_bitrate()
1647 if (rate->flags & RATE_INFO_FLAGS_EDMG) in cfg80211_calculate_bitrate()
1648 return cfg80211_calculate_bitrate_edmg(rate); in cfg80211_calculate_bitrate()
1649 if (rate->flags & RATE_INFO_FLAGS_VHT_MCS) in cfg80211_calculate_bitrate()
1650 return cfg80211_calculate_bitrate_vht(rate); in cfg80211_calculate_bitrate()
1651 if (rate->flags & RATE_INFO_FLAGS_HE_MCS) in cfg80211_calculate_bitrate()
1652 return cfg80211_calculate_bitrate_he(rate); in cfg80211_calculate_bitrate()
1653 if (rate->flags & RATE_INFO_FLAGS_EHT_MCS) in cfg80211_calculate_bitrate()
1654 return cfg80211_calculate_bitrate_eht(rate); in cfg80211_calculate_bitrate()
1656 return rate->legacy; in cfg80211_calculate_bitrate()
2233 int rate = (rates[i] & 0x7f) * 5; in ieee80211_get_ratemask() local
2237 if (sband->bitrates[j].bitrate == rate) { in ieee80211_get_ratemask()