Messages in this thread | | | Date | Fri, 18 Feb 2022 11:45:04 +0100 | From | Marc Kleine-Budde <> | Subject | Re: [PATCH] net: stmmac: Enable NAPI before interrupts go live |
| |
On 17.02.2022 20:36:04, Jakub Kicinski wrote: > On Thu, 17 Feb 2022 15:55:26 +0100 Vincent Whitchurch wrote: > > From: Lars Persson <larper@axis.com> > > > > The stmmac_open function has a race window between enabling the RX > > path and its interrupt to the point where napi_enabled is called. > > > > A chatty network with plenty of broadcast/multicast traffic has the > > potential to completely fill the RX ring before the interrupt handler > > is installed. In this scenario the single interrupt taken will find > > napi disabled and the RX ring will not be processed. No further RX > > interrupt will be delivered because the ring is full. > > > > The RX stall could eventually clear because the TX path will trigger a > > DMA interrupt once the tx_coal_frames threshold is reached and then > > NAPI becomes scheduled. > > LGTM, although now the ndo_open and ndo_stop paths are not symmetrical. > Is there no way to mask the IRQs so that they don't fire immediately? > More common flow (IMO) would be: > - request irq > - mask irq
I think you can merge these, to avoid a race condition, see:
| cbe16f35bee6 genirq: Add IRQF_NO_AUTOEN for request_irq/nmi()
> - populate rings > - start dma > - enable napi > - unmask irq > Other than the difference in flow between open/stop there may also be > some unpleasantness around restarting tx queues twice with the patch > as is.
regards, Marc
-- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | [unhandled content-type:application/pgp-signature] | |