wifi: mt76: mt76x02: fix MT76x0 external LNA gain handling
authorFelix Fietkau <nbd@nbd.name>
Tue, 19 Sep 2023 19:47:47 +0000 (21:47 +0200)
committerKalle Valo <kvalo@kernel.org>
Fri, 22 Sep 2023 07:28:15 +0000 (10:28 +0300)
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: 2daa67588f34 ("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
drivers/net/wireless/mediatek/mt76/mt76x02_eeprom.c
drivers/net/wireless/mediatek/mt76/mt76x2/eeprom.c

index 0acabba2d1a50c5653f5866108998dac9f046632..5d402cf2951cb35c2aa5bd1dde0ca20a142a56dc 100644 (file)
@@ -131,15 +131,8 @@ u8 mt76x02_get_lna_gain(struct mt76x02_dev *dev,
                        s8 *lna_2g, s8 *lna_5g,
                        struct ieee80211_channel *chan)
 {
-       u16 val;
        u8 lna;
 
-       val = mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1);
-       if (val & MT_EE_NIC_CONF_1_LNA_EXT_2G)
-               *lna_2g = 0;
-       if (val & MT_EE_NIC_CONF_1_LNA_EXT_5G)
-               memset(lna_5g, 0, sizeof(s8) * 3);
-
        if (chan->band == NL80211_BAND_2GHZ)
                lna = *lna_2g;
        else if (chan->hw_value <= 64)
index d5809408d1d3720fbfb7f7396242b5e5cae1301a..8c01855885ce3949a16e63fe4169db3345a62044 100644 (file)
@@ -256,7 +256,8 @@ void mt76x2_read_rx_gain(struct mt76x02_dev *dev)
        struct ieee80211_channel *chan = dev->mphy.chandef.chan;
        int channel = chan->hw_value;
        s8 lna_5g[3], lna_2g;
-       u8 lna;
+       bool use_lna;
+       u8 lna = 0;
        u16 val;
 
        if (chan->band == NL80211_BAND_2GHZ)
@@ -275,7 +276,15 @@ void mt76x2_read_rx_gain(struct mt76x02_dev *dev)
        dev->cal.rx.mcu_gain |= (lna_5g[1] & 0xff) << 16;
        dev->cal.rx.mcu_gain |= (lna_5g[2] & 0xff) << 24;
 
-       lna = mt76x02_get_lna_gain(dev, &lna_2g, lna_5g, chan);
+       val = mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1);
+       if (chan->band == NL80211_BAND_2GHZ)
+               use_lna = !(val & MT_EE_NIC_CONF_1_LNA_EXT_2G);
+       else
+               use_lna = !(val & MT_EE_NIC_CONF_1_LNA_EXT_5G);
+
+       if (use_lna)
+               lna = mt76x02_get_lna_gain(dev, &lna_2g, lna_5g, chan);
+
        dev->cal.rx.lna_gain = mt76x02_sign_extend(lna, 8);
 }
 EXPORT_SYMBOL_GPL(mt76x2_read_rx_gain);