Skip to content

Commit f2386cf

Browse files
abajkdavem330
authored andcommitted
net: lantiq: disable interrupt before sheduling NAPI
This patch fixes TX hangs with threaded NAPI enabled. The scheduled NAPI seems to be executed in parallel with the interrupt on second thread. Sometimes it happens that ltq_dma_disable_irq() is executed after xrx200_tx_housekeeping(). The symptom is that TX interrupts are disabled in the DMA controller. As a result, the TX hangs after a few seconds of the iperf test. Scheduling NAPI after disabling interrupts fixes this issue. Tested on Lantiq xRX200 (BT Home Hub 5A). Fixes: 9423361 ("net: lantiq: Disable IRQs only if NAPI gets scheduled ") Signed-off-by: Aleksander Jan Bajkowski <[email protected]> Acked-by: Hauke Mehrtens <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 504fd6a commit f2386cf

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/net/ethernet/lantiq_xrx200.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,8 @@ static irqreturn_t xrx200_dma_irq(int irq, void *ptr)
352352
struct xrx200_chan *ch = ptr;
353353

354354
if (napi_schedule_prep(&ch->napi)) {
355-
__napi_schedule(&ch->napi);
356355
ltq_dma_disable_irq(&ch->dma);
356+
__napi_schedule(&ch->napi);
357357
}
358358

359359
ltq_dma_ack_irq(&ch->dma);

0 commit comments

Comments
 (0)