[][MAC80211][mt76][refactor internal patches]

[Description]
Fix patch fails and build errors for rebasing the internal patches to
the latest mt76 codebase.

[Release-log]
N/A

Change-Id: I23d60090954fa9869a0e0222e3e045cc6d195271
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6144109
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/1006-mt76-mt7915-add-L0.5-system-error-recovery-support.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/1006-mt76-mt7915-add-L0.5-system-error-recovery-support.patch
index 34b74bb..59af5bb 100644
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/1006-mt76-mt7915-add-L0.5-system-error-recovery-support.patch
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/1006-mt76-mt7915-add-L0.5-system-error-recovery-support.patch
@@ -1,24 +1,24 @@
-From 295dac8799e536a2d5dc53e727e246e469739853 Mon Sep 17 00:00:00 2001
+From c27f0452975f76f67a53a67cf808ba49f8e3c51b Mon Sep 17 00:00:00 2001
 From: Bo Jiao <Bo.Jiao@mediatek.com>
-Date: Mon, 6 Jun 2022 20:18:15 +0800
-Subject: [PATCH 1006/1007] mt76: mt7915: add L0.5 system error recovery
+Date: Wed, 22 Jun 2022 10:51:59 +0800
+Subject: [PATCH 1006/1008] mt76: mt7915: add L0.5 system error recovery
  support
 
 ---
- mt7915/debugfs.c |  88 ++++++++++++---
- mt7915/dma.c     |  48 ++++++++
- mt7915/init.c    |   8 +-
- mt7915/mac.c     | 280 +++++++++++++++++++++++++++++++++++++----------
- mt7915/main.c    |  20 +++-
- mt7915/mcu.c     |  96 ++++++++++++++--
- mt7915/mcu.h     |   3 +-
- mt7915/mmio.c    |   8 +-
- mt7915/mt7915.h  |  23 ++++
- mt7915/regs.h    |  16 +++
- 10 files changed, 493 insertions(+), 97 deletions(-)
+ .../wireless/mediatek/mt76/mt7915/debugfs.c   |  88 ++++--
+ .../net/wireless/mediatek/mt76/mt7915/dma.c   |  48 +++
+ .../net/wireless/mediatek/mt76/mt7915/init.c  |   8 +-
+ .../net/wireless/mediatek/mt76/mt7915/mac.c   | 284 ++++++++++++++----
+ .../net/wireless/mediatek/mt76/mt7915/main.c  |  19 +-
+ .../net/wireless/mediatek/mt76/mt7915/mcu.c   |  95 +++++-
+ .../net/wireless/mediatek/mt76/mt7915/mcu.h   |   3 +-
+ .../net/wireless/mediatek/mt76/mt7915/mmio.c  |   8 +-
+ .../wireless/mediatek/mt76/mt7915/mt7915.h    |  23 ++
+ .../net/wireless/mediatek/mt76/mt7915/regs.h  |  16 +
+ 10 files changed, 493 insertions(+), 99 deletions(-)
 
 diff --git a/mt7915/debugfs.c b/mt7915/debugfs.c
-index 27eae83b..c75d9e5b 100644
+index 0cfb6068..07de2eef 100644
 --- a/mt7915/debugfs.c
 +++ b/mt7915/debugfs.c
 @@ -52,12 +52,17 @@ static ssize_t
