/* Use the now-standard shared IRQ implementation. */
if (request_irq(dev->irq, &vortex_interrupt, SA_SHIRQ,
vp->product_name, dev)) {
return -EAGAIN;
}
The result is that the card gets stuck in 100Mb mode something the rest
of the network doesn't appreciate.
I have solved the problem by not using a shared irq, but the trouble is
that there are no indications from the kernel or driver that this might be
a problem, so it is non-obvious that this is a shared-IRQ problem.
[Another non-obvious thing with this motherboard is that the BIOS doesn't
support configuring the IRQs of the slots individually, so switching from
a shared irq to two different irqs involves releasing another irq and
_booting with one of the cards removed_ to force the BIOS to "forget" the
IRQ.]
It would be preferable that the kernel would figure this out and if
nothing else, print a warning. I have another pentium running exactly the
same kernel with no problems, so I suspect there is a buggy motherboard or
chipset somewhere. If this is so, maybe request_irq could print a warning
if it knows that the chipset is buggy and it doesn't have a free exclusive
IRQ.
astor