Re: [PATCH net] net: bgmac: enable interrupts only after NAPI is ready
From: Daniel Machon
Date: Mon Oct 12 2026 - 02:43:24 EST
> bgmac_open() calls bgmac_chip_init(), which unmasks the interrupts and
> enables the MAC receiver, before request_irq() and napi_enable().
> bgmac_enet_resume() also enables NAPI only after bgmac_chip_init().
>
> When frames arrive in that window, the first RX interrupt masks all
> interrupts in bgmac_interrupt() and calls napi_schedule() on a NAPI
> instance that is still disabled, so nothing is scheduled. Nothing
> unmasks the interrupts again, the RX ring fills up and the interface
> stays deaf until it is brought down and up without traffic.
>
> On an Asus RT-N16 (BCM4716) a single "ip link set eth0 down/up" while
> a host sends UDP to the router left INT_MASK at 0, INT_STATUS with RX
> pending and the RX DMA idle on a full ring, with the RX packet and
> interrupt counters no longer moving. With this change, 10 of 10 such
> cycles recovered on their own.
>
> Request the IRQ and enable NAPI before the chip is initialized.
Reviewed-by: Daniel Machon <daniel.machon@xxxxxxxxxxxxx>