[Top][All Lists]

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

[lwip-users] Lwip UDP performance

From: Lists
Subject: [lwip-users] Lwip UDP performance
Date: Thu, 23 Mar 2006 17:06:24 +0000

I'm using the raw api (single threaded) on a Nios2 processor running at 50 Mhz.
I'm having trouble getting lwip to process udp packets at a high enough rate. 
I'm sending udp packets to the nios2 in bursts of 16+ packets (~600 bytes) at
~60Mbps, then leaving a break of ~40ms. The 60 Mbps is probably a bit too fast,
but I would have thought that the 40ms break would give it enough time to catch
up if the buffer was of a sufficient size. I've got the following in lwipopts.h
and I've tried increasing them with no effect:

#define MEM_SIZE                64*1024
#define MEMP_NUM_PBUF           16

#define PBUF_POOL_SIZE          32
#define PBUF_POOL_BUFSIZE       1536
#define PBUF_LINK_HLEN          16

(I've included my lwipopts.h file in case it helps)

The behaviour I've observed is that the first 4 packets of each burst get
processed just fine, but only a few of the remaining packets get through.
Currently to test performance, my application increments a counter when it gets 
udp packet and that's pretty much all it does, so it shouldn't be slowing it 
from that end.

So a few questions:
* What kind of performance can I expect? What kind of peak performance?

* Should lwip be able to handle 60Mbps bursts of data?

* Is lwip polled or interrupt driven. I've had a look at the code and looks like
it's a bit of both... (I call lan91c111if_service(&netif); from main, the
function is part of the driver provided for nios2.)

* Does lwip do buffer copying or is the data passed up through the stack using

* Is there an option to disable the udp checksum check? Or is it a case of
modifying the code?

* Any suggestions on how to get maximum udp performance?

Any feedback welcome.



Attachment: lwipopts.h
Description: Binary data

reply via email to

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