aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorFlorian Fainelli <florian@openwrt.org>2009-07-07 23:05:14 -0400
committerDavid S. Miller <davem@davemloft.net>2009-07-08 13:49:26 -0400
commit35976d4d557c5017c2180a083e8bd970cf73f3d5 (patch)
tree34eb56d3e4fa5697e3b5ccee545042a07f8342ab /drivers/net
parent345aa031207d02d7438c1aa96ed9315911ecd745 (diff)
r6040: restore MIER register correctly when IRQ line is shared
When the r6040 device IRQ line is shared we will enter the driver interrupt service routine, mask off the device interrupt enable register (MIER) and return with IRQ_NONE, we would then leave the device with interrupts disabled, this patch fixes that issue. Reported-by: Steve Holland <sdh4@iastate.edu> Signed-off-by: Joe Chou <joe.chou@rdc.com.tw> Signed-off-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/r6040.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c
index ed63d23a6452..70aac35dc2db 100644
--- a/drivers/net/r6040.c
+++ b/drivers/net/r6040.c
@@ -704,8 +704,11 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id)
704 /* Read MISR status and clear */ 704 /* Read MISR status and clear */
705 status = ioread16(ioaddr + MISR); 705 status = ioread16(ioaddr + MISR);
706 706
707 if (status == 0x0000 || status == 0xffff) 707 if (status == 0x0000 || status == 0xffff) {
708 /* Restore RDC MAC interrupt */
709 iowrite16(misr, ioaddr + MIER);
708 return IRQ_NONE; 710 return IRQ_NONE;
711 }
709 712
710 /* RX interrupt request */ 713 /* RX interrupt request */
711 if (status & RX_INTS) { 714 if (status & RX_INTS) {