Commit 5d7d7fd7 authored by Don Fry's avatar Don Fry Committed by Stephen Hemminger

[PATCH] pcnet32: acknowledge all interrupts early.

A recent change I made broke pcnet32 in a way that allowed real hardware
to work, but broke VMWare.  This patch acknowledges all interrupts early
in the pcnet32_interrupt while loop.  Without this patch on real hardware
the first transmit operation would clear the 'init' interrupt, but in
VMWare it would rain interrupts.  Keith Moore did more testing for me
on VMWare and I did a better job testing on hardware.  Petr Vandrovec
correctly pointed out the source of the problem on lkml.

This patch is not needed for 2.4.27-rc1 unless my patch labeled
"pcnet32: recover after rx hang" is applied (which it has not).
signed-off-by: default avatarDon Fry <brazilnut@us.ibm.com>
parent fd0e0aca
...@@ -1753,7 +1753,7 @@ pcnet32_interrupt(int irq, void *dev_id, struct pt_regs * regs) ...@@ -1753,7 +1753,7 @@ 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); rap = lp->a.read_rap(ioaddr);
while ((csr0 = lp->a.read_csr (ioaddr, 0)) & 0x8600 && --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 */
} }
......
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