SDIO Performance once again

Dan Williams dcbw at redhat.com
Mon Feb 9 11:04:07 EST 2009


On Sun, 2009-02-08 at 17:56 +0100, Dominik S. Herwald wrote:
> Hello,
> 
> right now I am testing Marvell 8686 based Modules connected to the SDIO
> Controller of a Blackfin BF548.
> 
> Basically the libertas driver works just fine and stable.  
> But the Performance... :-/ 

My first thoughts on this are lock contention; there's multiple levels
of locking going on here between the SDIO stack, libertas core, and
libertas interface drivers.  The original Marvell drivers for the 8388
had *no* locking whatsoever, which was clearly wrong, but there may well
be optimizations we can make inside libertas as well.  So here's what
would help:  find the hotpaths (probably RX/TX, command, and event
handlers in the if_* files), and see if you can find out how long some
of the lock grabs block for.  There's some mutex debug stuff you can
define during the kernel build to figure out exactly what threads are
waiting on a lock which might be useful.

Dan

> 
> # iperf -c 192.168.10.11 -i 1 -w 208K    
> ------------------------------------------------------------
> Client connecting to 192.168.10.11, TCP port 5001
> TCP window size:   208 KByte
> ------------------------------------------------------------
> [  5] local 192.168.10.23 port 45592 connected with 192.168.10.11 port 5001
> [  5]  0.0- 1.0 sec    488 KBytes  4.00 Mbits/sec
> [  5]  1.0- 2.0 sec    320 KBytes  2.62 Mbits/sec
> [  5]  2.0- 3.0 sec    376 KBytes  3.08 Mbits/sec
> [  5]  3.0- 4.0 sec    320 KBytes  2.62 Mbits/sec
> [  5]  4.0- 5.0 sec    376 KBytes  3.08 Mbits/sec
> [  5]  5.0- 6.0 sec    376 KBytes  3.08 Mbits/sec
> [  5]  6.0- 7.0 sec    320 KBytes  2.62 Mbits/sec
> [  5]  7.0- 8.0 sec    368 KBytes  3.01 Mbits/sec
> [  5]  8.0- 9.0 sec    320 KBytes  2.62 Mbits/sec
> [  5]  9.0-10.0 sec    376 KBytes  3.08 Mbits/sec
> [  5]  0.0-10.1 sec  3.56 MBytes  2.95 Mbits/sec
> 
> 
> If I reduce the TCP Window size to 16K it hits either
> 2.62 or 2.69MBit/s all the time.
> 
> Both 8686 Modules show identical behaviour with different Antennas so I 
> can rule out
> a Hardware issue.
> 
> iwconfig says
> Bit Rate 54Mbit/s,  100/100 Link Quality,  Signal Level -17dBm, Noise 
> Level -93dBm
> The WLAN AP is 50cm away on the same table.
> CPU Load is only around 3%. Top and iperf are running in two telnet 
> sessions over WLAN
> and it doesn't matter if WPA or WEP Encryption is used...
> 
> 
> 
> ############
> 
> It does not matter what I change, be it the SDIO Clock (12MHz or 22MHz - 
> does not matter)
> or 1 Bit SDIO (with IRQ) or 4 Bit SDIO (without IRQ).
> 
> Looking at the SDIO Signals with a Scope, I see big ~3ms Gaps between 
> all the
> transfers while running iperf.
> Each transfer is around 1ms long at SDIO Clock of about 12MHz
> These Gaps/Delays between transfers are always there - also if just top 
> is running
> in a telnet session.
> 
> I am no SDIO expert, but is this normal?
> 
> ############
> 
> 
> 
> Is the 8686 the limiting factor, or the Firmware
> (I tried both, the 8.73 and 9.7 from Marvell)
> or the libertas driver or the SDIO Controller?
> 
> Any ideas how to improve it?
> 
> 
> Best regards,
> Dominik
> 
> 
> 
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/libertas-dev




More information about the libertas-dev mailing list