linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: victorascroft@gmail.com (victorascroft at gmail.com)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 00/12] USB: chipidea: patchset for performance improvement
Date: Tue, 24 Mar 2015 16:02:53 +0530	[thread overview]
Message-ID: <20150324103253.GC4707@Sanchayan-Arch> (raw)
In-Reply-To: <1426727963-32280-1-git-send-email-peter.chen@freescale.com>

Hello Peter, 

On 15-03-19 09:19:11, Peter Chen wrote:
> Hi all,
> 
> In this patch set, I add some interfaces for tuning the performance
> of chipidea usb driver. With this set, the USB performance can be improved
> at some user cases with suitable parameters. The main changes:
> 
> - Interface to tune interrupt threshold control, and set
> 'Immediate' for default value
> - The glue layer can disable stream mode according to USB role
> - Interface to tune AHB burst configuration at SBUSCFG
> - Interface to tune tx/rx burst size
> - i.mx changes for achieving better performance, it can reduce
>   the latecy between bus and USB FIFO, and reduce the overrun
>   and underrun occurrences, it is useful for the system bus is busy.
>   we see great improvement for ISO transfer, eg, high resolution
>   USB camera when the bus is busy.
> 
> Below are some test results at imx6sx sdb board
> (set ehci_hcd.park=3 at bootargs), the tests are done
> at v4.0 kernel, no other bus loading during the tests,
> so we have not seen performance change for some use cases.
> 
> USB Mass Storage (Host mode)
> With Patch Set		Without Patch Set
> R: 26.9 MB/s		27 MB/s
> W: 25.2 MB/s		24.5 MB/s
> 
> 1G USB Ethernet Card
> With Patch Set		Without Patch Set
> TX: 186 Mb/s		185 Mb/s
> RX: 219 Mb/s		216 Mb/s
> 
> g_ncm (Device Mode)
> With Patch Set		Without Patch Set
> TX: 166MB/s		163MB/s
> RX: 230MB/s		184MB/s
> 

I tested these patches on a Colibri Vybrid VF61. Have not applied the 
7th and 11th patch, but, the changes these patches introduce, I added 
them to our device tree node. These would be  the addition of 
ahb-burst-config = <0x0> and tx-burst-size-dword = <0x10> and 
rx-burst-size-dword = <0x10> to the usb node in vfxxx.dtsi file for both 
the peripheral and host usb nodes.

I used hdparm and dd for the tests. Some of the readings are below.

With this patchset applied

Reads
hdparm -t --direct /dev/sda

/dev/sda:
 Timing O_DIRECT disk reads:  36 MB in  3.05 seconds =  11.80 MB/sec

Writes
root at colibri-vf:~# time dd if=/dev/zero bs=128k count=4096
of=/media/sda1/tmpfile
4096+0 records in
4096+0 records out

real    1m11.671s
user    0m0.010s
sys     0m10.130s

USB Client - RNDIS

root at colibri-vf:~# iperf -c 192.168.1.1
------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.2 port 41317 connected with 192.168.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   105 MBytes  88.2 Mbits/sec

Without this patchset applied

Reads
hdparm -t --direct /dev/sda

/dev/sda:
 Timing O_DIRECT disk reads:  78 MB in  3.06 seconds =  25.50 MB/sec

Writes
root at colibri-vf:~# time dd if=/dev/zero bs=128k count=4096
of=/media/sda1/tmpfil
4096+0 records in
4096+0 records out

real    0m43.807s
user    0m0.050s
sys     0m9.960s

USB Client - RNDIS

root at colibri-vf:~# iperf -c 192.168.1.1
------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.2 port 49857 connected with 192.168.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   138 MBytes   116 Mbits/sec


Perhaps I am missing something? I have the ehci_hcd.park=3 set.

root at colibri-vf:~# cat /proc/cmdline
ehci_hcd.park=3 ubi.mtd=ubi root=ubi0:rootfs rootfstype=ubifs
ubi.fm_autoconvert=1 mtdparts=vf610_nfc:128k(vf-bcb)ro,1408k(
u-boot)ro,512k(u-boot-env),-(ubi) fec_mac= consoleblank=0 console=tty1
console=ttyLP0,115200n8 mem=256M

Is there any other parameter or variable I need to set?

