From 787614f8e79d0c1f803e0e2c3afe01cd865792e4 Mon Sep 17 00:00:00 2001 From: Sergei Shtylyov Date: Sun, 31 Mar 2013 09:54:20 +0000 Subject: [PATCH] --- yaml --- r: 362071 b: refs/heads/master c: 3893b27345ac0ff13c1b9ec20ad50966b810997e h: refs/heads/master i: 362069: 8b0610c646de82cadce397d1f34c9b4b2406c060 362067: 1b1ce1358e87de6d71f3418a6fd0cee0bb8dcf9b 362063: 44e5b83998c54a4efae2a3e452e0495a4d7d71ab v: v3 --- [refs] | 2 +- trunk/drivers/net/ethernet/renesas/sh_eth.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index c4d5de66a299..6768110cb230 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1e1b812bbe1069fc8e2e372dca7d5f541c7a8ceb +refs/heads/master: 3893b27345ac0ff13c1b9ec20ad50966b810997e diff --git a/trunk/drivers/net/ethernet/renesas/sh_eth.c b/trunk/drivers/net/ethernet/renesas/sh_eth.c index 1ca8b2b10adc..44f7904e5054 100644 --- a/trunk/drivers/net/ethernet/renesas/sh_eth.c +++ b/trunk/drivers/net/ethernet/renesas/sh_eth.c @@ -1324,12 +1324,18 @@ static irqreturn_t sh_eth_interrupt(int irq, void *netdev) struct sh_eth_private *mdp = netdev_priv(ndev); struct sh_eth_cpu_data *cd = mdp->cd; irqreturn_t ret = IRQ_NONE; - u32 intr_status = 0; + unsigned long intr_status; spin_lock(&mdp->lock); - /* Get interrpt stat */ + /* Get interrupt status */ intr_status = sh_eth_read(ndev, EESR); + /* Mask it with the interrupt mask, forcing ECI interrupt to be always + * enabled since it's the one that comes thru regardless of the mask, + * and we need to fully handle it in sh_eth_error() in order to quench + * it as it doesn't get cleared by just writing 1 to the ECI bit... + */ + intr_status &= sh_eth_read(ndev, EESIPR) | DMAC_M_ECI; /* Clear interrupt */ if (intr_status & (EESR_FRC | EESR_RMAF | EESR_RRF | EESR_RTLF | EESR_RTSF | EESR_PRE | EESR_CERF |