Subject: Re: EISA network card problems - Fixed!?
To: Jaromír <jdolecek@netbsd.org>
From: Christian Groessler <cpg@aladdin.de>
List: port-i386
Date: 09/07/2001 01:42:18
On 09/06/2001 09:09:52 PM ZE2 Jaromír" Dolecek wrote:
>
>Christian Groessler wrote:
>> While comparing the NetBSD ep driver with Linux' 3c509 driver, I found
>> the reason the NetBSD doesn't work:
>
>Good spot!
>I've looked at the Linux driver source and noticed the GO_WINDOW(0)
>equivalent too, nice it really helps :)

The GO_WINDOW(0) is not really needed, it works without it, too. But
it seems cleaner to do it, IMO.


>> With this change both cards work fine. I haven't looked whether the
>> reset or the setting of EISA_ENABLE is the problem, but the Linux
>> driver doesn't seem to do any of them.
>
>Please, try to find out which one exactly needs to be disabled. Also,
>please try if longer delay would help - particularily,
>the delay between the RESET and ENABLE (10ms seems to small for me,
>try at least 1s (delay(1000))).

I tried with delay(1000) or more, which works on the EISA card and
delay(2000) or more which is needed on the ISA card. I suggest using
at least 4000 to have some buffer.
delay(500) didn't work.

>
>> I'd like to get this integrated, but I'm a bit concerned about the
>> consequences. Are there people for which the current driver did work?
>> Can they try this patch and verify that the driver still works?
>
>Indeed. Might be that it works this way on different machines
>than i386 with EISA bus, and i386 needs longer delay or something.
>Also, it's possible that albeit i386 doesn't need explicit EISA_ENABLE,
>other machine archs might need it.

The GO_WINDOW(0) is optional and doesn't affect the results.

I have a difference when I do a EISA_RESET (with the new delay) and
not doing it at all (btw., setting EISA_ENABLE w/o doing a EISA_RESET
does not change the behaviour). 

With the EISA card (didn't try the 3c509) if I don't do the EISA_RESET
the driver uses the IRQ I assigned with the EISA CF.EXE utility.
But if I do the EISA_RESET the driver always uses IRQ 10. But it
works. I couldn't check out what happens if another card has already
occupied IRQ 10, since the other EISA card in the machine (Adaptec
1740) cannot select the IRQ.

So setting the delay to 4000+ would at least for now fix the problem,
we'll need to look what happens with more cards in the machine (where
IRQ10 isn't available).

regards,
chris