@@ -201,7 +201,7 @@
  {
  	mt7915_dma_disable(dev, true);
 diff --git a/mt7915/init.c b/mt7915/init.c
-index b4404aec..80ada114 100644
+index 02d1b6d8..0d5109a3 100644
 --- a/mt7915/init.c
 +++ b/mt7915/init.c
 @@ -262,7 +262,7 @@ static void mt7915_led_set_brightness(struct led_classdev *led_cdev,
@@ -213,7 +213,7 @@
  mt7915_init_txpower(struct mt7915_dev *dev,
  		    struct ieee80211_supported_band *sband)
  {
-@@ -448,7 +448,7 @@ mt7915_mac_init_band(struct mt7915_dev *dev, u8 band)
+@@ -449,7 +449,7 @@ mt7915_mac_init_band(struct mt7915_dev *dev, u8 band)
  	mt76_clear(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_RXD_G5_EN);
  }
  
@@ -222,7 +222,7 @@
  {
  	int i;
  	u32 rx_len = is_mt7915(&dev->mt76) ? 0x400 : 0x680;
-@@ -478,7 +478,7 @@ static void mt7915_mac_init(struct mt7915_dev *dev)
+@@ -479,7 +479,7 @@ static void mt7915_mac_init(struct mt7915_dev *dev)
  	}
  }
  
@@ -231,7 +231,7 @@
  {
  	int ret;
  
-@@ -1160,6 +1160,8 @@ int mt7915_register_device(struct mt7915_dev *dev)
+@@ -1162,6 +1162,8 @@ int mt7915_register_device(struct mt7915_dev *dev)
  
  	mt7915_init_debugfs(&dev->phy);
  
@@ -241,7 +241,7 @@
  
  unreg_thermal:
 diff --git a/mt7915/mac.c b/mt7915/mac.c
-index 9af0644f..a9ebbf12 100644
+index 9058c750..05932707 100644
 --- a/mt7915/mac.c
 +++ b/mt7915/mac.c
 @@ -3,6 +3,7 @@
@@ -252,7 +252,7 @@
  #include "mt7915.h"
  #include "../dma.h"
  #include "mac.h"
-@@ -2063,85 +2064,188 @@ mt7915_update_beacons(struct mt7915_dev *dev)
+@@ -1311,85 +1312,188 @@ mt7915_update_beacons(struct mt7915_dev *dev)
  		mt7915_update_vif_beacon, dev->mt76.phy2->hw);
  }
  
@@ -265,10 +265,7 @@
 -	int i;
 +	struct mt76_txwi_cache *txwi;
 +	int id;
- 
--	mt76_clear(dev, MT_WFDMA0_GLO_CFG,
--		   MT_WFDMA0_GLO_CFG_TX_DMA_EN |
--		   MT_WFDMA0_GLO_CFG_RX_DMA_EN);
++
 +	spin_lock_bh(&dev->mt76.token_lock);
 +	idr_for_each_entry(&dev->mt76.token, txwi, id) {
 +		mt7915_txwi_free(dev, txwi, NULL, NULL);
@@ -277,11 +274,7 @@
 +	spin_unlock_bh(&dev->mt76.token_lock);
 +	idr_destroy(&dev->mt76.token);
 +}
- 
--	if (is_mt7915(&dev->mt76))
--		mt76_clear(dev, MT_WFDMA1_GLO_CFG,
--			   MT_WFDMA1_GLO_CFG_TX_DMA_EN |
--			   MT_WFDMA1_GLO_CFG_RX_DMA_EN);
++
 +static int
 +mt7915_mac_reset(struct mt7915_dev *dev)
 +{
@@ -290,10 +283,17 @@
 +	struct mt76_dev *mdev = &dev->mt76;
 +	int i, ret;
 +	u32 irq_mask;
-+
+ 
+-	mt76_clear(dev, MT_WFDMA0_GLO_CFG,
+-		   MT_WFDMA0_GLO_CFG_TX_DMA_EN |
+-		   MT_WFDMA0_GLO_CFG_RX_DMA_EN);
 +	ext_phy = dev->mt76.phy2;
 +	phy2 = ext_phy ? ext_phy->priv : NULL;
-+
+ 
+-	if (is_mt7915(&dev->mt76))
+-		mt76_clear(dev, MT_WFDMA1_GLO_CFG,
+-			   MT_WFDMA1_GLO_CFG_TX_DMA_EN |
+-			   MT_WFDMA1_GLO_CFG_RX_DMA_EN);
 +	/* irq disable */
 +	mt76_wr(dev, MT_INT_MASK_CSR, 0x0);
 +	mt76_wr(dev, MT_INT_SOURCE_CSR, ~0);
@@ -301,6 +301,11 @@
 -		mt76_clear(dev, MT_WFDMA0_GLO_CFG + hif1_ofs,
 -			   MT_WFDMA0_GLO_CFG_TX_DMA_EN |
 -			   MT_WFDMA0_GLO_CFG_RX_DMA_EN);
+-
+-		if (is_mt7915(&dev->mt76))
+-			mt76_clear(dev, MT_WFDMA1_GLO_CFG + hif1_ofs,
+-				   MT_WFDMA1_GLO_CFG_TX_DMA_EN |
+-				   MT_WFDMA1_GLO_CFG_RX_DMA_EN);
 +		mt76_wr(dev, MT_INT1_MASK_CSR, 0x0);
 +		mt76_wr(dev, MT_INT1_SOURCE_CSR, ~0);
 +	}
