Norm Dresner <(E-Mail Removed)> wrote:
> Perhaps we have a different conception of what PnP means. I think that
No we don't. Please read up on how to configure a 3c509. It should be
set to a specific io port and irq by the external utility (in linux
"3c5x9setup"), and then the driver should be loaded using the configured
values as parameters.
See "linux 3c509 configuration notes" in GOOGLE.
I think newer drivers can query the card for the irq given the io port,
or vice versa, but just READ instead of spouting.
> > > right? No, I still think it took me all too long to finally stumble onto a
> > > solution to a problem that I still haven't been able to completely
> > > characterize.
> >
> > Why?
> >
>
> "Why?" I think that I should have not had to turn off something that
> seems to work perfectly in at least one OS (Win2K) to get a piece of
> hardware to work in another one? I think that there should be some
You are asking about something that has been known for all of elapsed time.
Hence "why". The 3c509 is not particularly isa pnp compatible - it predates
isa pnp and isa pnp has always been "iffy" in it (it was added later in
ome versions, perhaps b, likely c) and simply does not work well.
Probably the windows driver ignores pnp when it sees that card and tries
a standard value or looks up in its file registry what ip port has been
selected for the card. But yes, the card behaves just as badly in dos
and windows, and always has.
I'll quote the ethernet HOWTO for you on the subject of the 3c509, ince
you seem to like to argue instead of reading:
==============
This card is fairly inexpensive and has good performance for an ISA
non-bus-master design. The drawbacks are that the original 3c509
requires very low interrupt latency. The 3c509B shouldn't suffer from
the same problem, due to having a larger buffer. (See below.) These
cards use PIO transfers, similar to a ne2000 card, and so a shared
memory card such as a wd8013 will be more efficient in comparison.
The original 3c509 has a small packet buffer (4kB total, 2kB Rx, 2kB
Tx), causing the driver to occasionally drop a packet if interrupts are
masked for too long. To minimize this problem, you can try unmasking
interrupts during IDE disk transfers (see man hdparm) and/or increasing
your ISA bus speed so IDE transfers finish sooner.
The newer model 3c509B has 8kB on board, and the buffer can be split
4/4, 5/3 or 6/2 for Rx/Tx. This setting is changed with the DOS
configuration utility, and is stored on the EEPROM. This should
alleviate the above problem with the original 3c509.
3c509B users should use either the supplied DOS utility to disable the
plug and play support, and to set the output media to what they
require. The linux driver currently does not support the Autodetect
media setting, so you have to select 10Base-T or 10Base-2 or AUI. Note
that to turn off PnP entirely, you should do a 3C5X9CFG /PNP

ISABLE
and then follow that with a hard reset to ensure that it takes effect.
Some people ask about the ``Server or Workstation'' and ``Highest Modem
Speed'' settings presented in the DOS configuration utility. Donald
writes ``These are only hints to the drivers, and the Linux driver does
not use these parameters: it always optimizes for high throughput
rather than low latency (`Server'). Low latency was critically
important for old, non-windowed, IPX throughput. To reduce the latency
the MS-DOS driver for the 3c509 disables interrupts for some
operations, blocking serial port interrupts. Thus the need for the
`modem speed' setting. The Linux driver avoids the need to disable
interrupts for long periods by operating only on whole packets e.g. by
not starting to transmit a packet until it is completely transferred to
the card.''
Note that the ISA card detection uses a different method than most
cards. Basically, you ask the cards to respond by sending data to an
ID_PORT (port 0x100 to 0x1ff on intervals of 0x10). This detection
method means that a particular card will always get detected first in a
multiple ISA 3c509 configuration. The card with the lowest hardware
ethernet address will always end up being eth0. This shouldn't matter
to anyone, except for those people who want to assign a 6 byte hardware
address to a particular interface. If you have multiple 3c509 cards, it
is best to append ether=0,0,ethN commands without the I/O port
specified (i.e. use I/O=zero) and allow the probe to sort out which
card is first. Using a non-zero I/O value will ensure that it does not
detect all your cards, so don't do it.
If this really bothers you, have a look at Donald's latest driver, as
you may be able to use a 0x3c509 value in the unused mem address fields
to order the detection to suit your needs.
======================
Peter