diff options
| -rw-r--r-- | drivers/net/ethernet/cadence/macb.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c index 18fdcd9d51b3..e38fe39d9589 100644 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c | |||
| @@ -951,6 +951,10 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id) | |||
| 951 | if (unlikely(status & (MACB_TX_ERR_FLAGS))) { | 951 | if (unlikely(status & (MACB_TX_ERR_FLAGS))) { |
| 952 | macb_writel(bp, IDR, MACB_TX_INT_FLAGS); | 952 | macb_writel(bp, IDR, MACB_TX_INT_FLAGS); |
| 953 | schedule_work(&bp->tx_error_task); | 953 | schedule_work(&bp->tx_error_task); |
| 954 | |||
| 955 | if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE) | ||
| 956 | macb_writel(bp, ISR, MACB_TX_ERR_FLAGS); | ||
| 957 | |||
| 954 | break; | 958 | break; |
| 955 | } | 959 | } |
| 956 | 960 | ||
| @@ -968,6 +972,9 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id) | |||
| 968 | bp->hw_stats.gem.rx_overruns++; | 972 | bp->hw_stats.gem.rx_overruns++; |
| 969 | else | 973 | else |
| 970 | bp->hw_stats.macb.rx_overruns++; | 974 | bp->hw_stats.macb.rx_overruns++; |
| 975 | |||
| 976 | if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE) | ||
| 977 | macb_writel(bp, ISR, MACB_BIT(ISR_ROVR)); | ||
| 971 | } | 978 | } |
| 972 | 979 | ||
| 973 | if (status & MACB_BIT(HRESP)) { | 980 | if (status & MACB_BIT(HRESP)) { |
| @@ -977,6 +984,9 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id) | |||
| 977 | * (work queue?) | 984 | * (work queue?) |
| 978 | */ | 985 | */ |
| 979 | netdev_err(dev, "DMA bus error: HRESP not OK\n"); | 986 | netdev_err(dev, "DMA bus error: HRESP not OK\n"); |
| 987 | |||
| 988 | if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE) | ||
| 989 | macb_writel(bp, ISR, MACB_BIT(HRESP)); | ||
| 980 | } | 990 | } |
| 981 | 991 | ||
| 982 | status = macb_readl(bp, ISR); | 992 | status = macb_readl(bp, ISR); |
