net: macb: Re-enable RX interrupt only when RX is done
When data is received during the driver processing received data the NAPI is re-scheduled. In that case the RX interrupt should not be re-enabled. Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6a027b705f
commit
02f7a34f34
@ -891,16 +891,15 @@ static int macb_poll(struct napi_struct *napi, int budget)
|
|||||||
if (work_done < budget) {
|
if (work_done < budget) {
|
||||||
napi_complete(napi);
|
napi_complete(napi);
|
||||||
|
|
||||||
/*
|
|
||||||
* We've done what we can to clean the buffers. Make sure we
|
|
||||||
* get notified when new packets arrive.
|
|
||||||
*/
|
|
||||||
macb_writel(bp, IER, MACB_RX_INT_FLAGS);
|
|
||||||
|
|
||||||
/* Packets received while interrupts were disabled */
|
/* Packets received while interrupts were disabled */
|
||||||
status = macb_readl(bp, RSR);
|
status = macb_readl(bp, RSR);
|
||||||
if (unlikely(status))
|
if (unlikely(status)) {
|
||||||
|
if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
|
||||||
|
macb_writel(bp, ISR, MACB_BIT(RCOMP));
|
||||||
napi_reschedule(napi);
|
napi_reschedule(napi);
|
||||||
|
} else {
|
||||||
|
macb_writel(bp, IER, MACB_RX_INT_FLAGS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: Handle errors */
|
/* TODO: Handle errors */
|
||||||
|
Loading…
Reference in New Issue
Block a user