[][MAC80211][mt76][add support to control single sku]

[Description]
Add support to control single sku on/off.

Usage (turn off single sku feature):
echo 1 > sku_disable
wifi down
wifi up

[Release-log]
N/A

Change-Id: I708c89a25729bc6ec77637b09c6e53119346d24a
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6145186
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/1001-mt76-mt7915-add-mtk-internal-debug-tools-for-mt76.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/1001-mt76-mt7915-add-mtk-internal-debug-tools-for-mt76.patch
index b634866..cefd039 100644
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/1001-mt76-mt7915-add-mtk-internal-debug-tools-for-mt76.patch
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/1001-mt76-mt7915-add-mtk-internal-debug-tools-for-mt76.patch
@@ -1,21 +1,22 @@
-From 6bde2bca6b391d6e7e0b5d8599eedc136354e5c5 Mon Sep 17 00:00:00 2001
+From 66334b2b6ed1d15fc0ac2d66c81fcbc51eb65825 Mon Sep 17 00:00:00 2001
 From: Shayne Chen <shayne.chen@mediatek.com>
 Date: Wed, 22 Jun 2022 10:39:47 +0800
-Subject: [PATCH 1001/1008] mt76: mt7915: add mtk internal debug tools for mt76
+Subject: [PATCH] mt76: mt7915: add mtk internal debug tools for mt76
 
 ---
  .../wireless/mediatek/mt76/mt76_connac_mcu.h  |    6 +
  .../wireless/mediatek/mt76/mt7915/Makefile    |    2 +-
  .../wireless/mediatek/mt76/mt7915/debugfs.c   |   73 +-
  .../net/wireless/mediatek/mt76/mt7915/mac.c   |   14 +
- .../net/wireless/mediatek/mt76/mt7915/mcu.c   |   42 +
+ .../net/wireless/mediatek/mt76/mt7915/main.c  |    4 +
+ .../net/wireless/mediatek/mt76/mt7915/mcu.c   |   44 +
  .../net/wireless/mediatek/mt76/mt7915/mcu.h   |    4 +
- .../wireless/mediatek/mt76/mt7915/mt7915.h    |   41 +
+ .../wireless/mediatek/mt76/mt7915/mt7915.h    |   43 +
  .../mediatek/mt76/mt7915/mt7915_debug.h       | 1350 ++++++++
- .../mediatek/mt76/mt7915/mtk_debugfs.c        | 2921 +++++++++++++++++
+ .../mediatek/mt76/mt7915/mtk_debugfs.c        | 2923 +++++++++++++++++
  .../wireless/mediatek/mt76/mt7915/mtk_mcu.c   |   51 +
  .../net/wireless/mediatek/mt76/tools/fwlog.c  |   44 +-
- 11 files changed, 4535 insertions(+), 13 deletions(-)
+ 12 files changed, 4545 insertions(+), 13 deletions(-)
  mode change 100644 => 100755 drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
  create mode 100644 drivers/net/wireless/mediatek/mt76/mt7915/mt7915_debug.h
  create mode 100644 drivers/net/wireless/mediatek/mt76/mt7915/mtk_debugfs.c
@@ -235,10 +236,26 @@
  	return 0;
  }
  
+diff --git a/mt7915/main.c b/mt7915/main.c
+index 39587992..929c726d 100644
+--- a/mt7915/main.c
++++ b/mt7915/main.c
+@@ -62,7 +62,11 @@ static int mt7915_start(struct ieee80211_hw *hw)
+ 	if (ret)
+ 		goto out;
+ 
++#ifdef MTK_DEBUG
++	ret = mt7915_mcu_set_sku_en(phy, !dev->dbg.sku_disable);
++#else
+ 	ret = mt7915_mcu_set_sku_en(phy, true);
++#endif
+ 	if (ret)
+ 		goto out;
+ 
 diff --git a/mt7915/mcu.c b/mt7915/mcu.c
 old mode 100644
 new mode 100755
-index a726021e..e4c5b40c
+index a726021e..4ff13c7a
 --- a/mt7915/mcu.c
 +++ b/mt7915/mcu.c
 @@ -195,6 +195,11 @@ mt7915_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,
@@ -253,7 +270,16 @@
  	return mt76_tx_queue_skb_raw(dev, mdev->q_mcu[qid], skb, 0);
  }
  
+@@ -3164,6 +3169,8 @@ int mt7915_mcu_set_sku_en(struct mt7915_phy *phy, bool enable)
+ 		.sku_enable = enable,
+ 	};
+ 
-@@ -3439,6 +3444,43 @@ int mt7915_mcu_twt_agrt_update(struct mt7915_dev *dev,
++	pr_info("%s: enable = %d\n", __func__, enable);
++
+ 	return mt76_mcu_send_msg(&dev->mt76,
+ 				 MCU_EXT_CMD(TX_POWER_FEATURE_CTRL), &req,
+ 				 sizeof(req), true);
+@@ -3439,6 +3446,43 @@ int mt7915_mcu_twt_agrt_update(struct mt7915_dev *dev,
  				 &req, sizeof(req), true);
  }
  
@@ -313,7 +339,7 @@
  
  enum mcu_mmps_mode {
 diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h
-index b6a6aa7f..2bc0e915 100644
+index b6a6aa7f..594f2fb2 100644
 --- a/mt7915/mt7915.h
 +++ b/mt7915/mt7915.h
 @@ -9,6 +9,7 @@
@@ -324,7 +350,7 @@
  #define MT7915_MAX_INTERFACES		19
  #define MT7915_WTBL_SIZE		288
  #define MT7916_WTBL_SIZE		544
-@@ -338,6 +339,27 @@ struct mt7915_dev {
+@@ -338,6 +339,29 @@ struct mt7915_dev {
  	struct reset_control *rstc;
  	void __iomem *dcm;
  	void __iomem *sku;
@@ -346,13 +372,15 @@
 +		bool dump_rx_pkt;
 +		bool dump_rx_raw;
 +		u32 token_idx;
++		u8 sku_disable;
++		u8 muru_onoff;
 +	} dbg;
 +	const struct mt7915_dbg_reg_desc *dbg_reg;
 +#endif
  };
  
  enum {
-@@ -592,4 +614,23 @@ void mt7915_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+@@ -592,4 +616,23 @@ void mt7915_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
  			    struct ieee80211_sta *sta, struct dentry *dir);
  #endif
  
@@ -1734,10 +1762,10 @@
 +#endif
 diff --git a/mt7915/mtk_debugfs.c b/mt7915/mtk_debugfs.c
 new file mode 100644
-index 00000000..ccaaea78
+index 00000000..f18c8b6c
 --- /dev/null
 +++ b/mt7915/mtk_debugfs.c
-@@ -0,0 +1,2921 @@
+@@ -0,0 +1,2923 @@
 +#include<linux/inet.h>
 +#include "mt7915.h"
 +#include "mt7915_debug.h"
@@ -4656,6 +4684,8 @@
 +	debugfs_create_file("txpower_level", 0400, dir, dev,
 +			    &fops_txpower_level);
 +
++	debugfs_create_u8("sku_disable", 0600, dir, &dev->dbg.sku_disable);
++
 +	return 0;
 +}
 +#endif