aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/cadence/macb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/cadence/macb.c')
-rw-r--r--drivers/net/ethernet/cadence/macb.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 97c664611e84..e7c10b0addb5 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -983,7 +983,7 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
983 struct macb_queue *queue = dev_id; 983 struct macb_queue *queue = dev_id;
984 struct macb *bp = queue->bp; 984 struct macb *bp = queue->bp;
985 struct net_device *dev = bp->dev; 985 struct net_device *dev = bp->dev;
986 u32 status; 986 u32 status, ctrl;
987 987
988 status = queue_readl(queue, ISR); 988 status = queue_readl(queue, ISR);
989 989
@@ -1039,6 +1039,15 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
1039 * add that if/when we get our hands on a full-blown MII PHY. 1039 * add that if/when we get our hands on a full-blown MII PHY.
1040 */ 1040 */
1041 1041
1042 if (status & MACB_BIT(RXUBR)) {
1043 ctrl = macb_readl(bp, NCR);
1044 macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
1045 macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
1046
1047 if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
1048 macb_writel(bp, ISR, MACB_BIT(RXUBR));
1049 }
1050
1042 if (status & MACB_BIT(ISR_ROVR)) { 1051 if (status & MACB_BIT(ISR_ROVR)) {
1043 /* We missed at least one packet */ 1052 /* We missed at least one packet */
1044 if (macb_is_gem(bp)) 1053 if (macb_is_gem(bp))