[][MAC80211][wifi6][mt76][Rebase][for upstream]
[Description]
Change some patches for the preparation of next upstream series.
[Release-log]
N/A
Change-Id: I7b77a67f54dc2e1c778161a256cc20fe92cc9c8f
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7949840
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/0013-wifi-mt76-mt7915-rework-init-txpower.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/0013-wifi-mt76-mt7915-rework-init-txpower.patch
new file mode 100644
index 0000000..75c90b7
--- /dev/null
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/0013-wifi-mt76-mt7915-rework-init-txpower.patch
@@ -0,0 +1,121 @@
+From 738d720905afdf9abcb85cb6d6e8cd48a69cb82f Mon Sep 17 00:00:00 2001
+From: Shayne Chen <shayne.chen@mediatek.com>
+Date: Mon, 31 Jul 2023 11:07:35 +0800
+Subject: [PATCH 13/15] wifi: mt76: mt7915: rework init txpower
+
+Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
+---
+ mt7915/init.c | 30 ++++++++++++++++++++----------
+ mt7915/mac.c | 4 ++--
+ mt7915/mt7915.h | 3 +--
+ 3 files changed, 23 insertions(+), 14 deletions(-)
+
+diff --git a/mt7915/init.c b/mt7915/init.c
+index 15b719fa..5ac1f995 100644
+--- a/mt7915/init.c
++++ b/mt7915/init.c
+@@ -278,10 +278,11 @@ static void mt7915_led_set_brightness(struct led_classdev *led_cdev,
+ mt7915_led_set_config(led_cdev, 0xff, 0);
+ }
+
+-void mt7915_init_txpower(struct mt7915_dev *dev,
+- struct ieee80211_supported_band *sband)
++void __mt7915_init_txpower(struct mt7915_phy *phy,
++ struct ieee80211_supported_band *sband)
+ {
+- int i, n_chains = hweight16(dev->mphy.chainmask);
++ struct mt7915_dev *dev = phy->dev;
++ int i, n_chains = hweight16(phy->mt76->chainmask);
+ int nss_delta = mt76_tx_power_nss_delta(n_chains);
+ int pwr_delta = mt7915_eeprom_get_power_delta(dev, sband->band);
+ struct mt76_power_limits limits;
+@@ -299,7 +300,7 @@ void mt7915_init_txpower(struct mt7915_dev *dev,
+ }
+
+ target_power += pwr_delta;
+- target_power = mt76_get_rate_power_limits(&dev->mphy, chan,
++ target_power = mt76_get_rate_power_limits(phy->mt76, chan,
+ &limits,
+ target_power);
+ target_power += nss_delta;
+@@ -310,6 +311,19 @@ void mt7915_init_txpower(struct mt7915_dev *dev,
+ }
+ }
+
++void mt7915_init_txpower(struct mt7915_phy *phy)
++{
++ if (!phy)
++ return;
++
++ if (phy->mt76->cap.has_2ghz)
++ __mt7915_init_txpower(phy, &phy->mt76->sband_2g.sband);
++ if (phy->mt76->cap.has_5ghz)
++ __mt7915_init_txpower(phy, &phy->mt76->sband_5g.sband);
++ if (phy->mt76->cap.has_6ghz)
++ __mt7915_init_txpower(phy, &phy->mt76->sband_6g.sband);
++}
++
+ static void
+ mt7915_regd_notifier(struct wiphy *wiphy,
+ struct regulatory_request *request)
+@@ -325,9 +339,7 @@ mt7915_regd_notifier(struct wiphy *wiphy,
+ if (dev->mt76.region == NL80211_DFS_UNSET)
+ mt7915_mcu_rdd_background_enable(phy, NULL);
+
+- mt7915_init_txpower(dev, &mphy->sband_2g.sband);
+- mt7915_init_txpower(dev, &mphy->sband_5g.sband);
+- mt7915_init_txpower(dev, &mphy->sband_6g.sband);
++ mt7915_init_txpower(phy);
+
+ mphy->dfs_state = MT_DFS_STATE_UNKNOWN;
+ mt7915_dfs_init_radar_detector(phy);
+@@ -448,6 +460,7 @@ mt7915_init_wiphy(struct mt7915_phy *phy)
+ mt76_set_stream_caps(phy->mt76, true);
+ mt7915_set_stream_vht_txbf_caps(phy);
+ mt7915_set_stream_he_caps(phy);
++ mt7915_init_txpower(phy);
+
+ wiphy->available_antennas_rx = phy->mt76->antenna_mask;
+ wiphy->available_antennas_tx = phy->mt76->antenna_mask;
+@@ -711,9 +724,6 @@ static void mt7915_init_work(struct work_struct *work)
+
+ mt7915_mcu_set_eeprom(dev);
+ mt7915_mac_init(dev);
+- mt7915_init_txpower(dev, &dev->mphy.sband_2g.sband);
+- mt7915_init_txpower(dev, &dev->mphy.sband_5g.sband);
+- mt7915_init_txpower(dev, &dev->mphy.sband_6g.sband);
+ mt7915_txbf_init(dev);
+ }
+
+diff --git a/mt7915/mac.c b/mt7915/mac.c
+index 67e7b264..d9d5aad4 100644
+--- a/mt7915/mac.c
++++ b/mt7915/mac.c
+@@ -1395,8 +1395,8 @@ mt7915_mac_restart(struct mt7915_dev *dev)
+ goto out;
+
+ mt7915_mac_init(dev);
+- mt7915_init_txpower(dev, &dev->mphy.sband_2g.sband);
+- mt7915_init_txpower(dev, &dev->mphy.sband_5g.sband);
++ mt7915_init_txpower(&dev->phy);
++ mt7915_init_txpower(phy2);
+ ret = mt7915_txbf_init(dev);
+
+ if (test_bit(MT76_STATE_RUNNING, &dev->mphy.state)) {
+diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h
+index eb66fcda..f0809291 100644
+--- a/mt7915/mt7915.h
++++ b/mt7915/mt7915.h
+@@ -428,8 +428,7 @@ void mt7915_dma_cleanup(struct mt7915_dev *dev);
+ int mt7915_dma_reset(struct mt7915_dev *dev, bool force);
+ int mt7915_dma_start(struct mt7915_dev *dev, bool reset, bool wed_reset);
+ int mt7915_txbf_init(struct mt7915_dev *dev);
+-void mt7915_init_txpower(struct mt7915_dev *dev,
+- struct ieee80211_supported_band *sband);
++void mt7915_init_txpower(struct mt7915_phy *phy);
+ void mt7915_reset(struct mt7915_dev *dev);
+ int mt7915_run(struct ieee80211_hw *hw);
+ int mt7915_mcu_init(struct mt7915_dev *dev);
+--
+2.39.2
+