[][MAC80211][WiFi6][mt76][Fix scs feature calltrace issue]
[Description]
Fix scs feature causes calltrace when rmmod mt7915e. Cancel scs dealyed
work when all ap interfaces are stopped.
[Release-log]
N/A
Change-Id: I6d5178b757271c08cb0738127fb746feea548e2f
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8384530
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/1045-wifi-mt76-mt7915-support-scs-feature.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/1045-wifi-mt76-mt7915-support-scs-feature.patch
index c3b90be..4cb13d3 100644
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/1045-wifi-mt76-mt7915-support-scs-feature.patch
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/1045-wifi-mt76-mt7915-support-scs-feature.patch
@@ -1,7 +1,7 @@
-From e60a464f34f516a977c952cfaf53f355de50bfbd Mon Sep 17 00:00:00 2001
+From 775a9c8aa928a43fd4eaf8d252c5691dcce8fd08 Mon Sep 17 00:00:00 2001
From: Howard Hsu <howard-yh.hsu@mediatek.com>
Date: Wed, 6 Dec 2023 08:53:03 +0800
-Subject: [PATCH 57/76] wifi: mt76: mt7915: support scs feature
+Subject: [PATCH] wifi: mt76: mt7915: support scs feature
Add support scs feature for connac2 codebase. This commit includes three
parts.
@@ -21,12 +21,12 @@
mt76_connac_mcu.h | 1 +
mt7915/init.c | 1 +
mt7915/mac.c | 11 ++++
- mt7915/main.c | 12 +++++
+ mt7915/main.c | 13 +++++
mt7915/mcu.c | 118 +++++++++++++++++++++++++++++++++++++++++++
mt7915/mcu.h | 4 ++
mt7915/mt7915.h | 13 +++++
mt7915/mtk_debugfs.c | 24 +++++++++
- 9 files changed, 186 insertions(+)
+ 9 files changed, 187 insertions(+)
diff --git a/mt76.h b/mt76.h
index 4704c50..c0fdbd6 100644
@@ -61,10 +61,10 @@
MCU_EXT_CMD_FW_DBG_CTRL = 0x95,
MCU_EXT_CMD_OFFCH_SCAN_CTRL = 0x9a,
diff --git a/mt7915/init.c b/mt7915/init.c
-index ff7bd11..5467418 100644
+index 53dea70..cab711c 100644
--- a/mt7915/init.c
+++ b/mt7915/init.c
-@@ -1243,6 +1243,7 @@ int mt7915_register_device(struct mt7915_dev *dev)
+@@ -1244,6 +1244,7 @@ int mt7915_register_device(struct mt7915_dev *dev)
spin_lock_init(&dev->phy.stats_lock);
INIT_WORK(&dev->rc_work, mt7915_mac_sta_rc_work);
INIT_DELAYED_WORK(&dev->mphy.mac_work, mt7915_mac_work);
@@ -116,7 +116,7 @@
wiphy_name(dev->mt76.hw->wiphy));
}
diff --git a/mt7915/main.c b/mt7915/main.c
-index 0318254..2e1f4b9 100644
+index 0318254..5be931b 100644
--- a/mt7915/main.c
+++ b/mt7915/main.c
@@ -95,12 +95,24 @@ int mt7915_run(struct ieee80211_hw *hw)
@@ -144,6 +144,14 @@
if (!running)
mt7915_mac_reset_counters(phy);
+@@ -141,6 +153,7 @@ static void mt7915_stop(struct ieee80211_hw *hw)
+ }
+
+ if (!mt7915_dev_running(dev)) {
++ cancel_delayed_work_sync(&dev->scs_work);
+ mt76_connac_mcu_set_pm(&dev->mt76, dev->phy.mt76->band_idx, 1);
+ mt7915_mcu_set_mac(dev, dev->phy.mt76->band_idx, false, false);
+ }
diff --git a/mt7915/mcu.c b/mt7915/mcu.c
index 2b41feb..38679d2 100644
--- a/mt7915/mcu.c