diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile index e376c825c..11afd8f3a 100644 --- a/package/kernel/mt76/Makefile +++ b/package/kernel/mt76/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mt76 -PKG_RELEASE=1 +PKG_RELEASE=2 PKG_LICENSE:=GPLv2 PKG_LICENSE_FILES:= @@ -15,9 +15,9 @@ PKG_SOURCE_VERSION:=5b509e80384ab019ac11aa90c81ec0dbb5b0d7f2 PKG_MIRROR_HASH:=6fc25df4d28becd010ff4971b23731c08b53e69381a9e4c868091899712f78a9 PATCH_DIR:=./patches-5.4 else -PKG_SOURCE_DATE:=2023-08-14 -PKG_SOURCE_VERSION:=b14c2351ddb8601c322576d84029e463d456caef -PKG_MIRROR_HASH:=62b5e157ad525424b6857e77ed373e8d39d03af71b057f8b309d8b293d6eac5f +PKG_SOURCE_DATE:=2023-09-18 +PKG_SOURCE_VERSION:=2afc7285f75dca5a0583fd917285bf33f1429cc6 +PKG_MIRROR_HASH:=2c9556b298246277ac2d65415e4449f98e6d5fdb99e0d0a92262f162df772bbc endif PKG_MAINTAINER:=Felix Fietkau diff --git a/package/kernel/mt76/patches-5.4/200-fix-MT76x0-external-LNA-gain-handling.patch b/package/kernel/mt76/patches-5.4/200-fix-MT76x0-external-LNA-gain-handling.patch new file mode 100644 index 000000000..aa25b982b --- /dev/null +++ b/package/kernel/mt76/patches-5.4/200-fix-MT76x0-external-LNA-gain-handling.patch @@ -0,0 +1,68 @@ +From 890ae4d717f1bed1e4136fec0611273bfd90bd55 Mon Sep 17 00:00:00 2001 +From: Felix Fietkau +Date: Tue, 19 Sep 2023 13:20:30 +0200 +Subject: [PATCH] wifi: mt76: mt76x02: fix MT76x0 external LNA gain handling + +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 +Signed-off-by: Felix Fietkau +--- + mt76x02_eeprom.c | 7 ------- + mt76x2/eeprom.c | 13 +++++++++++-- + 2 files changed, 11 insertions(+), 9 deletions(-) + +diff --git a/mt76x02_eeprom.c b/mt76x02_eeprom.c +index 0acabba2d..5d402cf29 100644 +--- a/mt76x02_eeprom.c ++++ b/mt76x02_eeprom.c +@@ -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) +diff --git a/mt76x2/eeprom.c b/mt76x2/eeprom.c +index d5809408d..8c0185588 100644 +--- a/mt76x2/eeprom.c ++++ b/mt76x2/eeprom.c +@@ -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);