mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 05:16:57 +00:00
wifi: mt76: update fix for backoff fields and max_power calculation
Fix copy&paste issues in earlier version Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
@@ -340,7 +340,7 @@ static inline u8 mt76_backoff_n_chains(struct mt76_dev *dev, u8 idx)
|
|||||||
static const u8 connac2_table[] = {
|
static const u8 connac2_table[] = {
|
||||||
1, 2, 3, 4, 2, 3, 4, 3, 4, 4, 0, 0, 0, 0, 0};
|
1, 2, 3, 4, 2, 3, 4, 3, 4, 4, 0, 0, 0, 0, 0};
|
||||||
|
|
||||||
if (idx < 0 || idx >= ARRAY_SIZE(connac3_table))
|
if (idx >= ARRAY_SIZE(connac3_table))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return is_mt799x(dev) ? connac3_table[idx] : connac2_table[idx];
|
return is_mt799x(dev) ? connac3_table[idx] : connac2_table[idx];
|
||||||
@@ -368,10 +368,10 @@ mt76_apply_array_limit(struct mt76_dev *dev, s8 *pwr, size_t pwr_len,
|
|||||||
backoff_delta = 0;
|
backoff_delta = 0;
|
||||||
backoff_n_chains = 0;
|
backoff_n_chains = 0;
|
||||||
break;
|
break;
|
||||||
case MT76_SKU_BACKOFF:
|
case MT76_SKU_BACKOFF_BF_OFFSET:
|
||||||
backoff_chain_idx += 1;
|
backoff_chain_idx += 1;
|
||||||
fallthrough;
|
fallthrough;
|
||||||
case MT76_SKU_BACKOFF_BF_OFFSET:
|
case MT76_SKU_BACKOFF:
|
||||||
delta = mt76_tx_power_path_delta(n_chains);
|
delta = mt76_tx_power_path_delta(n_chains);
|
||||||
backoff_n_chains = mt76_backoff_n_chains(dev, backoff_chain_idx);
|
backoff_n_chains = mt76_backoff_n_chains(dev, backoff_chain_idx);
|
||||||
backoff_delta = mt76_tx_power_path_delta(backoff_n_chains);
|
backoff_delta = mt76_tx_power_path_delta(backoff_n_chains);
|
||||||
@@ -411,11 +411,18 @@ mt76_apply_multi_array_limit(struct mt76_dev *dev, s8 *pwr, size_t pwr_len,
|
|||||||
if (len < pwr_len + 1)
|
if (len < pwr_len + 1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* For connac2 devices,
|
/* Each RU entry (RU26, RU52, RU106, BW20, ...) in the DTS
|
||||||
* - paths-ru = RU26, RU52, RU106, BW20, BW40, BW80, BW160
|
* corresponds to 10 stream combinations (1T1ss, 2T1ss, 3T1ss,
|
||||||
* - paths-ru-bf = RU26, RU52, RU106, BW20, BW40, BW80, BW160
|
* 4T1ss, 2T2ss, 3T2ss, 4T2ss, 3T3ss, 4T3ss, 4T4ss).
|
||||||
* Only the first three entries use 1T1ss and do not need index
|
*
|
||||||
* adjustment; the remaining four require index offset.
|
* For beamforming tables:
|
||||||
|
* - In connac2, beamforming entries for BW20~BW160 and OFDM
|
||||||
|
* do not include 1T1ss.
|
||||||
|
* - In connac3, beamforming entries for BW20~BW160 and RU
|
||||||
|
* include 1T1ss, but OFDM beamforming does not include 1T1ss.
|
||||||
|
*
|
||||||
|
* Non-beamforming and RU entries for both connac2 and connac3
|
||||||
|
* include 1T1ss.
|
||||||
*/
|
*/
|
||||||
if (!is_mt799x(dev) && type == MT76_SKU_BACKOFF &&
|
if (!is_mt799x(dev) && type == MT76_SKU_BACKOFF &&
|
||||||
i > connac2_backoff_ru_idx)
|
i > connac2_backoff_ru_idx)
|
||||||
@@ -494,42 +501,35 @@ s8 mt76_get_rate_power_limits(struct mt76_phy *phy,
|
|||||||
mt76_apply_array_limit(dev, dest->ofdm, ARRAY_SIZE(dest->ofdm), val,
|
mt76_apply_array_limit(dev, dest->ofdm, ARRAY_SIZE(dest->ofdm), val,
|
||||||
target_power, txs_delta, &max_power, n_chains, MT76_SKU_RATE);
|
target_power, txs_delta, &max_power, n_chains, MT76_SKU_RATE);
|
||||||
|
|
||||||
val = mt76_get_of_array_s8(np, "rates-mcs", &len,
|
val = mt76_get_of_array_s8(np, "rates-mcs", &len, ARRAY_SIZE(dest->mcs[0]) + 1);
|
||||||
ARRAY_SIZE(dest->mcs[0]) + 1);
|
|
||||||
mt76_apply_multi_array_limit(dev, dest->mcs[0], ARRAY_SIZE(dest->mcs[0]),
|
mt76_apply_multi_array_limit(dev, dest->mcs[0], ARRAY_SIZE(dest->mcs[0]),
|
||||||
ARRAY_SIZE(dest->mcs), val, len, target_power,
|
ARRAY_SIZE(dest->mcs), val, len, target_power,
|
||||||
txs_delta, &max_power, n_chains, MT76_SKU_RATE);
|
txs_delta, &max_power, n_chains, MT76_SKU_RATE);
|
||||||
|
|
||||||
val = mt76_get_of_array_s8(np, "rates-ru", &len,
|
val = mt76_get_of_array_s8(np, "rates-ru", &len, ARRAY_SIZE(dest->ru[0]) + 1);
|
||||||
ARRAY_SIZE(dest->ru[0]) + 1);
|
|
||||||
mt76_apply_multi_array_limit(dev, dest->ru[0], ARRAY_SIZE(dest->ru[0]),
|
mt76_apply_multi_array_limit(dev, dest->ru[0], ARRAY_SIZE(dest->ru[0]),
|
||||||
ARRAY_SIZE(dest->ru), val, len, target_power,
|
ARRAY_SIZE(dest->ru), val, len, target_power,
|
||||||
txs_delta, &max_power, n_chains, MT76_SKU_RATE);
|
txs_delta, &max_power, n_chains, MT76_SKU_RATE);
|
||||||
|
|
||||||
val = mt76_get_of_array_s8(np, "paths-cck", &len,
|
val = mt76_get_of_array_s8(np, "paths-cck", &len, ARRAY_SIZE(dest->path.cck));
|
||||||
ARRAY_SIZE(dest->path.cck));
|
|
||||||
mt76_apply_array_limit(dev, dest->path.cck, ARRAY_SIZE(dest->path.cck), val,
|
mt76_apply_array_limit(dev, dest->path.cck, ARRAY_SIZE(dest->path.cck), val,
|
||||||
target_power, txs_delta, &max_power, n_chains, MT76_SKU_BACKOFF);
|
target_power, txs_delta, &max_power, n_chains, MT76_SKU_BACKOFF);
|
||||||
|
|
||||||
val = mt76_get_of_array_s8(np, "paths-ofdm", &len,
|
val = mt76_get_of_array_s8(np, "paths-ofdm", &len, ARRAY_SIZE(dest->path.ofdm));
|
||||||
ARRAY_SIZE(dest->path.ofdm));
|
|
||||||
mt76_apply_array_limit(dev, dest->path.ofdm, ARRAY_SIZE(dest->path.ofdm), val,
|
mt76_apply_array_limit(dev, dest->path.ofdm, ARRAY_SIZE(dest->path.ofdm), val,
|
||||||
target_power, txs_delta, &max_power, n_chains, MT76_SKU_BACKOFF);
|
target_power, txs_delta, &max_power, n_chains, MT76_SKU_BACKOFF);
|
||||||
|
|
||||||
val = mt76_get_of_array_s8(np, "paths-ofdm-bf", &len,
|
val = mt76_get_of_array_s8(np, "paths-ofdm-bf", &len, ARRAY_SIZE(dest->path.ofdm_bf));
|
||||||
ARRAY_SIZE(dest->path.ofdm_bf));
|
|
||||||
mt76_apply_array_limit(dev, dest->path.ofdm_bf, ARRAY_SIZE(dest->path.ofdm_bf), val,
|
mt76_apply_array_limit(dev, dest->path.ofdm_bf, ARRAY_SIZE(dest->path.ofdm_bf), val,
|
||||||
target_power, txs_delta, &max_power, n_chains,
|
target_power, txs_delta, &max_power, n_chains,
|
||||||
MT76_SKU_BACKOFF_BF_OFFSET);
|
MT76_SKU_BACKOFF_BF_OFFSET);
|
||||||
|
|
||||||
val = mt76_get_of_array_s8(np, "paths-ru", &len,
|
val = mt76_get_of_array_s8(np, "paths-ru", &len, ARRAY_SIZE(dest->path.ru[0]) + 1);
|
||||||
ARRAY_SIZE(dest->path.ru[0]) + 1);
|
|
||||||
mt76_apply_multi_array_limit(dev, dest->path.ru[0], ARRAY_SIZE(dest->path.ru[0]),
|
mt76_apply_multi_array_limit(dev, dest->path.ru[0], ARRAY_SIZE(dest->path.ru[0]),
|
||||||
ARRAY_SIZE(dest->path.ru), val, len, target_power,
|
ARRAY_SIZE(dest->path.ru), val, len, target_power,
|
||||||
txs_delta, &max_power, n_chains, MT76_SKU_BACKOFF);
|
txs_delta, &max_power, n_chains, MT76_SKU_BACKOFF);
|
||||||
|
|
||||||
val = mt76_get_of_array_s8(np, "paths-ru-bf", &len,
|
val = mt76_get_of_array_s8(np, "paths-ru-bf", &len, ARRAY_SIZE(dest->path.ru_bf[0]) + 1);
|
||||||
ARRAY_SIZE(dest->path.ru_bf[0]) + 1);
|
|
||||||
mt76_apply_multi_array_limit(dev, dest->path.ru_bf[0], ARRAY_SIZE(dest->path.ru_bf[0]),
|
mt76_apply_multi_array_limit(dev, dest->path.ru_bf[0], ARRAY_SIZE(dest->path.ru_bf[0]),
|
||||||
ARRAY_SIZE(dest->path.ru_bf), val, len, target_power,
|
ARRAY_SIZE(dest->path.ru_bf), val, len, target_power,
|
||||||
txs_delta, &max_power, n_chains, MT76_SKU_BACKOFF);
|
txs_delta, &max_power, n_chains, MT76_SKU_BACKOFF);
|
||||||
|
|||||||
Reference in New Issue
Block a user