SDIO Performance once again

Dominik S. Herwald lists at dsh-elektronik.de
Sun Feb 8 14:08:18 EST 2009


Hello,

some additional measurements - with 2MHz SDIO Clock rate 
(yes - only 2 MHz, while using 4 Bit SDIO Mode) I get 

# 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 47803 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    320 KBytes  2.62 Mbits/sec
[  5]  3.0- 4.0 sec    376 KBytes  3.08 Mbits/sec
[  5]  4.0- 5.0 sec    320 KBytes  2.62 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    320 KBytes  2.62 Mbits/sec
[  5]  8.0- 9.0 sec    376 KBytes  3.08 Mbits/sec
[  5]  9.0-10.0 sec    320 KBytes  2.62 Mbits/sec
[  5]  0.0-10.1 sec  3.46 MBytes  2.88 Mbits/sec
# 


So - nearly the same as with 10MHz or more. 

EVERY Transfer starts in a 4ms frames. 

Example of what I see on my scope:
0ms - Data Transfer, End after about 1.x ms (depending on SDIO Clock rate), ... then nothing 
4ms - Data Transfer, End after about 1ms ... nothing ...
8ms - Data Transfer, End after about 1ms ... nothing ...
12ms - ...


Effectively only about 25% of the Transfer Time is actually used.


-------------------------

With only 1 MHz SDIO Clock, the 3MBit limit starts to drop: 

# 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 58644 connected with 192.168.10.11 port 5001
[  5]  0.0- 1.0 sec    376 KBytes  3.08 Mbits/sec
[  5]  1.0- 2.0 sec    272 KBytes  2.23 Mbits/sec
[  5]  2.0- 3.0 sec    264 KBytes  2.16 Mbits/sec
[  5]  3.0- 4.0 sec    264 KBytes  2.16 Mbits/sec
[  5]  4.0- 5.0 sec    320 KBytes  2.62 Mbits/sec
[  5]  5.0- 6.0 sec    272 KBytes  2.23 Mbits/sec
[  5]  6.0- 7.0 sec    264 KBytes  2.16 Mbits/sec
[  5]  7.0- 8.0 sec    264 KBytes  2.16 Mbits/sec
[  5]  8.0- 9.0 sec    272 KBytes  2.23 Mbits/sec
[  5]  9.0-10.0 sec    264 KBytes  2.16 Mbits/sec
[  5]  0.0-10.1 sec  2.77 MBytes  2.30 Mbits/sec


Also on the Scope you can clearly see that now there are
no gaps left between individual data transfers... 


Conclusion:
SDIO Speed is not even close at the limit, it must be something else. 
(Driver or Marvell Hardware/Firmware)

Can anyone tell me where this 4ms data frame interval comes from? 
Are these required delays for the Marvell 8686 or is this a 
"bug" in the libertas Driver or the SDIO Stack?


Best regards,
Dominik





> Date: Sun, 08 Feb 2009 17:56:50 +0100
> From: "Dominik S. Herwald" <lists at dsh-elektronik.de>
> Subject: SDIO Performance once again
> To: libertas-dev at lists.infradead.org
> Message-ID: <498F0ED2.3080001 at dsh-elektronik.de>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> 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... :-/ 
>
>
> # 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
>   



More information about the libertas-dev mailing list