blob: 9c3586cad0c5e2b09a20dc0b6121d51122e496ac [file] [log] [blame]
developer7be29542023-06-28 17:30:38 +08001From 0d9e675842ae495da9412694f4dc6b3cfa897140 Mon Sep 17 00:00:00 2001
2From: "sujuan.chen" <sujuan.chen@mediatek.com>
3Date: Tue, 30 May 2023 15:36:33 +0800
4Subject: [PATCH] mtk: mac80211: add per-bss flag to support vendors counter
5
6Signed-off-by: sujuan.chen <sujuan.chen@mediatek.com>
7---
8 include/uapi/linux/nl80211.h | 1 +
9 net/mac80211/rx.c | 8 ++++++--
10 net/mac80211/tx.c | 13 ++++++++++---
11 3 files changed, 17 insertions(+), 5 deletions(-)
12
13diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
14index 3e348a5..659ae8d 100644
15--- a/include/uapi/linux/nl80211.h
16+++ b/include/uapi/linux/nl80211.h
17@@ -6102,6 +6102,7 @@ enum nl80211_ext_feature_index {
18 NL80211_EXT_FEATURE_BSS_COLOR,
19 NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
20 NL80211_EXT_FEATURE_RADAR_BACKGROUND,
21+ NL80211_EXT_FEATURE_STAS_COUNT,
22
23 /* add new features before the definition below */
24 NUM_NL80211_EXT_FEATURES,
25diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
26index 838085f..e165ac6 100644
27--- a/net/mac80211/rx.c
28+++ b/net/mac80211/rx.c
29@@ -2641,7 +2641,9 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
30 skb = rx->skb;
31 xmit_skb = NULL;
32
33- dev_sw_netstats_rx_add(dev, skb->len);
34+ if (!wiphy_ext_feature_isset(sdata->local->hw.wiphy,
35+ NL80211_EXT_FEATURE_STAS_COUNT) || !rx->sta)
36+ dev_sw_netstats_rx_add(dev, skb->len);
37
38 if (rx->sta) {
39 /* The seqno index has the same property as needed
40@@ -4544,7 +4546,9 @@ static void ieee80211_rx_8023(struct ieee80211_rx_data *rx,
41
42 skb->dev = fast_rx->dev;
43
44- dev_sw_netstats_rx_add(fast_rx->dev, skb->len);
45+ if (!wiphy_ext_feature_isset(sta->local->hw.wiphy,
46+ NL80211_EXT_FEATURE_STAS_COUNT))
47+ dev_sw_netstats_rx_add(fast_rx->dev, skb->len);
48
49 /* The seqno index has the same property as needed
50 * for the rx_msdu field, i.e. it is IEEE80211_NUM_TIDS
51diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
52index 9b66cc0..5fb51fc 100644
53--- a/net/mac80211/tx.c
54+++ b/net/mac80211/tx.c
55@@ -3454,7 +3454,9 @@ ieee80211_xmit_fast_finish(struct ieee80211_sub_if_data *sdata,
56 if (key)
57 info->control.hw_key = &key->conf;
58
59- dev_sw_netstats_tx_add(skb->dev, 1, skb->len);
60+ if (!wiphy_ext_feature_isset(sta->local->hw.wiphy,
61+ NL80211_EXT_FEATURE_STAS_COUNT))
62+ dev_sw_netstats_tx_add(skb->dev, 1, skb->len);
63
64 if (hdr->frame_control & cpu_to_le16(IEEE80211_STYPE_QOS_DATA)) {
65 tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK;
66@@ -4219,7 +4221,9 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
67 goto out;
68 }
69
70- dev_sw_netstats_tx_add(dev, 1, skb->len);
71+ if (!wiphy_ext_feature_isset(sdata->local->hw.wiphy,
72+ NL80211_EXT_FEATURE_STAS_COUNT) || !sta)
73+ dev_sw_netstats_tx_add(dev, 1, skb->len);
74
75 ieee80211_xmit(sdata, sta, skb);
76 }
77@@ -4497,7 +4501,10 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
78 info->ack_frame_id = ieee80211_store_ack_skb(local, skb,
79 &info->flags, NULL);
80
81- dev_sw_netstats_tx_add(dev, skbs, len);
82+ if (!wiphy_ext_feature_isset(sta->local->hw.wiphy,
83+ NL80211_EXT_FEATURE_STAS_COUNT))
84+ dev_sw_netstats_tx_add(dev, skbs, len);
85+
86 sta->tx_stats.packets[queue] += skbs;
87 sta->tx_stats.bytes[queue] += len;
88
89--
902.18.0
91