WLAN with Linux SDIO: sneak preview

Werner Almesberger werner at openmoko.org
Tue Nov 4 23:02:37 CET 2008

I wrote:
> What's next ? Most urgently, resurrection of the Atheros stack
> in stable-tracking, so that we have a proper baseline for
> performance comparison.

A small interim item: the HIF driver can indicate to the stack whether
it is able to work asynchronously.

I'm not sure exactly what semantics this conveys to the AR6k stack.
It's not something as simple as whether we support asynchronous
requests (we do) or whether HIFReadWrite can be called from an
interrupt handler (it can).

But in any case, things work fine when we indicate that capability.

During earlier tests with SPI, this yielded a considerable
performance improvement. With S3C MCI, the result is more complex:

---- host => --------    => neo ---------
     *1000B/s ctx_sw  CPU     *1000B/s ctx_sw  CPU 
AVG:   690.78     384   0%      687.03    4861  14%
SDV:    12.97      50   0%       13.16     346   0%

---- neo => ---------    => host --------
     *1000B/s ctx_sw  CPU     *1000B/s ctx_sw  CPU 
AVG:   831.91     819   9%      826.05   11615   0%
SDV:     5.27      73   0%        5.27      26   0%

host => neo: min    /avg    /max      stddev   (100 samples)
               15.10/  83.79/ 256.00    52.84 ms
neo => host: min    /avg    /max      stddev   (100 samples)
               16.30/  88.90/ 286.42    53.17 ms

This means a very nice throughput increase of 14% for traffic sent
from the Neo, but a 5% decrease for traffic received. Average
latency is up by about 8ms or 10%, but that's well within
measurement tolerances.

So, no breakthrough. Just one more knob to consider for future
performance tuning.

> After that, the use of SDIO interrupts wants looking into.

This one is great fun. A strategically placed mdelay(10) makes
the difference between them working or not. Interestingly, it
doesn't matter so much where that delay is placed. I'm kinda
curious what I'll find at the end of this one ...

- Werner

More information about the openmoko-kernel mailing list