|
@@ -130,40 +130,52 @@ static struct index_he_data_rate_type he_mcs_nss1[] = {
|
|
|
/* MCS, {dcm0:0.8/1.6/3.2}, {dcm1:0.8/1.6/3.2} */
|
|
|
{0, {{86, 81, 73 }, {43, 40, 36 } }, /* HE20 */
|
|
|
{{172, 163, 146 }, {86, 81, 73 } }, /* HE40 */
|
|
|
- {{360, 340, 306 }, {180, 170, 153} } }, /* HE80 */
|
|
|
+ {{360, 340, 306 }, {180, 170, 153} }, /* HE80 */
|
|
|
+ {{721, 681, 613 }, {360, 340, 306} } }, /* HE160/HE80+80 */
|
|
|
{1, {{172, 163, 146 }, {86, 81, 73 } },
|
|
|
{{344, 325, 293 }, {172, 163, 146} },
|
|
|
- {{721, 681, 613 }, {360, 340, 306} } },
|
|
|
+ {{721, 681, 613 }, {360, 340, 306} },
|
|
|
+ {{1441, 1361, 1225}, {721, 681, 613} } },
|
|
|
{2, {{258, 244, 219 }, {0} },
|
|
|
{{516, 488, 439 }, {0} },
|
|
|
- {{1081, 1021, 919 }, {0} } },
|
|
|
+ {{1081, 1021, 919 }, {0} },
|
|
|
+ {{2162, 2042, 1838}, {0} } },
|
|
|
{3, {{344, 325, 293 }, {172, 163, 146} },
|
|
|
{{688, 650, 585 }, {344, 325, 293} },
|
|
|
- {{1441, 1361, 1225}, {721, 681, 613} } },
|
|
|
+ {{1441, 1361, 1225}, {721, 681, 613} },
|
|
|
+ {{2882, 2722, 2450}, {1441, 1361, 1225} } },
|
|
|
{4, {{516, 488, 439 }, {258, 244, 219} },
|
|
|
{{1032, 975, 878 }, {516, 488, 439} },
|
|
|
- {{2162, 2042, 1838}, {1081, 1021, 919} } },
|
|
|
+ {{2162, 2042, 1838}, {1081, 1021, 919} },
|
|
|
+ {{4324, 4083, 3675}, {2162, 2042, 1838} } },
|
|
|
{5, {{688, 650, 585 }, {0} },
|
|
|
{{1376, 1300, 1170}, {0} },
|
|
|
- {{2882, 2722, 2450}, {0} } },
|
|
|
+ {{2882, 2722, 2450}, {0} },
|
|
|
+ {{5765, 5444, 4900}, {0} } },
|
|
|
{6, {{774, 731, 658 }, {0} },
|
|
|
{{1549, 1463, 1316}, {0} },
|
|
|
- {{3243, 3063, 2756}, {0} } },
|
|
|
+ {{3243, 3063, 2756}, {0} },
|
|
|
+ {{6485, 6125, 5513}, {0} } },
|
|
|
{7, {{860, 813, 731 }, {0} },
|
|
|
{{1721, 1625, 1463}, {0} },
|
|
|
- {{3603, 3403, 3063}, {0} } },
|
|
|
+ {{3603, 3403, 3063}, {0} },
|
|
|
+ {{7206, 6806, 6125}, {0} } },
|
|
|
{8, {{1032, 975, 878 }, {0} },
|
|
|
{{2065, 1950, 1755}, {0} },
|
|
|
- {{4324, 4083, 3675}, {0} } },
|
|
|
+ {{4324, 4083, 3675}, {0} },
|
|
|
+ {{8647, 8167, 7350}, {0} } },
|
|
|
{9, {{1147, 1083, 975 }, {0} },
|
|
|
{{2294, 2167, 1950}, {0} },
|
|
|
- {{4804, 4537, 4083}, {0} } },
|
|
|
+ {{4804, 4537, 4083}, {0} },
|
|
|
+ {{9607, 9074, 8166}, {0} } },
|
|
|
{10, {{1290, 1219, 1097}, {0} },
|
|
|
{{2581, 2438, 2194}, {0} },
|
|
|
- {{5404, 5104, 4594}, {0} } },
|
|
|
+ {{5404, 5104, 4594}, {0} },
|
|
|
+ {{10809, 10208, 9188}, {0} } },
|
|
|
{11, {{1434, 1354, 1219}, {0} },
|
|
|
{{2868, 2708, 2438}, {0} },
|
|
|
- {{6004, 5671, 5104}, {0} } }
|
|
|
+ {{6004, 5671, 5104}, {0} },
|
|
|
+ {{12010, 11342, 10208}, {0} } }
|
|
|
};
|
|
|
|
|
|
/*MCS parameters with Nss = 2*/
|
|
@@ -171,40 +183,52 @@ static struct index_he_data_rate_type he_mcs_nss2[] = {
|
|
|
/* MCS, {dcm0:0.8/1.6/3.2}, {dcm1:0.8/1.6/3.2} */
|
|
|
{0, {{172, 163, 146 }, {86, 81, 73 } }, /* HE20 */
|
|
|
{{344, 325, 293 }, {172, 163, 146} }, /* HE40 */
|
|
|
- {{721, 681, 613 }, {360, 340, 306} } }, /* HE80 */
|
|
|
+ {{721, 681, 613 }, {360, 340, 306} }, /* HE80 */
|
|
|
+ {{1441, 1361, 1225}, {721, 681, 613} } }, /* HE160/HE80+80 */
|
|
|
{1, {{344, 325, 293 }, {172, 163, 146} },
|
|
|
{{688, 650, 585 }, {344, 325, 293} },
|
|
|
- {{1441, 1361, 1225}, {721, 681, 613} } },
|
|
|
+ {{1441, 1361, 1225}, {721, 681, 613} },
|
|
|
+ {{2882, 2722, 2450}, {1441, 1361, 1225} } },
|
|
|
{2, {{516, 488, 439 }, {0} },
|
|
|
{{1032, 975, 878 }, {0} },
|
|
|
- {{2162, 2042, 1838}, {0} } },
|
|
|
+ {{2162, 2042, 1838}, {0} },
|
|
|
+ {{4324, 4083, 3675}, {0} } },
|
|
|
{3, {{688, 650, 585 }, {344, 325, 293 } },
|
|
|
{{1376, 1300, 1170}, {688, 650, 585 } },
|
|
|
- {{2882, 2722, 2450}, {1441, 1361, 1225} } },
|
|
|
+ {{2882, 2722, 2450}, {1441, 1361, 1225} },
|
|
|
+ {{5765, 5444, 4900}, {2882, 2722, 2450} } },
|
|
|
{4, {{1032, 975, 878 }, {516, 488, 439 } },
|
|
|
{{2065, 1950, 1755}, {1032, 975, 878 } },
|
|
|
- {{4324, 4083, 3675}, {2162, 2042, 1838} } },
|
|
|
+ {{4324, 4083, 3675}, {2162, 2042, 1838} },
|
|
|
+ {{8647, 8167, 7350}, {4324, 4083, 3675} } },
|
|
|
{5, {{1376, 1300, 1170}, {0} },
|
|
|
{{2753, 2600, 2340}, {0} },
|
|
|
- {{5765, 5444, 4900}, {0} } },
|
|
|
+ {{5765, 5444, 4900}, {0} },
|
|
|
+ {{11529, 10889, 9800}, {0} } },
|
|
|
{6, {{1549, 1463, 1316}, {0} },
|
|
|
{{3097, 2925, 2633}, {0} },
|
|
|
- {{6485, 6125, 5513}, {0} } },
|
|
|
+ {{6485, 6125, 5513}, {0} },
|
|
|
+ {{12971, 12250, 11025}, {0} } },
|
|
|
{7, {{1721, 1625, 1463}, {0} },
|
|
|
{{3441, 3250, 2925}, {0} },
|
|
|
- {{7206, 6806, 6125}, {0} } },
|
|
|
+ {{7206, 6806, 6125}, {0} },
|
|
|
+ {{14412, 13611, 12250}, {0} } },
|
|
|
{8, {{2065, 1950, 1755}, {0} },
|
|
|
{{4129, 3900, 3510}, {0} },
|
|
|
- {{8647, 8167, 7350}, {0} } },
|
|
|
+ {{8647, 8167, 7350}, {0} },
|
|
|
+ {{17294, 16333, 14700}, {0} } },
|
|
|
{9, {{2294, 2167, 1950}, {0} },
|
|
|
{{4588, 4333, 3900}, {0} },
|
|
|
- {{9607, 9074, 8166}, {0} } },
|
|
|
+ {{9607, 9074, 8166}, {0} },
|
|
|
+ {{19215, 18148, 16333}, {0} } },
|
|
|
{10, {{2581, 2438, 2194}, {0} },
|
|
|
{{5162, 4875, 4388}, {0} },
|
|
|
- {{10809, 10208, 9188}, {0} } },
|
|
|
+ {{10809, 10208, 9188}, {0} },
|
|
|
+ {{21618, 20417, 18375}, {0} } },
|
|
|
{11, {{2868, 2708, 2438}, {0} },
|
|
|
{{5735, 5417, 4875}, {0} },
|
|
|
- {{12010, 11343, 10208}, {0} } }
|
|
|
+ {{12010, 11343, 10208}, {0} },
|
|
|
+ {{24019, 22685, 20416}, {0} } }
|
|
|
};
|
|
|
#endif
|
|
|
|
|
@@ -325,7 +349,7 @@ static uint16_t wma_match_he_rate(uint16_t raw_rate,
|
|
|
uint16_t *nss2_rate;
|
|
|
|
|
|
*p_index = 0;
|
|
|
- if (!(rate_flags & (TX_RATE_HE80 | TX_RATE_HE40 |
|
|
|
+ if (!(rate_flags & (TX_RATE_HE160 | TX_RATE_HE80 | TX_RATE_HE40 |
|
|
|
TX_RATE_HE20)))
|
|
|
return 0;
|
|
|
|
|
@@ -334,7 +358,22 @@ static uint16_t wma_match_he_rate(uint16_t raw_rate,
|
|
|
|
|
|
for (dcm_index = 0; dcm_index < dcm_index_max;
|
|
|
dcm_index++) {
|
|
|
- if (rate_flags & TX_RATE_HE80) {
|
|
|
+ if (rate_flags & TX_RATE_HE160) {
|
|
|
+ nss1_rate = &he_mcs_nss1[index].
|
|
|
+ supported_he160_rate[dcm_index][0];
|
|
|
+ nss2_rate = &he_mcs_nss2[index].
|
|
|
+ supported_he160_rate[dcm_index][0];
|
|
|
+ /* check for he160 nss1/2 rate set */
|
|
|
+ match_rate = wma_mcs_rate_match(raw_rate, 1,
|
|
|
+ nss1_rate,
|
|
|
+ nss2_rate,
|
|
|
+ nss,
|
|
|
+ guard_interval);
|
|
|
+ if (match_rate)
|
|
|
+ goto rate_found;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (rate_flags & (TX_RATE_HE80 | TX_RATE_HE160)) {
|
|
|
nss1_rate = &he_mcs_nss1[index].
|
|
|
supported_he80_rate[dcm_index][0];
|
|
|
nss2_rate = &he_mcs_nss2[index].
|
|
@@ -345,11 +384,14 @@ static uint16_t wma_match_he_rate(uint16_t raw_rate,
|
|
|
nss2_rate,
|
|
|
nss,
|
|
|
guard_interval);
|
|
|
- if (match_rate)
|
|
|
+ if (match_rate) {
|
|
|
+ *mcs_rate_flag &= ~TX_RATE_HE160;
|
|
|
goto rate_found;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (rate_flags & (TX_RATE_HE40 | TX_RATE_HE80)) {
|
|
|
+ if (rate_flags & (TX_RATE_HE40 | TX_RATE_HE80 |
|
|
|
+ TX_RATE_HE160)) {
|
|
|
nss1_rate = &he_mcs_nss1[index].
|
|
|
supported_he40_rate[dcm_index][0];
|
|
|
nss2_rate = &he_mcs_nss2[index].
|
|
@@ -368,7 +410,7 @@ static uint16_t wma_match_he_rate(uint16_t raw_rate,
|
|
|
}
|
|
|
|
|
|
if (rate_flags & (TX_RATE_HE80 | TX_RATE_HE40 |
|
|
|
- TX_RATE_HE20)) {
|
|
|
+ TX_RATE_HE20 | TX_RATE_HE160)) {
|
|
|
nss1_rate = &he_mcs_nss1[index].
|
|
|
supported_he20_rate[dcm_index][0];
|
|
|
nss2_rate = &he_mcs_nss2[index].
|