• Ming Lei's avatar
    usbnet: handle link change · 4b49f58f
    Ming Lei authored
    The link change is detected via the interrupt pipe, and bulk
    pipes are responsible for transfering packets, so it is reasonable
    to stop bulk transfer after link is reported as off.
    
    Two adavantages may be obtained with stopping bulk transfer
    after link becomes off:
    
    - USB bus bandwidth is saved(USB bus is shared bus except for
    USB3.0), for example, lots of 'IN' token packets and 'NYET'
    handshake packets is transfered on 2.0 bus.
    
    - probabaly power might be saved for usb host controller since
    cancelling bulk transfer may disable the asynchronous schedule of
    host controller.
    
    With this patch, when link becomes off, about ~10% performance
    boost can be found on bulk transfer of anther usb device which
    is attached to same bus with the usbnet device, see below
    test on next-20130410:
    
    - read from usb mass storage(Sandisk Extreme USB 3.0) on pandaboard
    with below command after unplugging ethernet cable:
    
    	dd if=/dev/sda iflag=direct of=/dev/null bs=1M count=800
    
    - without the patch
    1, 838860800 bytes (839 MB) copied, 36.2216 s, 23.2 MB/s
    2, 838860800 bytes (839 MB) copied, 35.8368 s, 23.4 MB/s
    3, 838860800 bytes (839 MB) copied, 35.823 s, 23.4 MB/s
    4, 838860800 bytes (839 MB) copied, 35.937 s, 23.3 MB/s
    5, 838860800 bytes (839 MB) copied, 35.7365 s, 23.5 MB/s
    average: 23.6MB/s
    
    - with the patch
    1, 838860800 bytes (839 MB) copied, 32.3817 s, 25.9 MB/s
    2, 838860800 bytes (839 MB) copied, 31.7389 s, 26.4 MB/s
    3, 838860800 bytes (839 MB) copied, 32.438 s, 25.9 MB/s
    4, 838860800 bytes (839 MB) copied, 32.5492 s, 25.8 MB/s
    5, 838860800 bytes (839 MB) copied, 31.6178 s, 26.5 MB/s
    average: 26.1MB/s
    Signed-off-by: default avatarMing Lei <ming.lei@canonical.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4b49f58f
usbnet.c 50 KB