|
@@ -1037,6 +1037,12 @@ 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.
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
+ /* There is a hardware issue under heavy load where DMA can
|
|
|
|
+ * stop, this causes endless "used buffer descriptor read"
|
|
|
|
+ * interrupts but it can be cleared by re-enabling RX. See
|
|
|
|
+ * the at91 manual, section 41.3.1 or the Zynq manual
|
|
|
|
+ * section 16.7.4 for details.
|
|
|
|
+ */
|
|
if (status & MACB_BIT(RXUBR)) {
|
|
if (status & MACB_BIT(RXUBR)) {
|
|
ctrl = macb_readl(bp, NCR);
|
|
ctrl = macb_readl(bp, NCR);
|
|
macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
|
|
macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
|