Skip to content

Commit ec256e0

Browse files
nbd168roxanan1996
authored andcommitted
wifi: mt76: mt76x02: fix MT76x0 external LNA gain handling
BugLink: https://bugs.launchpad.net/bugs/2045809 [ Upstream commit 684e45e ] On MT76x0, LNA gain should be applied for both external and internal LNA. On MT76x2, LNA gain should be treated as 0 for external LNA. Move the LNA type based logic to mt76x2 in order to fix mt76x0. Fixes: 2daa675 ("mt76x0: unify lna_gain parsing") Reported-by: Shiji Yang <yangshiji66@outlook.com> Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20230919194747.31647-1-nbd@nbd.name Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Kamal Mostafa <kamal@canonical.com> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
1 parent f78373e commit ec256e0

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

drivers/net/wireless/mediatek/mt76/mt76x02_eeprom.c

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,8 @@ u8 mt76x02_get_lna_gain(struct mt76x02_dev *dev,
131131
s8 *lna_2g, s8 *lna_5g,
132132
struct ieee80211_channel *chan)
133133
{
134-
u16 val;
135134
u8 lna;
136135

137-
val = mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1);
138-
if (val & MT_EE_NIC_CONF_1_LNA_EXT_2G)
139-
*lna_2g = 0;
140-
if (val & MT_EE_NIC_CONF_1_LNA_EXT_5G)
141-
memset(lna_5g, 0, sizeof(s8) * 3);
142-
143136
if (chan->band == NL80211_BAND_2GHZ)
144137
lna = *lna_2g;
145138
else if (chan->hw_value <= 64)

drivers/net/wireless/mediatek/mt76/mt76x2/eeprom.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,8 @@ void mt76x2_read_rx_gain(struct mt76x02_dev *dev)
256256
struct ieee80211_channel *chan = dev->mphy.chandef.chan;
257257
int channel = chan->hw_value;
258258
s8 lna_5g[3], lna_2g;
259-
u8 lna;
259+
bool use_lna;
260+
u8 lna = 0;
260261
u16 val;
261262

262263
if (chan->band == NL80211_BAND_2GHZ)
@@ -275,7 +276,15 @@ void mt76x2_read_rx_gain(struct mt76x02_dev *dev)
275276
dev->cal.rx.mcu_gain |= (lna_5g[1] & 0xff) << 16;
276277
dev->cal.rx.mcu_gain |= (lna_5g[2] & 0xff) << 24;
277278

278-
lna = mt76x02_get_lna_gain(dev, &lna_2g, lna_5g, chan);
279+
val = mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1);
280+
if (chan->band == NL80211_BAND_2GHZ)
281+
use_lna = !(val & MT_EE_NIC_CONF_1_LNA_EXT_2G);
282+
else
283+
use_lna = !(val & MT_EE_NIC_CONF_1_LNA_EXT_5G);
284+
285+
if (use_lna)
286+
lna = mt76x02_get_lna_gain(dev, &lna_2g, lna_5g, chan);
287+
279288
dev->cal.rx.lna_gain = mt76x02_sign_extend(lna, 8);
280289
}
281290
EXPORT_SYMBOL_GPL(mt76x2_read_rx_gain);

0 commit comments

Comments
 (0)