wifi: mt76: fix race condition related to checking tx queue fill status
authorFelix Fietkau <nbd@nbd.name>
Tue, 29 Aug 2023 08:39:53 +0000 (10:39 +0200)
committerFelix Fietkau <nbd@nbd.name>
Sat, 30 Sep 2023 18:03:03 +0000 (20:03 +0200)
commit0335c034e7265d36d956e806f33202c94a8a9860
tree135dabd2b968ab97d046a84aa39df63151fa20b1
parentdebd133ab2e2e06989c24e1a72be2b7997f30456
wifi: mt76: fix race condition related to checking tx queue fill status

When drv_tx calls race against local tx scheduling, the queue fill status checks
can potentially race, leading to dma queue entries being overwritten.
Fix this by deferring packets from drv_tx calls to the tx worker, in order to
ensure that all regular queue tx comes from the same context.

Reported-by: Ryder Lee <Ryder.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mac80211.c
drivers/net/wireless/mediatek/mt76/mt76.h
drivers/net/wireless/mediatek/mt76/mt7603/main.c
drivers/net/wireless/mediatek/mt76/mt7615/main.c
drivers/net/wireless/mediatek/mt76/mt76x02_util.c
drivers/net/wireless/mediatek/mt76/mt7915/main.c
drivers/net/wireless/mediatek/mt76/mt7921/main.c
drivers/net/wireless/mediatek/mt76/mt792x_core.c
drivers/net/wireless/mediatek/mt76/mt7996/main.c
drivers/net/wireless/mediatek/mt76/tx.c