[ECOS] Avoiding memcpy in ethernet drivers
Edgar Grimberg
edgar.grimberg@zylin.com
Wed Mar 4 12:14:00 GMT 2009
Hi Bart,
Thanks for the response. The reason why I started the conversation is
that I did a bit of profiling on the working system and memcpy is on the
top of the list. I was expecting this and, in order to optimize, I
wanted to do something about the biggest CPU consumer. In other systems
I would have been linking the code into a faster RAM area, but in this
case I have none available. So my next idea was to minimize the usage of
memcpy.
Some comments inlined:
> Edgar> Having to write a driver for an ethernet device, I noticed
> Edgar> that there are 2 memcpy()s in most of the drivers, one when
> Edgar> sending and one when receiving. This usually happens from
> Edgar> and to the sg_list passed from the hardware independent
> Edgar> ethernet driver. Now, is this really necessary?
>
> Ethernet hardware varies widely, but there are two main categories:
> fifo vs. DMA.
>
My case is, of course, DMA based ethernet.
> Changing the current API between drivers and higher-level code would
> impact existing drivers. There are a number of different ways of
> tackling that problem, but nothing simple.
>
This is what I'm afraid of. I tried to hack my way around it for a short
while, but I don't see an easy way to do it without breaking the
existing code and to keep the drivers independent from the stack
implementation.
> The current code works well enough for most people. Realistically, it
> is unlikely that anything would happen in this area except possibly as
> part of a re-import of the BSD stack. Just the re-import would be a
> big job, never mind changing the device driver interface. It may
> happen some day, most likely if/when somebody really needs maximum
> performance and is willing to pay for the work.
>
In my case, the clients are spinning their own tcp/ip stack with zero
memcpy and some FPGA help. I just wanted to provide a "reference" system
for measurements, the fastest one I can get with minimal modifications.
Regards,
Edgar
--
Edgar Grimberg
System Developer
Zylin AS
Phone: (+47) 51 63 25 00
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list