lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-devel] Re: [task #7040] Work on tcp_enqueue


From: address@hidden
Subject: Re: [lwip-devel] Re: [task #7040] Work on tcp_enqueue
Date: Mon, 02 Feb 2009 19:13:24 +0100
User-agent: Thunderbird 2.0.0.19 (Macintosh/20081209)

bill wrote:
The changes in the driver are not substantial to checksum at that level.
There's a little parsing and extra setup to load registers and to start the
DMA-checksumming.  We're going down this path - I will let you know the gain
for a NIOS II platform for a DMA-checksum driver.

I don't think I fully understand you: we didn't have a MAC that supports HW-checksum, we had a DMA-less MAC with a custom DMA engine writing the packets to/from the MAC (of course all handled by the MAC driver). The goal was to use a custom DMA-copy HW that supports checksum calculation while copying, but we only had a very small FPGA, so it didn't fit.

Of course the fastest solution is HW-checksum, but the goal is for lwIP to be as fast as possible without that (while still being as small as possible).

I think trying to create full packets complies with the LW goal (given RAM size and execution overhead, not code size), since we need less segments. The savings of one-pbuf-per-segment are even bigger since we save a lot of pbuf structs.

> I think the less than MSS full pufs hits performance less than
> avoiding it by searching to the end of the chain to split a pbuf and add to
> the last one, especially when the chains are long.

We do that for small writes, so why not do it for big writes? I'd favour to get rid of the long pbuf chains altogether since they waste RAM (the pbuf structs) and are inefficient (when calculating checksum).

Simon




reply via email to

[Prev in Thread] Current Thread [Next in Thread]