- Sanchayan

> Peter Chen (12):
>   Doc: usb: ci-hdrc-imx: add gadget-itc-setting for binding doc
>   usb: chipidea: set ITC to 0 for device mode
>   usb: chipidea: define stream mode disable for both roles
>   usb: chipidea: imx: add stream mode enable for device mode at
>     imx6sl/imx6sx
>   usb: chipidea: introduce ci_platform_config
>   Doc: usb: ci-hdrc-imx: add ahb-burst-config for binding doc
>   ARM: imx6: set ahb-burst-config as 0 for USB
>   usb: chipidea: add ahb burst configuration
>   usb: chipidea: usbmisc_imx: add unburst setting for imx6
>   Doc: usb: ci-hdrc-imx: add tx(rx)-burst-config-dword for binding doc
>   ARM: imx6: change default burst size for USB
>   usb: chipidea: add burst size configuration interface
> 
>  .../devicetree/bindings/usb/ci-hdrc-imx.txt        |  12 +++
>  arch/arm/boot/dts/imx6qdl.dtsi                     |  12 +++
>  arch/arm/boot/dts/imx6sl.dtsi                      |   9 ++
>  arch/arm/boot/dts/imx6sx.dtsi                      |   9 ++
>  drivers/usb/chipidea/bits.h                        |   7 ++
>  drivers/usb/chipidea/ci.h                          |   3 +
>  drivers/usb/chipidea/ci_hdrc_imx.c                 |  14 ++-
>  drivers/usb/chipidea/core.c                        | 119 +++++++++++++++++++--
>  drivers/usb/chipidea/host.c                        |   6 +-
>  drivers/usb/chipidea/usbmisc_imx.c                 |  12 ++-
>  include/linux/usb/chipidea.h                       |  11 +-
>  11 files changed, 191 insertions(+), 23 deletions(-)
> 
> -- 
> 1.9.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2015-03-24 10:32 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-19  1:19 [PATCH 00/12] USB: chipidea: patchset for performance improvement Peter Chen
2015-03-19  1:19 ` [PATCH 01/12] Doc: usb: ci-hdrc-imx: add gadget-itc-setting for binding doc Peter Chen
2015-03-19  1:19 ` [PATCH 02/12] usb: chipidea: set ITC to 0 for device mode Peter Chen
2015-03-19  1:19 ` [PATCH 03/12] usb: chipidea: define stream mode disable for both roles Peter Chen
2015-03-19  1:19 ` [PATCH 04/12] usb: chipidea: imx: add stream mode enable for device mode at imx6sl/imx6sx Peter Chen
2015-03-19  1:19 ` [PATCH 05/12] usb: chipidea: introduce ci_platform_config Peter Chen
2015-03-19 10:19   ` Michael Grzeschik
2015-03-20  2:36     ` Peter Chen
2015-03-19  1:19 ` [PATCH 06/12] Doc: usb: ci-hdrc-imx: add ahb-burst-config for binding doc Peter Chen
2015-03-19  1:19 ` [PATCH 07/12] ARM: imx6: set ahb-burst-config as 0 for USB Peter Chen
2015-03-19  1:19 ` [PATCH 08/12] usb: chipidea: add ahb burst configuration Peter Chen
2015-03-19  1:19 ` [PATCH 09/12] usb: chipidea: usbmisc_imx: add unburst setting for imx6 Peter Chen
2015-03-19  1:19 ` [PATCH 10/12] Doc: usb: ci-hdrc-imx: add tx(rx)-burst-config-dword for binding doc Peter Chen
2015-03-19  1:19 ` [PATCH 11/12] ARM: imx6: change default burst size for USB Peter Chen
2015-03-19  1:19 ` [PATCH 12/12] usb: chipidea: add burst size configuration interface Peter Chen
2015-03-19 10:36 ` [PATCH 00/12] USB: chipidea: patchset for performance improvement Jean-Christophe PLAGNIOL-VILLARD
2015-03-20  2:33   ` Peter Chen
2015-03-24 10:32 ` victorascroft at gmail.com [this message]
2015-03-24 12:21   ` Peter Chen
2015-03-26  8:34     ` victorascroft at gmail.com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150324103253.GC4707@Sanchayan-Arch \
    --to=victorascroft@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).