|
@@ -1040,6 +1040,8 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
|
|
/* close possible race with dev_close */
|
|
/* close possible race with dev_close */
|
|
if (unlikely(!netif_running(dev))) {
|
|
if (unlikely(!netif_running(dev))) {
|
|
queue_writel(queue, IDR, -1);
|
|
queue_writel(queue, IDR, -1);
|
|
|
|
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
|
|
|
|
+ queue_writel(queue, ISR, -1);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1561,6 +1563,8 @@ static void macb_reset_hw(struct macb *bp)
|
|
for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) {
|
|
for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) {
|
|
queue_writel(queue, IDR, -1);
|
|
queue_writel(queue, IDR, -1);
|
|
queue_readl(queue, ISR);
|
|
queue_readl(queue, ISR);
|
|
|
|
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
|
|
|
|
+ queue_writel(queue, ISR, -1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|