blob: 081bd72566e1774a4086031d1f7d5ec8a8ce5f44 [file] [log] [blame]
From 4d85822963f5d150be638d78ea84c5199f80d676 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 33/61] mtk: mac80211: add per-bss flag to support vendors
counter
Change-Id: I73fcae64d933c66b9eef9b6f55f7bb1e4ce19501
---
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 e859c96..220d20d 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -6620,6 +6620,7 @@ enum nl80211_ext_feature_index {
NL80211_EXT_FEATURE_OWE_OFFLOAD_AP,
NL80211_EXT_FEATURE_DFS_CONCURRENT,
NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT,
+ 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 da3fc51..06725f3 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2672,7 +2672,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
@@ -4819,7 +4821,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 344f4bf..a2ed041 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3559,7 +3559,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;
@@ -4330,7 +4332,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);
}
@@ -4667,7 +4671,10 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
info->status_data_idr = 1;
}
- 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.39.2