Re: zero-copy TCP

From: Jeff V. Merkey (jmerkey@timpanogas.com)
Date: Sat Sep 02 2000 - 17:07:09 EST


**ALL** Netware network drivers support a scatter/gather proramming
interface, whether the hardware does or not. In NetWare, the drivers
get passed a fragment list in what's called an ECB (Event Control
Block). It's the drivers responsiblity to assemble the fragment lists.
We did it this way to support scatter/gather cards and non-scatter
gather cards in one interface. Those drivers that do not support
scatter gather DMA operations copy to a local buffer to assemble the
packet. Those with a shared memory window copy data from the fragment
list into this window until a complete IEEE frame gets completed (since
it will get copied anyway), then hit the register bits to initiate a
send of the data.

Jeff

Jes Sorensen wrote:
>
> >>>>> "Jeff" == Jeff V Merkey <jmerkey@timpanogas.com> writes:
>
> Jeff> all over the place that increases latency. Not to mention the
> Jeff> overhead of the type of interrupt and trap gates that suck up
> Jeff> about 50 clocks to fetch the IDT, PDE, and GDT tables for every
> Jeff> interrupt. NetWare copies nothing in TCPIP except at the stream
> Jeff> head. Why do you need to copy data anyway to checksum an IP
> Jeff> packet anyway? I noticed you do the right thing and keep the
> Jeff> headers and data as separate fragments during header
> Jeff> construction, so why do you need to copy data for checksumming?
>
> Because your hardware doesn't do scatter/gather DMA *and* TCP TX
> checksumming - only very few cards do. You have to build every packet
> in memory if the card doesn't do sct/gat since you can't really send
> out data without IP headers in front of it. And if your card doesn't
> do TX transmit then you have to run over all the data with the CPU to
> calculate the checksum and once you do this you can just as well do
> the full copy. Also note that many cards that do sct/gth also have a
> bit of latency per descriptor so you do not want to use 10 descriptors
> for a 1500 byte packet.
>
> Jes
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Sep 07 2000 - 21:00:14 EST