From 247fa46efdeaa5ea727a3d5dde7a9f3d7aac97d4 Mon Sep 17 00:00:00 2001
From: Yi-Chia Hsieh <Yi-Chia.Hsieh@mediatek.com>
Date: Fri, 5 Aug 2022 13:58:11 -0700
Subject: [PATCH 3006/3007] mt76: mt7915: add statistic for H/W Rx Path

Change-Id: Id94d663f08e91c83d296bd57e5e9b65a505ae1c7
---
 mt76.h            |  4 ++++
 mt76_connac.h     |  5 +++++
 mt76_connac_mcu.h | 35 +++++++++++++++++++++++++++++++++++
 mt7915/mac.c      | 25 +++++++++++++++++++++++++
 mt7915/main.c     |  9 ++++++++-
 mt7915/mcu.c      | 21 +++++++++++++++++++++
 mt7915/mmio.c     |  6 ++++++
 mt7915/mt7915.h   |  3 +++
 8 files changed, 107 insertions(+), 1 deletion(-)

diff --git a/mt76.h b/mt76.h
index 9b00f53c..4958d97c 100644
--- a/mt76.h
+++ b/mt76.h
@@ -278,6 +278,10 @@ struct mt76_sta_stats {
 	u32 tx_packets;
 	u32 tx_retries;
 	u32 tx_failed;
+	u64 rx_bytes;
+	u32 rx_packets;
+	u32 rx_error;
+	u32 rx_drop;
 };
 
 enum mt76_wcid_flags {
diff --git a/mt76_connac.h b/mt76_connac.h
index 9a468878..7ecc7253 100644
--- a/mt76_connac.h
+++ b/mt76_connac.h
@@ -224,6 +224,11 @@ static inline bool is_mt76_fw_txp(struct mt76_dev *dev)
 	}
 }
 
+static inline bool is_wo_mcu(struct mt76_dev *dev)
+{
+	return is_mt7986(dev);
+}
+
 static inline u8 mt76_connac_chan_bw(struct cfg80211_chan_def *chandef)
 {
 	static const u8 width_to_bw[] = {
diff --git a/mt76_connac_mcu.h b/mt76_connac_mcu.h
index 4cdfadc7..adb06f84 100644
--- a/mt76_connac_mcu.h
+++ b/mt76_connac_mcu.h
@@ -1210,6 +1210,41 @@ enum {
 	MCU_CE_CMD_GET_TXPWR = 0xd0,
 };
 
+enum wo_event_id {
+	WO_EVT_LOG_DUMP = 0x1,
+	WO_EVT_PROFILING = 0x2,
+	WO_EVT_RXCNT_INFO = 0x3
+};
+
+enum wo_cmd_id {
+	WO_CMD_WED_CFG = 0,
+	WO_CMD_WED_RX_STAT,
+	WO_CMD_RRO_SER,
+	WO_CMD_DBG_INFO,
+	WO_CMD_DEV_INFO,
+	WO_CMD_BSS_INFO,
+	WO_CMD_STA_REC,
+	WO_CMD_DEV_INFO_DUMP,
+	WO_CMD_BSS_INFO_DUMP,
+	WO_CMD_STA_REC_DUMP,
+	WO_CMD_BA_INFO_DUMP,
+	WO_CMD_FBCMD_Q_DUMP,
+	WO_CMD_FW_LOG_CTRL,
+	WO_CMD_LOG_FLUSH,
+	WO_CMD_CHANGE_STATE,
+	WO_CMD_CPU_STATS_ENABLE,
+	WO_CMD_CPU_STATS_DUMP,
+	WO_CMD_EXCEPTION_INIT,
+	WO_CMD_PROF_CTRL,
+	WO_CMD_STA_BA_DUMP,
+	WO_CMD_BA_CTRL_DUMP,
+	WO_CMD_RXCNT_CTRL,
+	WO_CMD_RXCNT_INFO,
+	WO_CMD_SET_CAP,
+	WO_CMD_CCIF_RING_DUMP,
+	WO_CMD_WED_END
+};
+
 enum {
 	PATCH_SEM_RELEASE,
 	PATCH_SEM_GET
diff --git a/mt7915/mac.c b/mt7915/mac.c
index 0cd9cad9..35c13efd 100644
--- a/mt7915/mac.c
+++ b/mt7915/mac.c
@@ -940,6 +940,31 @@ void mt7915_wed_trigger_ser(struct mtk_wed_device *wed)
 	return;
 }
 
+void mt7915_wed_update_wo_rxcnt(struct mtk_wed_device *wed,
+				    struct wo_cmd_rxcnt_t *rxcnt)
+{
+	struct mt7915_dev *dev;
+	struct mt76_wcid *wcid;
+
+	dev = container_of(wed, struct mt7915_dev, mt76.mmio.wed);
+	if (rxcnt->wlan_idx >= mt7915_wtbl_size(dev))
+		return;
+
+	rcu_read_lock();
+
+	wcid = rcu_dereference(dev->mt76.wcid[rxcnt->wlan_idx]);
+	if (!wcid)
+		goto out;
+
+	wcid->stats.rx_bytes += rxcnt->rx_byte_cnt;
+	wcid->stats.rx_packets += rxcnt->rx_pkt_cnt;
+	wcid->stats.rx_error += rxcnt->rx_err_cnt;
+	wcid->stats.rx_drop += rxcnt->rx_drop_cnt;
+
+out:
+	rcu_read_unlock();
+}
+
 static void
 mt7915_tx_check_aggr(struct ieee80211_sta *sta, __le32 *txwi)
 {
diff --git a/mt7915/main.c b/mt7915/main.c
index fcf122cf..db9d55fe 100644
--- a/mt7915/main.c
+++ b/mt7915/main.c
@@ -1049,7 +1049,8 @@ static void mt7915_sta_statistics(struct ieee80211_hw *hw,
 	struct rate_info *txrate = &msta->wcid.rate;
 	struct rate_info rxrate = {};
 
-	if (is_mt7915(&phy->dev->mt76) &&
+	if ((is_mt7915(&phy->dev->mt76) ||
+	    mtk_wed_device_active(&phy->dev->mt76.mmio.wed)) &&
 	    !mt7915_mcu_get_rx_rate(phy, vif, sta, &rxrate)) {
 		sinfo->rxrate = rxrate;
 		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BITRATE);
@@ -1086,6 +1087,12 @@ static void mt7915_sta_statistics(struct ieee80211_hw *hw,
 
 		sinfo->tx_retries = msta->wcid.stats.tx_retries;
 		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_RETRIES);
+
+		sinfo->rx_bytes = msta->wcid.stats.rx_bytes;
+		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BYTES64);
+
+		sinfo->rx_packets = msta->wcid.stats.rx_packets;
+		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS);
 	}
 }
 
diff --git a/mt7915/mcu.c b/mt7915/mcu.c
index aa8bcf70..b0fa6dac 100644
--- a/mt7915/mcu.c
+++ b/mt7915/mcu.c
@@ -293,6 +293,27 @@ int mt7915_mcu_wa_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2, u32 a3)
 	return mt76_mcu_send_msg(&dev->mt76, cmd, &req, sizeof(req), false);
 }
 
