From ff7b783e3ecad58a18fba135e56afead7ee05e13 Mon Sep 17 00:00:00 2001
From: Evelyn Tsai <evelyn.tsai@mediatek.com>
Date: Wed, 1 Nov 2023 07:50:56 +0800
Subject: [PATCH] mac80211: mtk: add packet count input for
 dev_sw_netstat_rx_add

Signed-off-by: Evelyn Tsai <evelyn.tsai@mediatek.com>
---
 backport-include/linux/netdevice.h                       | 6 ++++--
 drivers/net/usb/qmi_wwan.c                               | 2 +-
 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c | 2 +-
 drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c | 2 +-
 net/mac80211/rx.c                                        | 8 ++++----
 5 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/backport-include/linux/netdevice.h b/backport-include/linux/netdevice.h
index e177319..87fccdf 100644
--- a/backport-include/linux/netdevice.h
+++ b/backport-include/linux/netdevice.h
@@ -115,13 +115,15 @@ int netif_rx_any_context(struct sk_buff *skb);
 
 #if LINUX_VERSION_IS_LESS(5,10,0)
 #define dev_sw_netstats_rx_add LINUX_BACKPORT(dev_sw_netstats_rx_add)
-static inline void dev_sw_netstats_rx_add(struct net_device *dev, unsigned int len)
+static inline void dev_sw_netstats_rx_add(struct net_device *dev,
+					  unsigned int packets,
+					  unsigned int len)
 {
 	struct pcpu_sw_netstats *tstats = this_cpu_ptr(dev->tstats);
 
 	u64_stats_update_begin(&tstats->syncp);
 	tstats->rx_bytes += len;
-	tstats->rx_packets++;
+	tstats->rx_packets += packets;
 	u64_stats_update_end(&tstats->syncp);
 }
 #endif /* < 5.10 */
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index df0852f..e754400 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -228,7 +228,7 @@ static int qmimux_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
 			net->stats.rx_errors++;
 			return 0;
 		} else {
-			dev_sw_netstats_rx_add(net, pkt_len);
+			dev_sw_netstats_rx_add(net, 1, pkt_len);
 		}
 
 skip:
diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c
index 840728e..b6fe82b 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c
@@ -756,7 +756,7 @@ static int qtnf_pcie_pearl_rx_poll(struct napi_struct *napi, int budget)
 			skb_put(skb, psize);
 			ndev = qtnf_classify_skb(bus, skb);
 			if (likely(ndev)) {
-				dev_sw_netstats_rx_add(ndev, skb->len);
+				dev_sw_netstats_rx_add(ndev, 1, skb->len);
 				skb->protocol = eth_type_trans(skb, ndev);
 				napi_gro_receive(napi, skb);
 			} else {
diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
index 9534e1b..d15cfe0 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
@@ -662,7 +662,7 @@ static int qtnf_topaz_rx_poll(struct napi_struct *napi, int budget)
 			skb_put(skb, psize);
 			ndev = qtnf_classify_skb(bus, skb);
 			if (likely(ndev)) {
-				dev_sw_netstats_rx_add(ndev, skb->len);
+				dev_sw_netstats_rx_add(ndev, 1, skb->len);
 				skb->protocol = eth_type_trans(skb, ndev);
 				netif_receive_skb(skb);
 			} else {
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 7304dbd..86d541b 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -856,7 +856,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);
+				dev_sw_netstats_rx_add(skb->dev, 1, skb->len);
 				netif_receive_skb(skb);
 			}
 		}
@@ -2643,7 +2643,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
 
 	if (!wiphy_ext_feature_isset(sdata->local->hw.wiphy,
 	    NL80211_EXT_FEATURE_STAS_COUNT) || !rx->sta)
-		dev_sw_netstats_rx_add(dev, skb->len);
+		dev_sw_netstats_rx_add(dev, 1, skb->len);
 
 	if (rx->sta) {
 		/* The seqno index has the same property as needed
@@ -3917,7 +3917,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);
+		dev_sw_netstats_rx_add(sdata->dev, 1, skb->len);
 	}
 
 	if (prev_dev) {
@@ -4549,7 +4549,7 @@ static void ieee80211_rx_8023(struct ieee80211_rx_data *rx,
 
 	if (!wiphy_ext_feature_isset(sta->local->hw.wiphy,
 	    NL80211_EXT_FEATURE_STAS_COUNT))
-		dev_sw_netstats_rx_add(fast_rx->dev, skb->len);
+		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
-- 
2.18.0

