From: Ming Yen Hsieh The updates to state->cc_* (cc_busy, cc_tx, etc.) lack synchronization, risking race conditions and inconsistent statistics. Add cc_lock protection to ensure atomic updates. Signed-off-by: Ming Yen Hsieh --- drivers/net/wireless/mediatek/mt76/mt792x_mac.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_mac.c b/drivers/net/wireless/mediatek/mt76/mt792x_mac.c index 3f1d9ba49076..f86e0ac91100 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt792x_mac.c @@ -243,10 +243,14 @@ mt792x_phy_update_channel(struct mt76_phy *mphy, int idx) phy->noise += nf - (phy->noise >> 4); state = mphy->chan_state; + + spin_lock_bh(&dev->mt76.cc_lock); state->cc_busy += busy_time; state->cc_tx += tx_time; state->cc_rx += rx_time + obss_time; state->cc_bss_rx += rx_time; + spin_unlock_bh(&dev->mt76.cc_lock); + state->noise = -(phy->noise >> 4); } -- 2.34.1