[comp.sys.ibm.pc] Ethernet cards for an IBM PC

cjdb@sphinx.uchicago.edu (Charles Blair) (07/09/88)

Can anyone recommend an Ethernet card for an IBM PC? I'm looking for a
good cost/performance value. Responses via e-mail preferred. Thanks.

-- 
Bitnet:	  	 lib.cb@uchicago.bitnet
Internet:      lib.cb@chip.uchicago.edu
uucp:	  ..!ihnp4!gargoyle!sphinx!cjdb

jim@belltec.UUCP (Mr. Jim's Own Logon) (07/11/88)

In article <4424@sphinx.uchicago.edu>, cjdb@sphinx.uchicago.edu (Charles Blair) writes:
> 
> Can anyone recommend an Ethernet card for an IBM PC? I'm looking for a
> good cost/performance value. Responses via e-mail preferred. Thanks.
> 
> -- 
> Bitnet:	  	 lib.cb@uchicago.bitnet
> Internet:      lib.cb@chip.uchicago.edu
> uucp:	  ..!ihnp4!gargoyle!sphinx!cjdb

   As with most add in cards, there are two basic classes of boards: intelligent
and slave. The slave type cards are basically an Ethernet controller chip
with DMA capability (National 83980, Intel 82586, etc.) and a dual port memory.
Incoming packets on this type of board have the station address recognized
by the controller chip and then the packet is stored in the dual port memory
at the address that was set up before hand. At the end of the packet, an 
interrupt is sent to the host (the 286 or 386) and then it fetches the packet
down to main memory. No processing is done on the Ethernet card.

   Intelligent Ethernet boards can do all this and more. On incoming packets
they can preprocess the information before alerting the host that it has
information. It can have DMA logic with the AT bus so it can also transfer
the packet to main system memory (but this is not a win for UNIX systems, stick
with the dual port RAM). Outgoing packets can be assembled from various 
pieces by the intelligent card before sending. Network performance and 
statistics can be done by an intelligent card. And perhaps most important,
UNIX communication programs can be run entirely on the intelligent board, off
loading the main processor.

   So you get cost vs. features trade offs on the two classes of boards. Just
to justify typing this in, Bell Technologies sells a slave Ethernet controller:
Intel 82586, 16K dual port RAM, full UNIX drivers for TCP/IP, SNAP, RFS and   
maybe more by now (I'm the hardware guy, what do I know about code?). Cost is
very low. Call a sales person at (415)659-9097, or outside Ca. at 800-FOR-UNIX.

						-Jim Wall
						Bell Technologies Inc.

john@bby-bc.UUCP (john) (07/12/88)

In article <239@belltec.UUCP>, jim@belltec.UUCP (Mr. Jim's Own Logon) writes:
> In article <4424@sphinx.uchicago.edu>, cjdb@sphinx.uchicago.edu (Charles Blair) writes:
> > 
.
.
>    Intelligent Ethernet boards can do all this and more. On incoming packets
> they can preprocess the information before alerting the host that it has
> information. It can have DMA logic with the AT bus so it can also transfer
> the packet to main system memory (but this is not a win for UNIX systems, stick
> with the dual port RAM). Outgoing packets can be assembled from various 

Why is dma not advisable for unix?

I would have thought the reverse - dma not being worthwhile for dos but
a real win for unix!?

john
  ...ubc-cs!fornax!bby-bc!john

jim@belltec.UUCP (Mr. Jim's Own Logon) (07/15/88)

In article <291@bby-bc.UUCP>, john@bby-bc.UUCP (john) writes:
> 
> Why is dma not advisable for unix?
> 
> I would have thought the reverse - dma not being worthwhile for dos but
> a real win for unix!?
> 
> john
>   ...ubc-cs!fornax!bby-bc!john


    First we'll agree on terms. Direct Memroy Access can refer to anything
from a multi-master CPU access to a hardware aided I/O to memory transfer. 
The IBM use of the term is using the 8237 DMA chips to transfer a byte
or word from/to a I/O device to/from a Memory space. This is significant
subset of "DMA", but as long as we all know what we are talking about...

    O.K., there are two issues: the DMA transfer speed, and the way that
UNIX handles data. Speed first, the time for a single DMA transfer on a 
10 MHZ bus PC is about 2.5 microseconds (this is the time that the bus
has been allocated to the 8237). During this time no CPU cycles take place.
Compare this with the time to do a memory to memory transfer: 480 nsec.
The goal is to load the CPU down as little as possible, even though the
DMA doesn't use CPU instructions, it slows down much more than having the
packet stored remotely, and then block transfered memory to memory.

    The second issue is UNIX data handling, beyond my direct knowledge, but
I've had it verified several times in several places. UNIX moves data
around a fair amount, there are application memory spaces and driver memory
spaces, and a few more that I'm sure exist. In a DMA system, you will DMA
the data to the driver space. And then later will do a memory to memory 
transfer to move it to an application space. In a dual port memory case,
you would define the driver space as the dual port memory, and then it
would be moved directly to the application space. Don't ask me why you
don't just move it to the final location directly; I don't know. So, as
long as you are going to move the data anyway; you are better off doing 
away entirely with the DMA transfer.

   Best method of all are intelligent cards that have the ability to
become bus masters, but not on a PC thank you. There are sceondary issues
such as data overrun, and limited numbers of DMA channels, but the two
described are the main issues.

						-Jim Wall
						Bell Technologies Inc.