From 0d9e675842ae495da9412694f4dc6b3cfa897140 Mon Sep 17 00:00:00 2001
From: "sujuan.chen" <sujuan.chen@mediatek.com>
Date: Tue, 30 May 2023 15:36:33 +0800
Subject: [PATCH] mtk: mac80211: add per-bss flag to support vendors counter

Signed-off-by: sujuan.chen <sujuan.chen@mediatek.com>
---
 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 3e348a5..659ae8d 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -6102,6 +6102,7 @@ enum nl80211_ext_feature_index {
 	NL80211_EXT_FEATURE_BSS_COLOR,
 	NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
 	NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+	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 838085f..e165ac6 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2641,7 +2641,9 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
 	skb = rx->skb;
 	xmit_skb = NULL;
 
-	dev_sw_netstats_rx_add(dev, skb->len);
+	if (!wiphy_ext_feature_isset(sdata->local->hw.wiphy,
+	    NL80211_EXT_FEATURE_STAS_COUNT) || !rx->sta)
+		dev_sw_netstats_rx_add(dev, skb->len);
 
 	if (rx->sta) {
 		/* The seqno index has the same property as needed
@@ -4544,7 +4546,9 @@ static void ieee80211_rx_8023(struct ieee80211_rx_data *rx,
 
 	skb->dev = fast_rx->dev;
 
-	dev_sw_netstats_rx_add(fast_rx->dev, skb->len);
+	if (!wiphy_ext_feature_isset(sta->local->hw.wiphy,
+	    NL80211_EXT_FEATURE_STAS_COUNT))
+		dev_sw_netstats_rx_add(fast_rx->dev, 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 9b66cc0..5fb51fc 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3454,7 +3454,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;
@@ -4219,7 +4221,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);
 	}
@@ -4497,7 +4501,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->tx_stats.packets[queue] += skbs;
 	sta->tx_stats.bytes[queue] += len;
 
-- 
2.18.0

