mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-19 18:31:33 +00:00
125 lines
3.8 KiB
Diff
125 lines
3.8 KiB
Diff
From 3be7ae2d65b6638c4165d66c1c4b5d82d95517d9 Mon Sep 17 00:00:00 2001
|
|
From: Tamizh Chelvam <tamizhr@codeaurora.org>
|
|
Date: Wed, 10 Mar 2021 12:21:49 +0530
|
|
Subject: [PATCH] Revert "net: mac80211: use core API for updating TX/RX stats"
|
|
|
|
This reverts 36ec144f041bedc2f14b32faa2da11d4d9660003 commit
|
|
in QSDK since 4.4 backports does not support netstats APIs
|
|
for tx/rx stats and retaining the original logic for calculating
|
|
tx/rx stats.
|
|
|
|
Signed-off-by: Tamizh Chelvam <tamizhr@codeaurora.org>
|
|
---
|
|
net/mac80211/rx.c | 18 ++++++++++++++----
|
|
net/mac80211/tx.c | 16 +++++++++++++---
|
|
2 files changed, 27 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
|
|
index ee42e3c..6463a54 100644
|
|
--- a/net/mac80211/rx.c
|
|
+++ b/net/mac80211/rx.c
|
|
@@ -32,6 +32,16 @@
|
|
#include "wme.h"
|
|
#include "rate.h"
|
|
|
|
+static inline void ieee80211_rx_stats(struct net_device *dev, u32 len)
|
|
+{
|
|
+ struct pcpu_sw_netstats *tstats = this_cpu_ptr(netdev_tstats(dev));
|
|
+
|
|
+ u64_stats_update_begin(&tstats->syncp);
|
|
+ tstats->rx_packets++;
|
|
+ tstats->rx_bytes += len;
|
|
+ u64_stats_update_end(&tstats->syncp);
|
|
+}
|
|
+
|
|
/*
|
|
* monitor mode reception
|
|
*
|
|
@@ -832,7 +842,7 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb,
|
|
|
|
if (skb) {
|
|
skb->dev = sdata->dev;
|
|
- dev_sw_netstats_rx_add(skb->dev, skb->len);
|
|
+ ieee80211_rx_stats(skb->dev, skb->len);
|
|
netif_receive_skb(skb);
|
|
}
|
|
}
|
|
@@ -2614,7 +2624,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
|
|
skb = rx->skb;
|
|
xmit_skb = NULL;
|
|
|
|
- dev_sw_netstats_rx_add(dev, skb->len);
|
|
+ ieee80211_rx_stats(dev, skb->len);
|
|
|
|
if (rx->sta) {
|
|
/* The seqno index has the same property as needed
|
|
@@ -3776,7 +3786,7 @@ static void ieee80211_rx_cooked_monitor(struct ieee80211_rx_data *rx,
|
|
}
|
|
|
|
prev_dev = sdata->dev;
|
|
- dev_sw_netstats_rx_add(sdata->dev, skb->len);
|
|
+ ieee80211_rx_stats(sdata->dev, skb->len);
|
|
}
|
|
|
|
if (prev_dev) {
|
|
@@ -4404,7 +4414,7 @@ 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);
|
|
+ ieee80211_rx_stats(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 626d1ba..13b09bb 100644
|
|
--- a/net/mac80211/tx.c
|
|
+++ b/net/mac80211/tx.c
|
|
@@ -39,6 +39,16 @@
|
|
static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
|
struct net_device *dev, struct sta_info *sta,
|
|
struct ieee80211_key *key, struct sk_buff *skb);
|
|
+
|
|
+static inline void ieee80211_tx_stats(struct net_device *dev, u32 len)
|
|
+{
|
|
+ struct pcpu_sw_netstats *tstats = this_cpu_ptr(netdev_tstats(dev));
|
|
+
|
|
+ u64_stats_update_begin(&tstats->syncp);
|
|
+ tstats->tx_packets++;
|
|
+ tstats->tx_bytes += len;
|
|
+ u64_stats_update_end(&tstats->syncp);
|
|
+}
|
|
/* misc utils */
|
|
|
|
static __le16 ieee80211_duration(struct ieee80211_tx_data *tx,
|
|
@@ -3386,7 +3396,7 @@ static void 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);
|
|
+ ieee80211_tx_stats(skb->dev, skb->len);
|
|
|
|
if (hdr->frame_control & cpu_to_le16(IEEE80211_STYPE_QOS_DATA)) {
|
|
tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK;
|
|
@@ -4022,7 +4032,7 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
|
|
goto out;
|
|
}
|
|
|
|
- dev_sw_netstats_tx_add(dev, 1, skb->len);
|
|
+ ieee80211_tx_stats(dev, skb->len);
|
|
|
|
ieee80211_xmit(sdata, sta, skb);
|
|
}
|
|
@@ -4291,7 +4301,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
|
|
|
info->hw_queue = sdata->vif.hw_queue[skb_get_queue_mapping(skb)];
|
|
|
|
- dev_sw_netstats_tx_add(dev, 1, skb->len);
|
|
+ ieee80211_tx_stats(dev, skb->len);
|
|
|
|
if (!ieee80211_hw_check(&local->hw, SUPPORTS_NSS_OFFLOAD)) {
|
|
sta->tx_stats.bytes[skb_get_queue_mapping(skb)] += skb->len;
|
|
--
|
|
2.7.4
|
|
|