+int mt7915_mcu_wo_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2)
+{
+	struct mtk_wed_device *wed = &dev->mt76.mmio.wed;
+	struct {
+		__le32 args[2];
+	} req = {
+		.args = {
+			cpu_to_le32(a1),
+			cpu_to_le32(a2),
+		},
+	};
+
+	if (!mtk_wed_device_active(wed))
+		return -1;
+
+	if (!is_wo_mcu(&dev->mt76))
+		return -1;
+
+	return mtk_soc_wed_ops->msg_update(wed, cmd, (void *)&req, sizeof(req));
+}
+
 static void
 mt7915_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
 {
diff --git a/mt7915/mmio.c b/mt7915/mmio.c
index 0edea0d3..c5ce8cf7 100644
--- a/mt7915/mmio.c
+++ b/mt7915/mmio.c
@@ -9,6 +9,7 @@
 #include "mt7915.h"
 #include "mac.h"
 #include "../trace.h"
+#include "../mt76_connac_mcu.h"
 
 static bool wed_enable = true;
 module_param(wed_enable, bool, 0644);
@@ -763,6 +764,8 @@ mt7915_pci_wed_init(struct mt7915_dev *dev, struct device *pdev, int *irq)
 
 	wed->wlan.ser_trigger = mt7915_wed_trigger_ser;
 
+	wed->wlan.update_wo_rxcnt = mt7915_wed_update_wo_rxcnt;
+
 	dev->mt76.rx_token_size = wed->wlan.rx_pkt;
 	if (mtk_wed_device_attach(wed) != 0)
 		return 0;
@@ -774,6 +777,9 @@ mt7915_pci_wed_init(struct mt7915_dev *dev, struct device *pdev, int *irq)
 	if (ret)
 		return ret;
 
+	if (is_wo_mcu(&dev->mt76))
+		mt7915_mcu_wo_cmd(dev, WO_CMD_RXCNT_CTRL, 1, 6);
+
 	return 1;
 #else
 	return 0;
diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h
index a4872451..03486837 100644
--- a/mt7915/mt7915.h
+++ b/mt7915/mt7915.h
@@ -550,6 +550,8 @@ u32 mt7915_wed_init_rx_buf(struct mtk_wed_device *wed,
 				int pkt_num);
 void mt7915_wed_release_rx_buf(struct mtk_wed_device *wed);
 void mt7915_wed_trigger_ser(struct mtk_wed_device *wed);
+void mt7915_wed_update_wo_rxcnt(struct mtk_wed_device *wed,
+				struct wo_cmd_rxcnt_t *rxcnt);
 int mt7915_register_device(struct mt7915_dev *dev);
 void mt7915_unregister_device(struct mt7915_dev *dev);
 int mt7915_eeprom_init(struct mt7915_dev *dev);
@@ -634,6 +636,7 @@ int mt7915_mcu_rdd_background_enable(struct mt7915_phy *phy,
 				     struct cfg80211_chan_def *chandef);
 int mt7915_mcu_rf_regval(struct mt7915_dev *dev, u32 regidx, u32 *val, bool set);
 int mt7915_mcu_wa_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2, u32 a3);
+int mt7915_mcu_wo_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2);
 int mt7915_mcu_fw_log_2_host(struct mt7915_dev *dev, u8 type, u8 ctrl);
 int mt7915_mcu_fw_dbg_ctrl(struct mt7915_dev *dev, u32 module, u8 level);
 void mt7915_mcu_rx_event(struct mt7915_dev *dev, struct sk_buff *skb);
-- 
2.25.1

