Subject: Re: But why?
To: David S. Miller <davem@caip.rutgers.edu>
From: Zdenek Salvet <salvet@horn.ics.muni.cz>
List: tech-kern
Date: 10/24/1996 09:28:41
> Indeed nice.  On the SS10 with Happy Meal ethernet cards the code path
> at each end works out to something like:
> 
> write(sockfd, &buf, size)
> 	trap --> sys_write() --> sock_read()
> 		csum_copy_partial(skb)
> 			ip_header_csum()
> 				happy_meal_xmit(skb) --> the wire
> 
> the wire --> happy_meal_rx() (the card dma's right into the networking
> 			      buffer and checksums for me)
> 	memcpy_tofs(skb->data, user_buf);
> 	trap --> sys_read() (in libc)
> 
> I see the data _once_ at each end, and that is at the point in time
> you copy in/out of user space, and that is it.  I use no extraneous
> buffers for tx/rx as the card can directly dma into any buffer I give
> it.  Now picture this running full duplex 100mbit and it's pretty
> intense.

What is so special about single copy ? I have always thought it is
"normal" way to do the job if hardware permits.
(PS. My NetBSD/P100 can saturate its 155Mbps ATM connection,
     4cpu SparcCenter/Solaris on the other end is unable to keep up though.)

-- 
Zdenek Salvet                                              salvet@ics.muni.cz 
----------------------------------------------------------------------------
           If God had meant for us to be in the Army,
         we would have been born with green, baggy skin.