Sorry, please ignore the FEC patches. Those are test patches still residing in my to-send folder. Sorry for the noise. Am Freitag, den 26.08.2016, 17:49 +0200 schrieb Lucas Stach: > The FEC doesn't have a real interrupt status register, that takes > into account the mask status of the IRQ. The driver reads the raw > interrupt event register, which also reports events for masked > IRQs. > > The driver needs to apply the current mask itself, to avoid acking > IRQs that are currently masked, as NAPI relies on the masking to > hide the IRQs. The current behavior of just acking all interrupts > regardless of their mask status opens the driver up the "rotting > packet" race-window, as described in the original NAPI-HOWTO, which > has been observed in the wild. > > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > --- > drivers/net/ethernet/freescale/fec_main.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c > index 01f7e811739b..498264969e89 100644 > --- a/drivers/net/ethernet/freescale/fec_main.c > +++ b/drivers/net/ethernet/freescale/fec_main.c > @@ -1572,7 +1572,8 @@ fec_enet_interrupt(int irq, void *dev_id) > uint int_events; > irqreturn_t ret = IRQ_NONE; > > - int_events = readl(fep->hwp + FEC_IEVENT); > + int_events = readl_relaxed(fep->hwp + FEC_IEVENT) & > + readl_relaxed(fep->hwp + FEC_IMASK); > writel(int_events, fep->hwp + FEC_IEVENT); > fec_enet_collect_events(fep, int_events); > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel