Commit bfbb92c4 authored by Nathan Sullivan's avatar Nathan Sullivan Committed by David S. Miller

net: macb: Handle the RXUBR interrupt on all devices

The same hardware issue the at91 must work around applies to at least the
Zynq ethernet, and possibly more devices.  The driver also needs to handle
the RXUBR interrupt since it turns it on with MACB_RX_INT_FLAGS anyway.
Signed-off-by: default avatarNathan Sullivan <nathan.sullivan@ni.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d3196a24
...@@ -981,7 +981,7 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id) ...@@ -981,7 +981,7 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
struct macb_queue *queue = dev_id; struct macb_queue *queue = dev_id;
struct macb *bp = queue->bp; struct macb *bp = queue->bp;
struct net_device *dev = bp->dev; struct net_device *dev = bp->dev;
u32 status; u32 status, ctrl;
status = queue_readl(queue, ISR); status = queue_readl(queue, ISR);
...@@ -1037,6 +1037,15 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id) ...@@ -1037,6 +1037,15 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
* add that if/when we get our hands on a full-blown MII PHY. * add that if/when we get our hands on a full-blown MII PHY.
*/ */
if (status & MACB_BIT(RXUBR)) {
ctrl = macb_readl(bp, NCR);
macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
macb_writel(bp, ISR, MACB_BIT(RXUBR));
}
if (status & MACB_BIT(ISR_ROVR)) { if (status & MACB_BIT(ISR_ROVR)) {
/* We missed at least one packet */ /* We missed at least one packet */
if (macb_is_gem(bp)) if (macb_is_gem(bp))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment