[][MAC80211][MT76][Fix patch fail]
[Description]
Fix patch fail
[Release-log]
N/A
Change-Id: Ic67b010637fec8ccdaafca746d82b43a1f1a41bd
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6438621
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 aed5db0..777dfbe 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,21 +1,20 @@
-From ae9d492fc2d9e15e6625187bc0fcbc154fb58e02 Mon Sep 17 00:00:00 2001
+From a9856ee394084946e0fb59c6b56dfd66108761ba Mon Sep 17 00:00:00 2001
From: Bo Jiao <Bo.Jiao@mediatek.com>
Date: Wed, 22 Jun 2022 10:51:59 +0800
-Subject: [PATCH 1006/1008] mt76: mt7915: add L0.5 system error recovery
- support
+Subject: [PATCH] mt76: mt7915: add L0.5 system error recovery support
---
- .../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(-)
+ mt7915/debugfs.c | 88 ++++++++++++---
+ mt7915/dma.c | 48 ++++++++
+ mt7915/init.c | 8 +-
+ mt7915/mac.c | 283 +++++++++++++++++++++++++++++++++++++----------
+ mt7915/main.c | 19 +++-
+ mt7915/mcu.c | 95 ++++++++++++++--
+ mt7915/mcu.h | 3 +-
+ mt7915/mmio.c | 8 +-
+ mt7915/mt7915.h | 23 ++++
+ mt7915/regs.h | 16 +++
+ 10 files changed, 492 insertions(+), 99 deletions(-)
diff --git a/mt7915/debugfs.c b/mt7915/debugfs.c
index 0cfb6068..07de2eef 100644
@@ -142,16 +141,16 @@
kfree(buff);
return ret;
diff --git a/mt7915/dma.c b/mt7915/dma.c
-index c2d655cd..9e3d14db 100644
+index f7e6bb10..4b594a53 100644
--- a/mt7915/dma.c
+++ b/mt7915/dma.c
-@@ -486,6 +486,54 @@ int mt7915_dma_init(struct mt7915_dev *dev, struct mt7915_phy *phy2)
+@@ -479,6 +479,54 @@ int mt7915_dma_init(struct mt7915_dev *dev, struct mt7915_phy *phy2)
return 0;
}
+int mt7915_dma_reset(struct mt7915_dev *dev, bool force)
+{
-+ struct mt76_phy *mphy_ext = dev->mt76.phy2;
++ struct mt76_phy *mphy_ext = dev->mt76.phys[MT_BAND1];
+ int i;
+
+ /* clean up hw queues */
@@ -201,7 +200,7 @@
{
mt7915_dma_disable(dev, true);
diff --git a/mt7915/init.c b/mt7915/init.c
-index 02d1b6d8..0d5109a3 100644
+index 37b7b54a..141c5ad8 100644
--- a/mt7915/init.c
+++ b/mt7915/init.c
@@ -262,7 +262,7 @@ static void mt7915_led_set_brightness(struct led_classdev *led_cdev,
@@ -241,7 +240,7 @@
unreg_thermal:
diff --git a/mt7915/mac.c b/mt7915/mac.c
-index 24052f47..f13456bf 100644
+index 6b3fa4ce..e5409413 100644
--- a/mt7915/mac.c
+++ b/mt7915/mac.c
@@ -3,6 +3,7 @@
@@ -252,15 +251,15 @@
#include "mt7915.h"
#include "../dma.h"
#include "mac.h"
-@@ -1313,85 +1314,188 @@ mt7915_update_beacons(struct mt7915_dev *dev)
- mt7915_update_vif_beacon, dev->mt76.phy2->hw);
+@@ -1315,85 +1316,187 @@ mt7915_update_beacons(struct mt7915_dev *dev)
+ mt7915_update_vif_beacon, mphy_ext->hw);
}
-static void
-mt7915_dma_reset(struct mt7915_dev *dev)
+void mt7915_tx_token_put(struct mt7915_dev *dev)
{
-- struct mt76_phy *mphy_ext = dev->mt76.phy2;
+- struct mt76_phy *mphy_ext = dev->mt76.phys[MT_BAND1];
- u32 hif1_ofs = MT_WFDMA0_PCIE1(0) - MT_WFDMA0(0);
- int i;
+ struct mt76_txwi_cache *txwi;
@@ -287,16 +286,13 @@
- 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;
++ ext_phy = dev->mt76.phys[MT_BAND1];
+ 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);
if (dev->hif2) {
- mt76_clear(dev, MT_WFDMA0_GLO_CFG + hif1_ofs,
- MT_WFDMA0_GLO_CFG_TX_DMA_EN |
@@ -308,15 +304,15 @@
- MT_WFDMA1_GLO_CFG_RX_DMA_EN);
+ mt76_wr(dev, MT_INT1_MASK_CSR, 0x0);
+ mt76_wr(dev, MT_INT1_SOURCE_CSR, ~0);
-+ }
+ }
+
+- usleep_range(1000, 2000);
+ if (dev_is_pci(mdev->dev)) {
+ mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0x0);
+ if (dev->hif2)
+ mt76_wr(dev, MT_PCIE1_MAC_INT_ENABLE, 0x0);
- }
++ }
-- 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)
@@ -354,15 +350,7 @@
- /* 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) {
@@ -376,6 +364,15 @@
+
+ mt76_wr(dev, MT_INT_MASK_CSR, dev->mt76.mmio.irqmask);
+ mt76_wr(dev, MT_INT_SOURCE_CSR, ~0);
+
+- 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);
if (dev->hif2) {
- mt76_set(dev, MT_WFDMA0_GLO_CFG + hif1_ofs,
- MT_WFDMA0_GLO_CFG_TX_DMA_EN |
@@ -453,7 +450,10 @@
- idr_for_each_entry(&dev->mt76.token, txwi, id) {
- mt7915_txwi_free(dev, txwi, NULL, NULL);
- dev->mt76.token_count--;
-+ ext_phy = dev->mt76.phy2;
+- }
+- spin_unlock_bh(&dev->mt76.token_lock);
+- idr_destroy(&dev->mt76.token);
++ ext_phy = dev->mt76.phys[MT_BAND1];
+ phy2 = ext_phy ? ext_phy->priv : NULL;
+
+ dev->ser.hw_full_reset = true;
@@ -475,9 +475,7 @@
+ for (i = 0; i < 10; i++) {
+ if (!mt7915_mac_reset(dev))
+ break;
- }
-- spin_unlock_bh(&dev->mt76.token_lock);
-- idr_destroy(&dev->mt76.token);
++ }
+ mutex_unlock(&dev->mt76.mutex);
+
+ if (i == 10)
@@ -501,8 +499,8 @@
}
/* system error recovery */
-@@ -1406,6 +1510,36 @@ void mt7915_mac_reset_work(struct work_struct *work)
- ext_phy = dev->mt76.phy2;
+@@ -1408,6 +1511,36 @@ void mt7915_mac_reset_work(struct work_struct *work)
+ ext_phy = dev->mt76.phys[MT_BAND1];
phy2 = ext_phy ? ext_phy->priv : NULL;
+ /* chip full reset */
@@ -538,7 +536,7 @@
if (!(READ_ONCE(dev->reset_state) & MT_MCU_CMD_STOP_DMA))
return;
-@@ -1431,7 +1565,7 @@ void mt7915_mac_reset_work(struct work_struct *work)
+@@ -1433,7 +1566,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)) {
@@ -547,7 +545,7 @@
mt7915_tx_token_put(dev);
idr_init(&dev->mt76.token);
-@@ -1480,6 +1614,34 @@ void mt7915_mac_reset_work(struct work_struct *work)
+@@ -1482,6 +1615,34 @@ void mt7915_mac_reset_work(struct work_struct *work)
MT7915_WATCHDOG_TIME);
}
@@ -583,7 +581,7 @@
{
struct mt7915_dev *dev = phy->dev;
diff --git a/mt7915/main.c b/mt7915/main.c
-index d5fb947a..60d990f3 100644
+index 4e82904f..7a7ff86a 100644
--- a/mt7915/main.c
+++ b/mt7915/main.c
@@ -20,17 +20,13 @@ static bool mt7915_dev_running(struct mt7915_dev *dev)
@@ -633,7 +631,7 @@
mutex_lock(&dev->mt76.mutex);
diff --git a/mt7915/mcu.c b/mt7915/mcu.c
-index 53d4cd44..62412c23 100644
+index f692e520..5eac6ed6 100644
--- a/mt7915/mcu.c
+++ b/mt7915/mcu.c
@@ -150,19 +150,90 @@ mt7915_mcu_set_sta_ht_mcs(struct ieee80211_sta *sta, u8 *ht_mcs,
@@ -727,7 +725,7 @@
rxd = (struct mt76_connac2_mcu_rxd *)skb->data;
if (seq != rxd->seq)
return -EAGAIN;
-@@ -2273,18 +2344,10 @@ mt7915_mcu_init_rx_airtime(struct mt7915_dev *dev)
+@@ -2266,18 +2337,10 @@ mt7915_mcu_init_rx_airtime(struct mt7915_dev *dev)
sizeof(req), true);
}
@@ -747,7 +745,7 @@
/* force firmware operation mode into normal state,
* which should be set before firmware download stage.
*/
-@@ -2333,6 +2396,20 @@ int mt7915_mcu_init(struct mt7915_dev *dev)
+@@ -2326,6 +2389,20 @@ int mt7915_mcu_init(struct mt7915_dev *dev)
MCU_WA_PARAM_RED, 0, 0);
}
@@ -784,7 +782,7 @@
SER_SET_RECOVER_L3_RX_ABORT,
SER_SET_RECOVER_L3_TX_ABORT,
diff --git a/mt7915/mmio.c b/mt7915/mmio.c
-index d0e792f8..6e140e2d 100644
+index c81fa091..8469d8fb 100644
--- a/mt7915/mmio.c
+++ b/mt7915/mmio.c
@@ -24,6 +24,7 @@ static const u32 mt7915_reg[] = {
@@ -825,7 +823,7 @@
}
}
diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h
-index 5aafaac0..07a1c9ce 100644
+index 267fa7eb..d214b181 100644
--- a/mt7915/mt7915.h
+++ b/mt7915/mt7915.h
@@ -352,6 +352,15 @@ struct mt7915_dev {
@@ -857,7 +855,7 @@
enum {
MT_RX_SEL0,
MT_RX_SEL1,
-@@ -513,6 +528,14 @@ s8 mt7915_eeprom_get_power_delta(struct mt7915_dev *dev, int band);
+@@ -514,6 +529,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);
@@ -873,10 +871,10 @@
int mt7915_mcu_twt_agrt_update(struct mt7915_dev *dev,
struct mt7915_vif *mvif,
diff --git a/mt7915/regs.h b/mt7915/regs.h
-index c7c9e411..47bae86e 100644
+index 16875680..3d2c15be 100644
--- a/mt7915/regs.h
+++ b/mt7915/regs.h
-@@ -32,6 +32,7 @@ enum reg_rev {
+@@ -26,6 +26,7 @@ enum reg_rev {
INFRA_MCU_ADDR_END,
FW_EXCEPTION_ADDR,
SWDEF_BASE_ADDR,
@@ -884,7 +882,7 @@
__MT_REG_MAX,
};
-@@ -113,6 +114,11 @@ enum offs_rev {
+@@ -107,6 +108,11 @@ enum offs_rev {
#define __REG(id) (dev->reg.reg_rev[(id)])
#define __OFFS(id) (dev->reg.offs_rev[(id)])
@@ -896,7 +894,7 @@
/* MCU WFDMA0 */
#define MT_MCU_WFDMA0_BASE 0x2000
#define MT_MCU_WFDMA0(ofs) (MT_MCU_WFDMA0_BASE + (ofs))
-@@ -565,6 +571,10 @@ enum offs_rev {
+@@ -559,6 +565,10 @@ enum offs_rev {
#define MT_WFDMA0_PRI_DLY_INT_CFG1 MT_WFDMA0(0x2f4)
#define MT_WFDMA0_PRI_DLY_INT_CFG2 MT_WFDMA0(0x2f8)
@@ -907,7 +905,7 @@
/* WFDMA1 */
#define MT_WFDMA1_BASE 0xd5000
#define MT_WFDMA1(ofs) (MT_WFDMA1_BASE + (ofs))
-@@ -710,6 +720,10 @@ enum offs_rev {
+@@ -704,6 +714,10 @@ enum offs_rev {
#define MT_MCU_CMD_NORMAL_STATE BIT(5)
#define MT_MCU_CMD_ERROR_MASK GENMASK(5, 1)
@@ -918,7 +916,7 @@
/* TOP RGU */
#define MT_TOP_RGU_BASE 0x18000000
#define MT_TOP_PWR_CTRL (MT_TOP_RGU_BASE + (0x0))
-@@ -985,6 +999,8 @@ enum offs_rev {
+@@ -979,6 +993,8 @@ enum offs_rev {
#define MT_CPU_UTIL_PEAK_IDLE_CNT MT_CPU_UTIL(0x0c)
#define MT_CPU_UTIL_CTRL MT_CPU_UTIL(0x1c)
@@ -928,5 +926,5 @@
#define MT_LED_TOP_BASE 0x18013000
#define MT_LED_PHYS(_n) (MT_LED_TOP_BASE + (_n))
--
-2.25.1
+2.18.0