mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
56b11080436163adf71baed3898ee4748dfcfa43
One MT_WCID_DROP register word holds the drop bits of 32 stations, and the read-modify-write that flips a single bit is not serialised against anything. On MMIO devices mt76x02_sta_ps() runs it from the rx path while mt76x02_tx_prepare_skb() runs it from the tx path, so an update for one station can be lost, or an old value can be written back over it. A station whose drop bit is restored that way has all of its traffic discarded by the hardware until its next powersave transition. Take mt76.lock around the update. USB devices can only reach this from station setup, where register access may sleep and mt76.mutex already serialises the only two callers. Signed-off-by: Felix Fietkau <[email protected]>
Description
mac80211 driver for MediaTek MT76x0e, MT76x2e, MT7603, MT7615, MT7628 and MT7688
105 MiB
Languages
C
99.7%
Perl
0.2%
Makefile
0.1%