Subject: None
To: None <>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: port-i386
Date: 09/29/2000 11:20:26
In message <39C7AFCD001CCB9B@mypad.MYPAD.COM> (added by postmaster@mypad.MYPAD.
COM) writes

>Now I'm confused (aren't I always? =o) Someone recently told
>me that 3Com cards were great for DOS and MS-Windows because
>they wrote good drivers for them, but were technically not
>all they were cracked up to be - he didn't recommend them
>for BSD.

Newer 3com cards -- 3c905x, and the cheaper, consumer PCI 10/100 cards
(i forget the label -- sohoware?) are just fine for Unix.  They have
wel-behaved DMA engines for which which we can write clean derivers;
they're as good a choice, imho,  as Intel fxp.

The earlier 3c509-family cards are a different story.  They cannot DMA
packets to host buffers; instead the driver has to read packets out of
an on-chip FIFO.  Back in the days of 286es and 386es, this design
was, allegedly, a latency performance win, _if_ you could program the
chip to interrupt before a frame has fully arrived. Then, the CPU
(driver) puss the frame header off the card's fifo, demuxes to the
network stack transport leve, and calls into IPX (or whatever) to read
the payload. The idea is that the demux is done while the tail of the
frame is still arriving.
(thats what the "Parallel Tasking(tm)" logo refers to).

This (and PIO in general) no longer makes sense with faster CPUs.
sucking data from slow i/o ports mades less and less sense: DMA is
prefereable. however, the DMA on the realtek cards isnt particularly
well-designed; and the driver we have for the PIO 3com nics is
very robust (its the same code used on 3c589s).

I've seen what look like hardware screwups on several
ne2000-clonechips, so I avoid them where possible.

>I've used 3c509 NICs before, and I recall being told that
>the 3C509b was better than the 3C509a because the former
>would only interrupt when it received a packet meant
>specifically for it, rather than for every packet received
>which the latter apparently did.  Can you confirm this?

I'd go for whatever the isapnp version is (3c509D?),
if you can find a source.