[][MAC80211][WiFi6][mt76][Add enable/disable Spatial Reuse through debugfs]

[Description]
Add suuport to enable/disable spatial reuse feature through debugfs.

Usage:
Disable: echo 0 > sr_enable
Enable: echo 1 > sr_enable

[Release-log]
N/A

Change-Id: I61983ab624fe6f98abed15896ff71bd47c8563ab
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7972278
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/1039-wifi-mt76-mt7915-support-enable-disable-spatial-reus.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/1039-wifi-mt76-mt7915-support-enable-disable-spatial-reus.patch
new file mode 100644
index 0000000..646fb60
--- /dev/null
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/1039-wifi-mt76-mt7915-support-enable-disable-spatial-reus.patch
@@ -0,0 +1,72 @@
+From f8b4b17a84bf10198c67434b246de4a05e3e54dd Mon Sep 17 00:00:00 2001
+From: Howard Hsu <howard-yh.hsu@mediatek.com>
+Date: Tue, 5 Sep 2023 20:17:19 +0800
+Subject: [PATCH] wifi: mt76: mt7915: support enable/disable spatial reuse
+ through debugfs
+
+Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
+---
+ mt7915/mcu.c         |  3 +--
+ mt7915/mt7915.h      |  1 +
+ mt7915/mtk_debugfs.c | 12 ++++++++++++
+ 3 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/mt7915/mcu.c b/mt7915/mcu.c
+index f6ba2d5..e8e563e 100644
+--- a/mt7915/mcu.c
++++ b/mt7915/mcu.c
+@@ -3607,8 +3607,7 @@ int mt7915_mcu_set_txbf(struct mt7915_dev *dev, u8 action)
+ 				 sizeof(req), true);
+ }
+ 
+-static int
+-mt7915_mcu_enable_obss_spr(struct mt7915_phy *phy, u8 action, u8 val)
++int mt7915_mcu_enable_obss_spr(struct mt7915_phy *phy, u8 action, u8 val)
+ {
+ 	struct mt7915_dev *dev = phy->dev;
+ 	struct mt7915_mcu_sr_ctrl req = {
+diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h
+index 1c2f113..12049d1 100644
+--- a/mt7915/mt7915.h
++++ b/mt7915/mt7915.h
+@@ -733,6 +733,7 @@ int mt7915_mcu_get_edcca(struct mt7915_phy *phy, u8 mode, s8 *value);
+ int mt7915_mcu_sw_aci_set(struct mt7915_dev *dev, bool val);
+ int mt7915_mcu_ipi_hist_ctrl(struct mt7915_phy *phy, void *data, u8 cmd, bool wait_resp);
+ int mt7915_mcu_ipi_hist_scan(struct mt7915_phy *phy, void *data, u8 mode, bool wait_resp);
++int mt7915_mcu_enable_obss_spr(struct mt7915_phy *phy, u8 action, u8 val);
+ 
+ #ifdef MTK_DEBUG
+ int mt7915_mtk_init_debugfs(struct mt7915_phy *phy, struct dentry *dir);
+diff --git a/mt7915/mtk_debugfs.c b/mt7915/mtk_debugfs.c
+index 46f1b0b..c58a2d1 100644
+--- a/mt7915/mtk_debugfs.c
++++ b/mt7915/mtk_debugfs.c
+@@ -3655,6 +3655,17 @@ mt7915_sw_aci_set(void *data, u64 val)
+ DEFINE_DEBUGFS_ATTRIBUTE(fops_sw_aci, NULL,
+ 			 mt7915_sw_aci_set, "%llx\n");
+ 
++static int
++mt7915_sr_enable_set(void *data, u64 val)
++{
++	struct mt7915_phy *phy = data;
++
++	return mt7915_mcu_enable_obss_spr(phy, SPR_ENABLE, val);
++}
++
++DEFINE_DEBUGFS_ATTRIBUTE(fops_sr_enable, NULL,
++			 mt7915_sr_enable_set, "%llx\n");
++
+ int mt7915_mtk_init_debugfs(struct mt7915_phy *phy, struct dentry *dir)
+ {
+ 	struct mt7915_dev *dev = phy->dev;
+@@ -3745,6 +3756,7 @@ int mt7915_mtk_init_debugfs(struct mt7915_phy *phy, struct dentry *dir)
+ 				    mt7915_show_eeprom_mode);
+ 	debugfs_create_file("sw_aci", 0600, dir, dev,
+ 			    &fops_sw_aci);
++	debugfs_create_file("sr_enable", 0200, dir, phy, &fops_sr_enable);
+ 	return 0;
+ }
+ #endif
+-- 
+2.18.0
+