at91sam9g20: Ethernet performance

Greg Ansley gja at ansley.com
Mon Jul 26 16:03:54 UTC 2010


Quick (read very very rough) real world numbers using the same (new) 
if_ate code:

"ping -s 1500 -c 1000 -i .006"  (from an idle quad core server on a 
100BaseT):

rm9200:  min/avg/max/stddev = 0.826/1.001/2.472/0.063 (if_ate)
sam9g20: min/avg/max/stddev = 0.526/0.586/0.892/0.037 (if_ate)

While the 9g20 is not blazing it is respectable on a 100Mb link and ~1.7 
times faster that the rm9200 even with the receive copies still in place.

For reference here are the results from the if_macb driver for sam9 
(only) that was  committed a few days ago:

sam9g20: min/avg/max/stddev = 0.703/0.779/1.000/0.038 (if_macb)

Greg

On 7/19/10 10:30 PM, Bernd Walter wrote:
> The performance has two reasons.
> First the fact that the RM9200 ATE can't DMA into non 4-byte aligned
> buffers, which requires copying and memory bandwidth is rather slow,
> which especially sucks because of the required copy'ing.
> IP headers are no n*4 bytes, so you want a 2 byte offset in your
> receive buffers otherwise IP code copy'es received buffers.
> On sending AFAIK the ATE driver copy'es data into 4 alignment.
> The memory interface on SAM9 is much faster because it is DDR,
> higher clocked and with it's bus matrix e.g. DMA can access DDRAM
> and CPU IO in parallel.
> I don't see a technical reason to have different source files.
> A few things can be tuned on compiletime, but this is only
> a win to save code size - from the runtime point a few rev-checks
> in hybrid kernel shouldn't hurt.
>    


More information about the freebsd-arm mailing list