Libertas slow when other processes use udp on localhost

Kareem Shehata kshehata at
Wed Feb 18 22:34:38 EST 2009

I think I've found a way to reproduce the strange slowdowns we've been  
seeing in libertas performance when running our software.  I've  
created a little test code that sends and receives udp packets, much  
like ping but without the sophistication.  Here's the strange part:  
both client and server can run on the same host and communicate via  
localhost, but libertas still slows to a crawl.  This doesn't happen  
with our wired connection.

Our setup:
Unex 8385 CF module on an arm processor
Kernel 2.6.22, with latest libertas driver backported

Steps to reproduce:
1) Compile the attached file on your platform (we use gcc to cross- 
compile to the arm)
2) Start an scp transfer
3) Start a listener with udp_mirror -l (pipe the output to /dev/null  
and background if you only have one terminal)
4) Start a sender with udp_mirror -t 200
5) Start another sender if it doesn't slow down right away.  On our  
setup, it takes anywhere from 2 to 4 to bring it to a crawl.

Kill the senders and the listener, and all will return to normal.

Any ideas as to what can cause this?  Is there any dependency in the  
libertas driver to kernel scheduling?

BTW: The code itself is less than perfectly documented, just to get it  
out to you sooner.  I can go through and clean things up a little if  
you need to dig into this code.  For now, this should just compile and  
work on most platforms (including X86 and ARM).



-------------- next part --------------
A non-text attachment was scrubbed...
Name: main.c
Type: application/octet-stream
Size: 8789 bytes
Desc: not available
Url : 
-------------- next part --------------

Kareem Shehata
Aeryon Labs Inc.
519-489-6726 x254

More information about the libertas-dev mailing list