blob: 766a68553fbbe7e72410f041abf3765ab964073f [file] [log] [blame]
developerf043db82022-12-21 14:59:23 +08001From 49d393ab26f28cec6713ebf967a8f4b6e44b158d Mon Sep 17 00:00:00 2001
developere2cc0fa2022-03-29 17:31:03 +08002From: MeiChia Chiu <meichia.chiu@mediatek.com>
developerf64861f2022-06-22 11:44:53 +08003Date: Wed, 22 Jun 2022 10:45:53 +0800
developer9851a292022-12-15 17:33:43 +08004Subject: [PATCH 1004/1009] mt76: mt7915: add support for muru_onoff via
developerbd398d52022-06-06 20:53:24 +08005 debugfs
developere2cc0fa2022-03-29 17:31:03 +08006
7---
developer5ce5ea42022-08-31 14:12:29 +08008 mt7915/init.c | 1 +
developereb6a0182022-12-12 18:53:32 +08009 mt7915/mcu.c | 11 ++++++++---
developer5ce5ea42022-08-31 14:12:29 +080010 mt7915/mcu.h | 6 ++++++
11 mt7915/mtk_debugfs.c | 33 +++++++++++++++++++++++++++++++++
developereb6a0182022-12-12 18:53:32 +080012 4 files changed, 48 insertions(+), 3 deletions(-)
developere2cc0fa2022-03-29 17:31:03 +080013
14diff --git a/mt7915/init.c b/mt7915/init.c
developer699cda22022-12-17 15:21:57 +080015index 844a92f..00ddab7 100644
developere2cc0fa2022-03-29 17:31:03 +080016--- a/mt7915/init.c
17+++ b/mt7915/init.c
developer9851a292022-12-15 17:33:43 +080018@@ -693,6 +693,7 @@ static void mt7915_init_work(struct work_struct *work)
developere2cc0fa2022-03-29 17:31:03 +080019 mt7915_init_txpower(dev, &dev->mphy.sband_5g.sband);
20 mt7915_init_txpower(dev, &dev->mphy.sband_6g.sband);
21 mt7915_txbf_init(dev);
22+ dev->dbg.muru_onoff = OFDMA_DL | MUMIMO_UL | MUMIMO_DL;
23 }
24
25 void mt7915_wfsys_reset(struct mt7915_dev *dev)
26diff --git a/mt7915/mcu.c b/mt7915/mcu.c
developer699cda22022-12-17 15:21:57 +080027index 788f3fb..ce07eee 100644
developere2cc0fa2022-03-29 17:31:03 +080028--- a/mt7915/mcu.c
29+++ b/mt7915/mcu.c
developereb6a0182022-12-12 18:53:32 +080030@@ -876,13 +876,18 @@ mt7915_mcu_sta_muru_tlv(struct mt7915_dev *dev, struct sk_buff *skb,
developere2cc0fa2022-03-29 17:31:03 +080031
32 muru = (struct sta_rec_muru *)tlv;
33
34- muru->cfg.mimo_dl_en = mvif->cap.he_mu_ebfer ||
developereb6a0182022-12-12 18:53:32 +080035- mvif->cap.vht_mu_ebfer ||
developere2cc0fa2022-03-29 17:31:03 +080036- mvif->cap.vht_mu_ebfee;
developereb6a0182022-12-12 18:53:32 +080037+ muru->cfg.mimo_dl_en = (mvif->cap.he_mu_ebfer ||
38+ mvif->cap.vht_mu_ebfer ||
39+ mvif->cap.vht_mu_ebfee) &&
40+ !!(dev->dbg.muru_onoff & MUMIMO_DL);
developerf64861f2022-06-22 11:44:53 +080041 if (!is_mt7915(&dev->mt76))
42 muru->cfg.mimo_ul_en = true;
43 muru->cfg.ofdma_dl_en = true;
44
developere2cc0fa2022-03-29 17:31:03 +080045+ muru->cfg.mimo_ul_en = !!(dev->dbg.muru_onoff & MUMIMO_UL);
46+ muru->cfg.ofdma_dl_en = !!(dev->dbg.muru_onoff & OFDMA_DL);
47+ muru->cfg.ofdma_ul_en = !!(dev->dbg.muru_onoff & OFDMA_UL);
developerf64861f2022-06-22 11:44:53 +080048+
developereb6a0182022-12-12 18:53:32 +080049 if (sta->deflink.vht_cap.vht_supported)
developere2cc0fa2022-03-29 17:31:03 +080050 muru->mimo_dl.vht_mu_bfee =
developereb6a0182022-12-12 18:53:32 +080051 !!(sta->deflink.vht_cap.cap & IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE);
developere2cc0fa2022-03-29 17:31:03 +080052diff --git a/mt7915/mcu.h b/mt7915/mcu.h
developer699cda22022-12-17 15:21:57 +080053index f3dedd5..b6840b2 100644
developere2cc0fa2022-03-29 17:31:03 +080054--- a/mt7915/mcu.h
55+++ b/mt7915/mcu.h
developereb6a0182022-12-12 18:53:32 +080056@@ -608,4 +608,10 @@ struct csi_data {
developere2cc0fa2022-03-29 17:31:03 +080057 };
58 #endif
59
60+/* MURU */
developer4721e252022-06-21 16:41:28 +080061+#define OFDMA_DL BIT(0)
62+#define OFDMA_UL BIT(1)
63+#define MUMIMO_DL BIT(2)
64+#define MUMIMO_UL BIT(3)
developere2cc0fa2022-03-29 17:31:03 +080065+
66 #endif
developere2cc0fa2022-03-29 17:31:03 +080067diff --git a/mt7915/mtk_debugfs.c b/mt7915/mtk_debugfs.c
developer699cda22022-12-17 15:21:57 +080068index 53f98d1..2719a8d 100644
developere2cc0fa2022-03-29 17:31:03 +080069--- a/mt7915/mtk_debugfs.c
70+++ b/mt7915/mtk_debugfs.c
developer1346ce52022-12-15 21:36:14 +080071@@ -2481,6 +2481,38 @@ static int mt7915_token_txd_read(struct seq_file *s, void *data)
developere2cc0fa2022-03-29 17:31:03 +080072 return 0;
73 }
74
75+static int mt7915_muru_onoff_get(void *data, u64 *val)
76+{
developer4721e252022-06-21 16:41:28 +080077+ struct mt7915_dev *dev = data;
developere2cc0fa2022-03-29 17:31:03 +080078+
developer4721e252022-06-21 16:41:28 +080079+ *val = dev->dbg.muru_onoff;
developere2cc0fa2022-03-29 17:31:03 +080080+
developer4721e252022-06-21 16:41:28 +080081+ printk("mumimo ul:%d, mumimo dl:%d, ofdma ul:%d, ofdma dl:%d\n",
82+ !!(dev->dbg.muru_onoff & MUMIMO_UL),
83+ !!(dev->dbg.muru_onoff & MUMIMO_DL),
84+ !!(dev->dbg.muru_onoff & OFDMA_UL),
85+ !!(dev->dbg.muru_onoff & OFDMA_DL));
developere2cc0fa2022-03-29 17:31:03 +080086+
developer4721e252022-06-21 16:41:28 +080087+ return 0;
developere2cc0fa2022-03-29 17:31:03 +080088+}
89+
90+static int mt7915_muru_onoff_set(void *data, u64 val)
91+{
developer4721e252022-06-21 16:41:28 +080092+ struct mt7915_dev *dev = data;
developere2cc0fa2022-03-29 17:31:03 +080093+
developer4721e252022-06-21 16:41:28 +080094+ if (val > 15) {
95+ printk("Wrong value! The value is between 0 ~ 15.\n");
96+ goto exit;
97+ }
developere2cc0fa2022-03-29 17:31:03 +080098+
developer4721e252022-06-21 16:41:28 +080099+ dev->dbg.muru_onoff = val;
developere2cc0fa2022-03-29 17:31:03 +0800100+exit:
developer4721e252022-06-21 16:41:28 +0800101+ return 0;
developere2cc0fa2022-03-29 17:31:03 +0800102+}
103+
104+DEFINE_DEBUGFS_ATTRIBUTE(fops_muru_onoff, mt7915_muru_onoff_get,
developer4721e252022-06-21 16:41:28 +0800105+ mt7915_muru_onoff_set, "%llx\n");
developere2cc0fa2022-03-29 17:31:03 +0800106+
107 static int mt7915_amsduinfo_read(struct seq_file *s, void *data)
108 {
109 struct mt7915_dev *dev = dev_get_drvdata(s->private);
developer1346ce52022-12-15 21:36:14 +0800110@@ -2860,6 +2892,7 @@ int mt7915_mtk_init_debugfs(struct mt7915_phy *phy, struct dentry *dir)
developere2cc0fa2022-03-29 17:31:03 +0800111
112 mt7915_mcu_fw_log_2_host(dev, MCU_FW_LOG_WM, 0);
113
114+ debugfs_create_file("muru_onoff", 0600, dir, dev, &fops_muru_onoff);
115 debugfs_create_file("fw_debug_module", 0600, dir, dev,
116 &fops_fw_debug_module);
117 debugfs_create_file("fw_debug_level", 0600, dir, dev,
118--
developer699cda22022-12-17 15:21:57 +08001192.36.1
developere2cc0fa2022-03-29 17:31:03 +0800120