@@ -308,12 +313,14 @@
 +		mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0x0);
 +		if (dev->hif2)
 +			mt76_wr(dev, MT_PCIE1_MAC_INT_ENABLE, 0x0);
-+	}
+ 	}
  
--		if (is_mt7915(&dev->mt76))
--			mt76_clear(dev, MT_WFDMA1_GLO_CFG + hif1_ofs,
--				   MT_WFDMA1_GLO_CFG_TX_DMA_EN |
--				   MT_WFDMA1_GLO_CFG_RX_DMA_EN);
+-	usleep_range(1000, 2000);
+-
+-	for (i = 0; i < __MT_TXQ_MAX; i++) {
+-		mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[i], true);
+-		if (mphy_ext)
+-			mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[i], true);
 +	set_bit(MT76_RESET, &dev->mphy.state);
 +	set_bit(MT76_MCU_RESET, &dev->mphy.state);
 +	wake_up(&dev->mt76.mcu.wait);
@@ -322,38 +329,40 @@
 +		set_bit(MT76_MCU_RESET, &ext_phy->state);
  	}
  
--	usleep_range(1000, 2000);
+-	for (i = 0; i < __MT_MCUQ_MAX; i++)
+-		mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[i], true);
 +	/* lock/unlock all queues to ensure that no tx is pending */
 +	mt76_txq_schedule_all(&dev->mphy);
 +	if (ext_phy)
 +		mt76_txq_schedule_all(ext_phy);
  
--	for (i = 0; i < __MT_TXQ_MAX; i++) {
--		mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[i], true);
--		if (mphy_ext)
--			mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[i], true);
+-	mt76_for_each_q_rx(&dev->mt76, i)
+-		mt76_queue_rx_reset(dev, i);
 +	/* disable all tx/rx napi */
 +	mt76_worker_disable(&dev->mt76.tx_worker);
 +	mt76_for_each_q_rx(mdev, i) {
 +		if (mdev->q_rx[i].ndesc)
 +			napi_disable(&dev->mt76.napi[i]);
- 	}
++	}
 +	napi_disable(&dev->mt76.tx_napi);
  
--	for (i = 0; i < __MT_MCUQ_MAX; i++)
--		mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[i], true);
--
--	mt76_for_each_q_rx(&dev->mt76, i)
--		mt76_queue_rx_reset(dev, i);
+-	mt76_tx_status_check(&dev->mt76, true);
 +	/* token reinit */
 +	mt7915_tx_token_put(dev);
 +	idr_init(&dev->mt76.token);
  
--	mt76_tx_status_check(&dev->mt76, true);
-+	mt7915_dma_reset(dev, true);
- 
 -	/* re-init prefetch settings after reset */
 -	mt7915_dma_prefetch(dev);
