Skip to content

Commit 6a8ca12

Browse files
nbd168gregkh
authored andcommitted
mt76: mt7915: do not do any work in napi poll after calling napi_complete_done()
[ Upstream commit 38b0439 ] Fixes a race condition where multiple tx cleanup or sta poll tasks could run in parallel. Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 3268082 commit 6a8ca12

1 file changed

Lines changed: 3 additions & 6 deletions

File tree

  • drivers/net/wireless/mediatek/mt76/mt7915

drivers/net/wireless/mediatek/mt76/mt7915/dma.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,13 @@ static int mt7915_poll_tx(struct napi_struct *napi, int budget)
9595
dev = container_of(napi, struct mt7915_dev, mt76.tx_napi);
9696

9797
mt7915_tx_cleanup(dev);
98-
99-
if (napi_complete_done(napi, 0))
100-
mt7915_irq_enable(dev, MT_INT_TX_DONE_ALL);
101-
102-
mt7915_tx_cleanup(dev);
103-
10498
mt7915_mac_sta_poll(dev);
10599

106100
tasklet_schedule(&dev->mt76.tx_tasklet);
107101

102+
if (napi_complete_done(napi, 0))
103+
mt7915_irq_enable(dev, MT_INT_TX_DONE_ALL);
104+
108105
return 0;
109106
}
110107

0 commit comments

Comments
 (0)