From ca3fdfbb27f8d7c4c57164276e0220a7825fa61c 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/3011] mt76: mt7915: add statistic for H/W Rx Path

Change-Id: Id94d663f08e91c83d296bd57e5e9b65a505ae1c7
---
 mt76.h          |  4 ++++
 mt7915/mac.c    | 25 +++++++++++++++++++++++++
 mt7915/main.c   |  9 ++++++++-
 mt7915/mmio.c   | 17 +++++++++++++++++
 mt7915/mt7915.h |  2 ++
 5 files changed, 56 insertions(+), 1 deletion(-)

diff --git a/mt76.h b/mt76.h
index f22e96e..8011d4c 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/mt7915/mac.c b/mt7915/mac.c
index cbdabea..f1d15d8 100644
--- a/mt7915/mac.c
+++ b/mt7915/mac.c
@@ -972,6 +972,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 84b9001..4ac5259 100644
--- a/mt7915/main.c
+++ b/mt7915/main.c
@@ -1054,7 +1054,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);
@@ -1091,6 +1092,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);
 	}
 
 	sinfo->ack_signal = (s8)msta->ack_signal;
diff --git a/mt7915/mmio.c b/mt7915/mmio.c
index 60b7886..f3144d1 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);
@@ -668,6 +669,8 @@ int mt7915_mmio_wed_init(struct mt7915_dev *dev, void *pdev_ptr,
 
 	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))
 		return 0;
@@ -680,6 +683,20 @@ int mt7915_mmio_wed_init(struct mt7915_dev *dev, void *pdev_ptr,
 	if (ret)
 		return ret;
 
+	if (wed->ver != 1) {
+		struct {
+		__le32 args[2];
+		} req = {
+			.args = {
+				cpu_to_le32(1),
+				cpu_to_le32(6),
+			},
+		};
+
+		mtk_wed_device_update_msg(wed, WED_WO_RXCNT_CTRL,
+					  (void *)&req, sizeof(req));
+	}
+
 	return 1;
 #else
 	return 0;
diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h
index 36d1d86..7165273 100644
--- a/mt7915/mt7915.h
+++ b/mt7915/mt7915.h
@@ -565,6 +565,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);
 void mt7915_eeprom_rebonding(struct mt7915_dev *dev);
-- 
2.18.0