++	mt7915_dma_reset(dev, true);
+ 
+-	mt76_set(dev, MT_WFDMA0_GLO_CFG,
+-		 MT_WFDMA0_GLO_CFG_TX_DMA_EN | MT_WFDMA0_GLO_CFG_RX_DMA_EN);
+-	if (is_mt7915(&dev->mt76))
+-		mt76_set(dev, MT_WFDMA1_GLO_CFG,
+-			 MT_WFDMA1_GLO_CFG_TX_DMA_EN |
+-			 MT_WFDMA1_GLO_CFG_RX_DMA_EN |
+-			 MT_WFDMA1_GLO_CFG_OMIT_TX_INFO |
+-			 MT_WFDMA1_GLO_CFG_OMIT_RX_INFO);
 +	local_bh_disable();
 +	mt76_for_each_q_rx(mdev, i) {
 +		if (mdev->q_rx[i].ndesc) {
@@ -364,21 +373,20 @@
 +	local_bh_enable();
 +	clear_bit(MT76_MCU_RESET, &dev->mphy.state);
 +	clear_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state);
- 
--	mt76_set(dev, MT_WFDMA0_GLO_CFG,
--		 MT_WFDMA0_GLO_CFG_TX_DMA_EN | MT_WFDMA0_GLO_CFG_RX_DMA_EN);
--	if (is_mt7915(&dev->mt76))
--		mt76_set(dev, MT_WFDMA1_GLO_CFG,
--			 MT_WFDMA1_GLO_CFG_TX_DMA_EN |
--			 MT_WFDMA1_GLO_CFG_RX_DMA_EN |
--			 MT_WFDMA1_GLO_CFG_OMIT_TX_INFO |
--			 MT_WFDMA1_GLO_CFG_OMIT_RX_INFO);
++
 +	mt76_wr(dev, MT_INT_MASK_CSR, dev->mt76.mmio.irqmask);
 +	mt76_wr(dev, MT_INT_SOURCE_CSR, ~0);
  	if (dev->hif2) {
 -		mt76_set(dev, MT_WFDMA0_GLO_CFG + hif1_ofs,
 -			 MT_WFDMA0_GLO_CFG_TX_DMA_EN |
 -			 MT_WFDMA0_GLO_CFG_RX_DMA_EN);
+-
+-		if (is_mt7915(&dev->mt76))
+-			mt76_set(dev, MT_WFDMA1_GLO_CFG + hif1_ofs,
+-				 MT_WFDMA1_GLO_CFG_TX_DMA_EN |
+-				 MT_WFDMA1_GLO_CFG_RX_DMA_EN |
+-				 MT_WFDMA1_GLO_CFG_OMIT_TX_INFO |
+-				 MT_WFDMA1_GLO_CFG_OMIT_RX_INFO);
 +		mt76_wr(dev, MT_INT1_MASK_CSR, irq_mask);
 +		mt76_wr(dev, MT_INT1_SOURCE_CSR, ~0);
 +	}
@@ -387,13 +395,7 @@
 +		if (dev->hif2)
 +			mt76_wr(dev, MT_PCIE1_MAC_INT_ENABLE, 0xff);
 +	}
- 
--		if (is_mt7915(&dev->mt76))
--			mt76_set(dev, MT_WFDMA1_GLO_CFG + hif1_ofs,
--				 MT_WFDMA1_GLO_CFG_TX_DMA_EN |
--				 MT_WFDMA1_GLO_CFG_RX_DMA_EN |
--				 MT_WFDMA1_GLO_CFG_OMIT_TX_INFO |
--				 MT_WFDMA1_GLO_CFG_OMIT_RX_INFO);
++
 +	/* load firmware */
 +	ret = mt7915_run_firmware(dev);
 +	if (ret)
@@ -499,7 +501,7 @@
  }
  
  /* system error recovery */
-@@ -2156,6 +2260,36 @@ void mt7915_mac_reset_work(struct work_struct *work)
+@@ -1404,6 +1508,36 @@ void mt7915_mac_reset_work(struct work_struct *work)
  	ext_phy = dev->mt76.phy2;
  	phy2 = ext_phy ? ext_phy->priv : NULL;
  
@@ -536,7 +538,7 @@
  	if (!(READ_ONCE(dev->reset_state) & MT_MCU_CMD_STOP_DMA))
  		return;
  
-@@ -2181,7 +2315,7 @@ void mt7915_mac_reset_work(struct work_struct *work)
+@@ -1429,7 +1563,7 @@ void mt7915_mac_reset_work(struct work_struct *work)
  	mt76_wr(dev, MT_MCU_INT_EVENT, MT_MCU_INT_EVENT_DMA_STOPPED);
  
  	if (mt7915_wait_reset_state(dev, MT_MCU_CMD_RESET_DONE)) {
@@ -545,7 +547,7 @@
  
  		mt7915_tx_token_put(dev);
  		idr_init(&dev->mt76.token);
-@@ -2230,6 +2364,34 @@ void mt7915_mac_reset_work(struct work_struct *work)
+@@ -1478,6 +1612,34 @@ void mt7915_mac_reset_work(struct work_struct *work)
  					     MT7915_WATCHDOG_TIME);
  }
  
