From 7ef885cff2d628c84b83eb4b697106b781495fa5 Mon Sep 17 00:00:00 2001
From: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
Date: Wed, 16 Aug 2023 07:23:34 +0800
Subject: [PATCH 2/2] mac80211: mtk: add per-bss flag to support vendors
 counter

---
 include/uapi/linux/nl80211.h |  1 +
 net/mac80211/rx.c            |  8 ++++++--
 net/mac80211/tx.c            | 13 ++++++++++---
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 6e96ad9..b1555bb 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -6471,6 +6471,7 @@ enum nl80211_ext_feature_index {
 	NL80211_EXT_FEATURE_PUNCT,
 	NL80211_EXT_FEATURE_SECURE_NAN,
 	NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA,
+	NL80211_EXT_FEATURE_STAS_COUNT,
 
 	/* add new features before the definition below */
 	NUM_NL80211_EXT_FEATURES,
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 347867c..07dddcd 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2632,7 +2632,9 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
 	skb = rx->skb;
 	xmit_skb = NULL;
 
-	dev_sw_netstats_rx_add(dev, 1, skb->len);
+	if (!wiphy_ext_feature_isset(sdata->local->hw.wiphy,
+	    NL80211_EXT_FEATURE_STAS_COUNT) || !rx->sta)
+		dev_sw_netstats_rx_add(dev, 1, skb->len);
 
 	if (rx->sta) {
 		/* The seqno index has the same property as needed
@@ -4762,7 +4764,9 @@ static void ieee80211_rx_8023(struct ieee80211_rx_data *rx,
 
 	skb->dev = fast_rx->dev;
 
-	dev_sw_netstats_rx_add(fast_rx->dev, 1, skb->len);
+	if (!wiphy_ext_feature_isset(sta->local->hw.wiphy,
+	    NL80211_EXT_FEATURE_STAS_COUNT))
+		dev_sw_netstats_rx_add(fast_rx->dev, 1, skb->len);
 
 	/* The seqno index has the same property as needed
 	 * for the rx_msdu field, i.e. it is IEEE80211_NUM_TIDS
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 0ed18d5..c6eec00 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3540,7 +3540,9 @@ ieee80211_xmit_fast_finish(struct ieee80211_sub_if_data *sdata,
 	if (key)
 		info->control.hw_key = &key->conf;
 
-	dev_sw_netstats_tx_add(skb->dev, 1, skb->len);
+	if (!wiphy_ext_feature_isset(sta->local->hw.wiphy,
+	    NL80211_EXT_FEATURE_STAS_COUNT))
+		dev_sw_netstats_tx_add(skb->dev, 1, skb->len);
 
 	if (hdr->frame_control & cpu_to_le16(IEEE80211_STYPE_QOS_DATA)) {
 		tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK;
@@ -4311,7 +4313,9 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
 			goto out;
 		}
 
-		dev_sw_netstats_tx_add(dev, 1, skb->len);
+		if (!wiphy_ext_feature_isset(sdata->local->hw.wiphy,
+		    NL80211_EXT_FEATURE_STAS_COUNT) || !sta)
+			dev_sw_netstats_tx_add(dev, 1, skb->len);
 
 		ieee80211_xmit(sdata, sta, skb);
 	}
@@ -4643,7 +4647,10 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
 		info->ack_frame_id = ieee80211_store_ack_skb(local, skb,
 							     &info->flags, NULL);
 
-	dev_sw_netstats_tx_add(dev, skbs, len);
+	if (!wiphy_ext_feature_isset(sta->local->hw.wiphy,
+	    NL80211_EXT_FEATURE_STAS_COUNT))
+		dev_sw_netstats_tx_add(dev, skbs, len);
+
 	sta->deflink.tx_stats.packets[queue] += skbs;
 	sta->deflink.tx_stats.bytes[queue] += len;
 
-- 
2.18.0

