summaryrefslogtreecommitdiff
path: root/net/mac802154
diff options
context:
space:
mode:
authorYunshui Jiang <jiangyunshui@kylinos.cn>2024-05-31 11:07:39 +0300
committerStefan Schmidt <stefan@datenfreihafen.org>2024-06-03 12:20:56 +0300
commitb8ec0dc3845f6c9089573cb5c2c4b05f7fc10728 (patch)
treea55d585a1f5fa8e853b21987227fc645923e7fea /net/mac802154
parent07aa33988ad92fef79056f5ec30b9a0e4364b616 (diff)
downloadlinux-b8ec0dc3845f6c9089573cb5c2c4b05f7fc10728.tar.xz
net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD()
mac802154 devices update their dev->stats fields locklessly. Therefore these counters should be updated atomically. Adopt SMP safe DEV_STATS_INC() and DEV_STATS_ADD() to achieve this. Signed-off-by: Yunshui Jiang <jiangyunshui@kylinos.cn> Message-ID: <20240531080739.2608969-1-jiangyunshui@kylinos.cn> Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
Diffstat (limited to 'net/mac802154')
-rw-r--r--net/mac802154/tx.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/mac802154/tx.c b/net/mac802154/tx.c
index 2a6f1ed763c9..6fbed5bb5c3e 100644
--- a/net/mac802154/tx.c
+++ b/net/mac802154/tx.c
@@ -34,8 +34,8 @@ void ieee802154_xmit_sync_worker(struct work_struct *work)
if (res)
goto err_tx;
- dev->stats.tx_packets++;
- dev->stats.tx_bytes += skb->len;
+ DEV_STATS_INC(dev, tx_packets);
+ DEV_STATS_ADD(dev, tx_bytes, skb->len);
ieee802154_xmit_complete(&local->hw, skb, false);
@@ -90,8 +90,8 @@ ieee802154_tx(struct ieee802154_local *local, struct sk_buff *skb)
if (ret)
goto err_wake_netif_queue;
- dev->stats.tx_packets++;
- dev->stats.tx_bytes += len;
+ DEV_STATS_INC(dev, tx_packets);
+ DEV_STATS_ADD(dev, tx_bytes, len);
} else {
local->tx_skb = skb;
queue_work(local->workqueue, &local->sync_tx_work);