Commit 5c99346a authored by Don Fry's avatar Don Fry Committed by Jeff Garzik

[PATCH] pcnet32: remove unnecessary save/restore register accesses.

Delete unnecessary save/restore of rap in interrupt handler and statistics.

tested ia32 and ppc64.
Signed-off-by: default avatarDon Fry <brazilnut@us.ibm.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 38ed61d6
...@@ -2262,7 +2262,7 @@ pcnet32_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -2262,7 +2262,7 @@ pcnet32_interrupt(int irq, void *dev_id, struct pt_regs *regs)
struct net_device *dev = dev_id; struct net_device *dev = dev_id;
struct pcnet32_private *lp; struct pcnet32_private *lp;
unsigned long ioaddr; unsigned long ioaddr;
u16 csr0, rap; u16 csr0;
int boguscnt = max_interrupt_work; int boguscnt = max_interrupt_work;
int must_restart; int must_restart;
...@@ -2278,7 +2278,6 @@ pcnet32_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -2278,7 +2278,6 @@ pcnet32_interrupt(int irq, void *dev_id, struct pt_regs *regs)
spin_lock(&lp->lock); spin_lock(&lp->lock);
rap = lp->a.read_rap(ioaddr);
while ((csr0 = lp->a.read_csr(ioaddr, 0)) & 0x8f00 && --boguscnt >= 0) { while ((csr0 = lp->a.read_csr(ioaddr, 0)) & 0x8f00 && --boguscnt >= 0) {
if (csr0 == 0xffff) { if (csr0 == 0xffff) {
break; /* PCMCIA remove happened */ break; /* PCMCIA remove happened */
...@@ -2434,7 +2433,6 @@ pcnet32_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -2434,7 +2433,6 @@ pcnet32_interrupt(int irq, void *dev_id, struct pt_regs *regs)
/* Set interrupt enable. */ /* Set interrupt enable. */
lp->a.write_csr(ioaddr, 0, 0x0040); lp->a.write_csr(ioaddr, 0, 0x0040);
lp->a.write_rap(ioaddr, rap);
if (netif_msg_intr(lp)) if (netif_msg_intr(lp))
printk(KERN_DEBUG "%s: exiting interrupt, csr0=%#4.4x.\n", printk(KERN_DEBUG "%s: exiting interrupt, csr0=%#4.4x.\n",
...@@ -2647,13 +2645,10 @@ static struct net_device_stats *pcnet32_get_stats(struct net_device *dev) ...@@ -2647,13 +2645,10 @@ static struct net_device_stats *pcnet32_get_stats(struct net_device *dev)
{ {
struct pcnet32_private *lp = dev->priv; struct pcnet32_private *lp = dev->priv;
unsigned long ioaddr = dev->base_addr; unsigned long ioaddr = dev->base_addr;
u16 saved_addr;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&lp->lock, flags); spin_lock_irqsave(&lp->lock, flags);
saved_addr = lp->a.read_rap(ioaddr);
lp->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112); lp->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
lp->a.write_rap(ioaddr, saved_addr);
spin_unlock_irqrestore(&lp->lock, flags); spin_unlock_irqrestore(&lp->lock, flags);
return &lp->stats; return &lp->stats;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment