From 3cee39db21222ca86581819f72fcc4839dfea429 Mon Sep 17 00:00:00 2001
From: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
Date: Fri, 18 Aug 2023 10:17:08 +0800
Subject: [PATCH] wifi: mt76: mt7996: add per bss statistic info

Whenever WED is enabled, unicast traffic might run through HW path.
As a result, we need to count them using WM event.
Broadcast and multicast traffic on the other hand, will be counted in mac80211
as they always go through SW path and thus mac80211 can always see and count them.

|         | Tx                             | Rx                        |
|---------|--------------------------------|---------------------------|
| Unicast | mt76                           | mt76                      |
|         | __mt7996_stat_to_netdev()      | __mt7996_stat_to_netdev() |
|---------|--------------------------------|---------------------------|
| BMCast  | mac80211                       | mac80211                  |
|         | __ieee80211_subif_start_xmit() | ieee80211_deliver_skb()   |
---
 mt7996/init.c |  1 +
 mt7996/main.c |  1 +
 mt7996/mcu.c  | 40 +++++++++++++++++++++++++++++++++++-----
 3 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/mt7996/init.c b/mt7996/init.c
index 1cdf81a..6b30820 100644
--- a/mt7996/init.c
+++ b/mt7996/init.c
@@ -375,6 +375,7 @@ mt7996_init_wiphy(struct ieee80211_hw *hw)
 	wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT);
 	wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_CAN_REPLACE_PTK0);
 	wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER);
+	wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_STAS_COUNT);
 
 	wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION);
 	wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BEACON_PROTECTION);
diff --git a/mt7996/main.c b/mt7996/main.c
index 52e9666..a8ed204 100644
--- a/mt7996/main.c
+++ b/mt7996/main.c
@@ -254,6 +254,7 @@ static int mt7996_add_interface(struct ieee80211_hw *hw,
 	mvif->sta.wcid.phy_idx = band_idx;
 	mvif->sta.wcid.hw_key_idx = -1;
 	mvif->sta.wcid.tx_info |= MT_WCID_TX_INFO_SET;
+	mvif->sta.vif = mvif;
 	mt76_wcid_init(&mvif->sta.wcid);
 
 	mt7996_mac_wtbl_update(dev, idx,
diff --git a/mt7996/mcu.c b/mt7996/mcu.c
index a4c6cd5..0653882 100644
--- a/mt7996/mcu.c
+++ b/mt7996/mcu.c
@@ -552,6 +552,27 @@ static void mt7996_mcu_rx_rro(struct mt7996_dev *dev, struct sk_buff *skb)
 
 }
 
+static inline void __mt7996_stat_to_netdev(struct mt76_phy *mphy,
+					   struct mt76_wcid *wcid,
+					   u32 tx_bytes, u32 rx_bytes,
+					   u32 tx_packets, u32 rx_packets)
+{
+	struct mt7996_sta *msta;
+	struct ieee80211_vif *vif;
+	struct wireless_dev *wdev;
+
+	if (wiphy_ext_feature_isset(mphy->hw->wiphy,
+				    NL80211_EXT_FEATURE_STAS_COUNT)) {
+		msta = container_of(wcid, struct mt7996_sta, wcid);
+		vif = container_of((void *)msta->vif, struct ieee80211_vif,
+				   drv_priv);
+		wdev = ieee80211_vif_to_wdev(vif);
+
+		dev_sw_netstats_tx_add(wdev->netdev, tx_packets, tx_bytes);
+		dev_sw_netstats_rx_add(wdev->netdev, rx_packets, rx_bytes);
+	}
+}
+
 static void
 mt7996_mcu_rx_all_sta_info_event(struct mt7996_dev *dev, struct sk_buff *skb)
 {
@@ -567,7 +588,7 @@ mt7996_mcu_rx_all_sta_info_event(struct mt7996_dev *dev, struct sk_buff *skb)
 		u16 wlan_idx;
 		struct mt76_wcid *wcid;
 		struct mt76_phy *mphy;
-		u32 tx_bytes, rx_bytes;
+		u32 tx_bytes, rx_bytes, tx_packets, rx_packets;
 
 		switch (le16_to_cpu(res->tag)) {
 		case UNI_ALL_STA_TXRX_RATE:
@@ -595,6 +616,9 @@ mt7996_mcu_rx_all_sta_info_event(struct mt7996_dev *dev, struct sk_buff *skb)
 				wcid->stats.tx_bytes += tx_bytes;
 				wcid->stats.rx_bytes += rx_bytes;
 
+				__mt7996_stat_to_netdev(mphy, wcid,
+							tx_bytes, rx_bytes, 0, 0);
+
 				ieee80211_tpt_led_trig_tx(mphy->hw, tx_bytes);
 				ieee80211_tpt_led_trig_rx(mphy->hw, rx_bytes);
 			}
@@ -606,10 +630,16 @@ mt7996_mcu_rx_all_sta_info_event(struct mt7996_dev *dev, struct sk_buff *skb)
 			if (!wcid)
 				break;
 
-			wcid->stats.tx_packets +=
-				le32_to_cpu(res->msdu_cnt[i].tx_msdu_cnt);
-			wcid->stats.rx_packets +=
-				le32_to_cpu(res->msdu_cnt[i].rx_msdu_cnt);
+			mphy = mt76_dev_phy(&dev->mt76, wcid->phy_idx);
+
+			tx_packets = le32_to_cpu(res->msdu_cnt[i].tx_msdu_cnt);
+			rx_packets = le32_to_cpu(res->msdu_cnt[i].rx_msdu_cnt);
+
+			wcid->stats.tx_packets += tx_packets;
+			wcid->stats.rx_packets += rx_packets;
+
+			__mt7996_stat_to_netdev(mphy, wcid, 0, 0,
+						tx_packets, rx_packets);
 			break;
 		default:
 			break;
-- 
2.18.0

