From 629de725ea7db82076de9c1d23e84b24c64dc64b Mon Sep 17 00:00:00 2001
From: Peter Chiu <chui-hao.chiu@mediatek.com>
Date: Mon, 30 Jan 2023 11:36:32 +0800
Subject: [PATCH 3010/3012] wifi: mt76: update debugfs knob for reset counter
 and get tx packet error rate

---
 mt7915/mtk_debugfs.c | 62 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/mt7915/mtk_debugfs.c b/mt7915/mtk_debugfs.c
index 361b50c..f896e53 100644
--- a/mt7915/mtk_debugfs.c
+++ b/mt7915/mtk_debugfs.c
@@ -3790,6 +3790,66 @@ mt7915_sw_aci_set(void *data, u64 val)
 DEFINE_DEBUGFS_ATTRIBUTE(fops_sw_aci, NULL,
 			 mt7915_sw_aci_set, "%llx\n");
 
+static int mt7915_reset_counter(void *data, u64 val)
+{
+	struct mt7915_phy *phy = data;
+	struct mt7915_dev *dev = phy->dev;
+	struct mt76_wcid *wcid;
+
+	/* Clear the firmware counters */
+	mt7915_mcu_get_tx_stat_wa(dev, dev->wlan_idx);
+	mt7915_get_tx_stat(phy, dev->wlan_idx);
+
+	rcu_read_lock();
+	wcid = rcu_dereference(dev->mt76.wcid[dev->wlan_idx]);
+	if (!wcid)
+		return -EINVAL;
+
+	memset(&wcid->stats, 0, sizeof(struct mt76_sta_stats));
+
+	rcu_read_unlock();
+
+	return 0;
+}
+
+DEFINE_DEBUGFS_ATTRIBUTE(fops_reset_counter, NULL,
+			 mt7915_reset_counter, "%lld\n");
+
+static int
+mt7915_per_read(struct seq_file *s, void *data)
+{
+	struct mt7915_dev *dev = dev_get_drvdata(s->private);
+	struct mt76_sta_stats *stats;
+	struct mt76_wcid *wcid;
+	int ret;
+	u8 phy_idx;
+
+	if (!dev->mt76.wcid[dev->wlan_idx])
+		return -EINVAL;
+
+	phy_idx = dev->mt76.wcid[dev->wlan_idx]->phy_idx;
+
+	ret = mt7915_get_tx_stat(dev->mt76.phys[phy_idx]->priv, dev->wlan_idx);
+	if (ret)
+		return ret;
+
+	rcu_read_lock();
+	wcid = rcu_dereference(dev->mt76.wcid[dev->wlan_idx]);
+	if (!wcid)
+		return -EINVAL;
+
+	stats = &wcid->stats;
+
+	seq_printf(s, "sta %d, tx_mpdu_cnt = %u, tx_failed = %u,  PER = %u.%u%%\n", dev->wlan_idx,
+		   stats->tx_mpdu_cnt, stats->tx_failed,
+		   stats->tx_mpdu_cnt ? stats->tx_failed * 1000 / stats->tx_mpdu_cnt / 10 : 0,
+		   stats->tx_mpdu_cnt ? stats->tx_failed * 1000 / stats->tx_mpdu_cnt % 10 : 0);
+
+	rcu_read_unlock();
+
+	return 0;
+}
+
 int mt7915_mtk_init_debugfs(struct mt7915_phy *phy, struct dentry *dir)
 {
 	struct mt7915_dev *dev = phy->dev;
@@ -3881,6 +3941,8 @@ 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("reset_counter", 0200, dir, dev, &fops_reset_counter);
+	debugfs_create_devm_seqfile(dev->mt76.dev, "per", dir, mt7915_per_read);
 	return 0;
 }
 #endif
-- 
2.18.0

