From ea3d44ad39424f65cf74c24e0ab0e1251eb23f81 Mon Sep 17 00:00:00 2001 From: Joe Chou Date: Mon, 22 Dec 2008 19:40:02 -0800 Subject: [PATCH] --- yaml --- r: 122847 b: refs/heads/master c: 3e7c469f07ff14cbf9a814739e1fc99a863e0943 h: refs/heads/master i: 122845: f882ad374d70c06046fc575f220d8796c67c496d 122843: 8db7d4186531e856aa2bc20cdea3f37a9eab6a1d 122839: ecacd3bb6947336bfcd310175723b01f80c6341d 122831: 8709e59edd2a600736f979794c02fb77e69923dc 122815: 1a4814e250fe23fbfe5b3a2b990b8f930bfa5894 v: v3 --- [refs] | 2 +- trunk/drivers/net/r6040.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 802f5f6dffb6..8bbb04aad4c0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 11e5e8f5d14a1229706576184d2cf4c4556ed94c +refs/heads/master: 3e7c469f07ff14cbf9a814739e1fc99a863e0943 diff --git a/trunk/drivers/net/r6040.c b/trunk/drivers/net/r6040.c index cc5e316de571..990612328ca1 100644 --- a/trunk/drivers/net/r6040.c +++ b/trunk/drivers/net/r6040.c @@ -680,8 +680,10 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id) struct net_device *dev = dev_id; struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; - u16 status; + u16 misr, status; + /* Save MIER */ + misr = ioread16(ioaddr + MIER); /* Mask off RDC MAC interrupt */ iowrite16(MSK_INT, ioaddr + MIER); /* Read MISR status and clear */ @@ -701,7 +703,7 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id) dev->stats.rx_fifo_errors++; /* Mask off RX interrupt */ - iowrite16(ioread16(ioaddr + MIER) & ~RX_INTS, ioaddr + MIER); + misr &= ~RX_INTS; netif_rx_schedule(dev, &lp->napi); } @@ -709,6 +711,9 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id) if (status & TX_INTS) r6040_tx(dev); + /* Restore RDC MAC interrupt */ + iowrite16(misr, ioaddr + MIER); + return IRQ_HANDLED; }