This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Problem of eCos 82559 Ethernet Driver Performance
- From: "Stephen Morgan" <smorgan at almaden dot ibm dot com>
- To: "Lee Doohwan" <gumpi at ajou dot ac dot kr>
- Cc: ecos-discuss at sources dot redhat dot com, ecos-discuss-owner at sources dot redhat dot com
- Date: Wed, 12 Jun 2002 09:50:28 -0700
- Subject: Re: [ECOS] Problem of eCos 82559 Ethernet Driver Performance
We had a similar issue with the i82559 on a high-performance PC, also
acting more or less as a network bridge.
The BSD TCP/IP stack is efficient and well-tuned, and the eCos port
doesn't seem to have changed that. As you reported, eliminating the
memory-to-memory copy didn't improve performance much.
We concluded -- perhaps hastily -- that the performance problem was
inherent in the eCos driver model, which stresses real-timedness over
performance. Once we ripped out and rewrote the Ethernet driver to be
more like a traditional Unix device driver, we achieved > 99% throughput
on Fast Ethernet.
If performance is more important for you than guaranteed quick response to
interrupts, as it was for us, I would suggest adapting the Ethernet driver
code from BSD or Linux, or writing your own. (Unfortunately, Intel
doesn't release the Software Developers Manual for the i82559 except under
a nondisclosure agreement, so writing your own may be problematic.) Mask
interrupts when sending and receiving packets. Don't let threads handle
packets. Live dangerously. 8-)
Stephen P. Morgan
"Lee Doohwan" <gumpi@ajou.ac.kr>
Sent by: ecos-discuss-owner@sources.redhat.com
06/12/2002 04:46 AM
To: <ecos-discuss@sources.redhat.com>
cc:
Subject: [ECOS] Problem of eCos 82559 Ethernet Driver Performance
I have a system with MIPS processor(RM7000), two i82559 ethernet
controller.
I had ported eCos to the my system.
But, ethernet performance is so low.
So, I improve i82559 ethernet driver for removing memory copy.
But, the performance remain unchanged.
The performance was about 20Mbps while the system operation was bridge
only.
I think, problem is that. BSD tcp/ip stack is so slow. or, the TX routine
of ethernet driver is so slow.
What is problem?
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss