diff --git a/package/kernel/mt76/patches/002-wifi-mt76-mt7915-handle-unsupported-band-configurati.patch b/package/kernel/mt76/patches/002-wifi-mt76-mt7915-handle-unsupported-band-configurati.patch new file mode 100644 index 000000000..f8bf8632c --- /dev/null +++ b/package/kernel/mt76/patches/002-wifi-mt76-mt7915-handle-unsupported-band-configurati.patch @@ -0,0 +1,67 @@ +From 72929ea244bc89a596c63fa46c45ed54fa20297a Mon Sep 17 00:00:00 2001 +From: Shayne Chen +Date: Fri, 6 Jan 2023 11:28:18 +0800 +Subject: [PATCH] wifi: mt76: mt7915: handle unsupported band configuration + +Firmware does not support simultaneous 5GHz and 6GHz on the same band. +Force this case to support 5GHz only. + +Signed-off-by: Shayne Chen +--- + mt7915/eeprom.c | 14 ++++++++++---- + mt7915/init.c | 4 ++-- + 2 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/mt7915/eeprom.c b/mt7915/eeprom.c +index 849275e1..1371f55c 100644 +--- a/mt7915/eeprom.c ++++ b/mt7915/eeprom.c +@@ -156,15 +156,21 @@ static void mt7915_eeprom_parse_band_config(struct mt7915_phy *phy) + if (!is_mt7915(&dev->mt76)) { + switch (val) { + case MT_EE_V2_BAND_SEL_5GHZ: ++ case MT_EE_V2_BAND_SEL_5GHZ_6GHZ: + phy->mt76->cap.has_5ghz = true; ++ ++ if (val == MT_EE_V2_BAND_SEL_5GHZ_6GHZ) { ++ u8p_replace_bits(&eeprom[MT_EE_WIFI_CONF + band], ++ MT_EE_V2_BAND_SEL_5GHZ, ++ MT_EE_WIFI_CONF0_BAND_SEL); ++ ++ /* force to buffer mode */ ++ dev->flash_mode = true; ++ } + return; + case MT_EE_V2_BAND_SEL_6GHZ: + phy->mt76->cap.has_6ghz = true; + return; +- case MT_EE_V2_BAND_SEL_5GHZ_6GHZ: +- phy->mt76->cap.has_5ghz = true; +- phy->mt76->cap.has_6ghz = true; +- return; + default: + phy->mt76->cap.has_2ghz = true; + return; +diff --git a/mt7915/init.c b/mt7915/init.c +index 9ccbc7bc..74425a59 100755 +--- a/mt7915/init.c ++++ b/mt7915/init.c +@@ -1311,14 +1311,14 @@ int mt7915_register_device(struct mt7915_dev *dev) + if (ret) + goto unreg_dev; + +- ieee80211_queue_work(mt76_hw(dev), &dev->init_work); +- + if (phy2) { + ret = mt7915_register_ext_phy(dev, phy2); + if (ret) + goto unreg_thermal; + } + ++ ieee80211_queue_work(mt76_hw(dev), &dev->init_work); ++ + dev->recovery.hw_init_done = true; + + ret = mt7915_init_debugfs(&dev->phy); +-- +2.25.1