• Ezequiel Garcia's avatar
    net: mv643xx_eth: Implement software TSO · 3ae8f4e0
    Ezequiel Garcia authored
    Now that the TSO helper API has been introduced, this commit makes use
    of it to add support for software TSO in this driver.
    
    This feature allows to improve outbound throughput performance significantly.
    Running iperf tests shows a 30% improvement, tested on a Kirkwood Openblocks
    A6 board.
    
    $ ethtool -K eth0 tso off
    $ iperf -c 192.168.0.45 -t 3
    ------------------------------------------------------------
    Client connecting to 192.168.0.45, TCP port 5001
    TCP window size: 43.8 KByte (default)
    ------------------------------------------------------------
    [  3] local 192.168.0.159 port 46389 connected with 192.168.0.45 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0- 3.0 sec   217 MBytes   607 Mbits/sec
    
    $ ethtool -K eth0 tso on
    $ iperf -c 192.168.0.45 -t 3
    ------------------------------------------------------------
    Client connecting to 192.168.0.45, TCP port 5001
    TCP window size: 43.8 KByte (default)
    ------------------------------------------------------------
    [  3] local 192.168.0.159 port 46390 connected with 192.168.0.45 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0- 3.0 sec   336 MBytes   938 Mbits/sec
    
    This commit is just an example of the usage of the TSO API, it works fine
    but needs some more work. In particular, the descriptor unmapping path must
    avoid unmapping the TSO headers.
    Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3ae8f4e0
mv643xx_eth.c 75.5 KB