@@ -581,7 +583,7 @@
  {
  	struct mt7915_dev *dev = phy->dev;
 diff --git a/mt7915/main.c b/mt7915/main.c
-index 24bc12f5..082e27d4 100644
+index 90543596..42a0ece7 100644
 --- a/mt7915/main.c
 +++ b/mt7915/main.c
 @@ -20,17 +20,13 @@ static bool mt7915_dev_running(struct mt7915_dev *dev)
@@ -603,7 +605,7 @@
  	running = mt7915_dev_running(dev);
  
  	if (!running) {
-@@ -80,6 +76,19 @@ static int mt7915_start(struct ieee80211_hw *hw)
+@@ -80,6 +76,18 @@ static int mt7915_start(struct ieee80211_hw *hw)
  		mt7915_mac_reset_counters(phy);
  
  out:
@@ -613,7 +615,6 @@
 +static int mt7915_start(struct ieee80211_hw *hw)
 +{
 +	struct mt7915_dev *dev = mt7915_hw_dev(hw);
-+	bool running;
 +	int ret;
 +
 +	flush_work(&dev->init_work);
@@ -623,7 +624,7 @@
  	mutex_unlock(&dev->mt76.mutex);
  
  	return ret;
-@@ -91,6 +100,7 @@ static void mt7915_stop(struct ieee80211_hw *hw)
+@@ -91,6 +99,7 @@ static void mt7915_stop(struct ieee80211_hw *hw)
  	struct mt7915_phy *phy = mt7915_hw_phy(hw);
  
  	cancel_delayed_work_sync(&phy->mt76->mac_work);
@@ -632,10 +633,10 @@
  	mutex_lock(&dev->mt76.mutex);
  
 diff --git a/mt7915/mcu.c b/mt7915/mcu.c
-index 495f2368..4a921a50 100644
+index 6ae4d159..34409759 100644
 --- a/mt7915/mcu.c
 +++ b/mt7915/mcu.c
-@@ -207,19 +207,90 @@ mt7915_mcu_set_sta_ht_mcs(struct ieee80211_sta *sta, u8 *ht_mcs,
+@@ -150,19 +150,90 @@ mt7915_mcu_set_sta_ht_mcs(struct ieee80211_sta *sta, u8 *ht_mcs,
  		ht_mcs[nss] = sta->ht_cap.mcs.rx_mask[nss] & mask[nss];
  }
  
@@ -698,7 +699,7 @@
  			  struct sk_buff *skb, int seq)
  {
 +	struct mt7915_dev *dev = container_of(mdev, struct mt7915_dev, mt76);
- 	struct mt7915_mcu_rxd *rxd;
+ 	struct mt76_connac2_mcu_rxd *rxd;
  	int ret = 0;
  
  	if (!skb) {
@@ -723,10 +724,10 @@
  
 +	dev->ser.cmd_fail_cnt = 0;
 +
- 	rxd = (struct mt7915_mcu_rxd *)skb->data;
+ 	rxd = (struct mt76_connac2_mcu_rxd *)skb->data;
  	if (seq != rxd->seq)
  		return -EAGAIN;
-@@ -2549,18 +2620,10 @@ mt7915_mcu_init_rx_airtime(struct mt7915_dev *dev)
+@@ -2257,18 +2328,10 @@ mt7915_mcu_init_rx_airtime(struct mt7915_dev *dev)
  				 sizeof(req), true);
  }
  
@@ -734,7 +735,7 @@
 +int mt7915_run_firmware(struct mt7915_dev *dev)
  {
 -	static const struct mt76_mcu_ops mt7915_mcu_ops = {
--		.headroom = sizeof(struct mt7915_mcu_txd),
+-		.headroom = sizeof(struct mt76_connac2_mcu_txd),
 -		.mcu_skb_send_msg = mt7915_mcu_send_message,
 -		.mcu_parse_response = mt7915_mcu_parse_response,
 -		.mcu_restart = mt76_connac_mcu_restart,
@@ -746,19 +747,18 @@
  	/* force firmware operation mode into normal state,
  	 * which should be set before firmware download stage.
  	 */
-@@ -2609,6 +2672,21 @@ int mt7915_mcu_init(struct mt7915_dev *dev)
+@@ -2317,6 +2380,20 @@ int mt7915_mcu_init(struct mt7915_dev *dev)
  				 MCU_WA_PARAM_RED, 0, 0);
  }
  
 +int mt7915_mcu_init(struct mt7915_dev *dev)
 +{
 +	static const struct mt76_mcu_ops mt7915_mcu_ops = {
-+		.headroom = sizeof(struct mt7915_mcu_txd),
++		.headroom = sizeof(struct mt76_connac2_mcu_txd),
 +		.mcu_skb_send_msg = mt7915_mcu_send_message,
 +		.mcu_parse_response = mt7915_mcu_parse_response,
 +		.mcu_restart = mt76_connac_mcu_restart,
 +	};
-+	int ret;
 +
 +	dev->mt76.mcu_ops = &mt7915_mcu_ops;
 +
@@ -769,10 +769,10 @@
  {
  	__mt76_mcu_restart(&dev->mt76);
 diff --git a/mt7915/mcu.h b/mt7915/mcu.h
-index 364ea0dd..44d3722e 100644
+index 7418f78c..4c5482b2 100644
 --- a/mt7915/mcu.h
 +++ b/mt7915/mcu.h
-@@ -489,8 +489,9 @@ enum {
+@@ -452,8 +452,9 @@ enum {
  
  enum {
  	SER_QUERY,
@@ -784,7 +784,7 @@
  	SER_SET_RECOVER_L3_RX_ABORT,
  	SER_SET_RECOVER_L3_TX_ABORT,
 diff --git a/mt7915/mmio.c b/mt7915/mmio.c
-index 71945ba9..ba61ce2e 100644
+index a8e3810e..bccb1084 100644
 --- a/mt7915/mmio.c
 +++ b/mt7915/mmio.c
 @@ -24,6 +24,7 @@ static const u32 mt7915_reg[] = {
@@ -825,10 +825,10 @@
  	}
  }
 diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h
-index 80a17a7d..ae5ac72f 100644
+index 6c6c2424..20aeca77 100644
 --- a/mt7915/mt7915.h
 +++ b/mt7915/mt7915.h
-@@ -353,6 +353,15 @@ struct mt7915_dev {
+@@ -352,6 +352,15 @@ struct mt7915_dev {
  	struct work_struct reset_work;
  	wait_queue_head_t reset_wait;
  	u32 reset_state;
@@ -844,7 +844,7 @@
  
  	struct list_head sta_rc_list;
  	struct list_head sta_poll_list;
-@@ -416,6 +425,12 @@ enum {
+@@ -415,6 +424,12 @@ enum {
  	__MT_WFDMA_MAX,
  };
  
@@ -855,9 +855,9 @@
 +};
 +
  enum {
- 	MT_CTX0,
- 	MT_HIF0 = 0x0,
-@@ -527,6 +542,14 @@ s8 mt7915_eeprom_get_power_delta(struct mt7915_dev *dev, int band);
+ 	MT_RX_SEL0,
+ 	MT_RX_SEL1,
+@@ -512,6 +527,14 @@ s8 mt7915_eeprom_get_power_delta(struct mt7915_dev *dev, int band);
  int mt7915_dma_init(struct mt7915_dev *dev, struct mt7915_phy *phy2);
  void mt7915_dma_prefetch(struct mt7915_dev *dev);
  void mt7915_dma_cleanup(struct mt7915_dev *dev);
@@ -928,5 +928,5 @@
  #define MT_LED_TOP_BASE			0x18013000
  #define MT_LED_PHYS(_n)			(MT_LED_TOP_BASE + (_n))
 -- 
-2.18.0
+2.25.1