• dingtianhong's avatar
    net: hisilicon: new hip04 ethernet driver · a41ea46a
    dingtianhong authored
    Support Hisilicon hip04 ethernet driver, including 100M / 1000M controller.
    The controller has no tx done interrupt, reclaim xmitted buffer in the poll.
    
    v13: Fix the problem of alignment parameters for function and checkpatch warming.
    
    v12: According Alex's suggestion, modify the changelog and add MODULE_DEVICE_TABLE
         for hip04 ethernet.
    
    v11: Add ethtool support for tx coalecse getting and setting, the xmit_more
         is not supported for this patch, but I think it could work for hip04,
         will support it later after some tests for performance better.
    
         Here are some performance test results by ping and iperf(add tx_coalesce_frames/users),
         it looks that the performance and latency is more better by tx_coalesce_frames/usecs.
    
         - Before:
         $ ping 192.168.1.1 ...
         === 192.168.1.1 ping statistics ===
         24 packets transmitted, 24 received, 0% packet loss, time 22999ms
         rtt min/avg/max/mdev = 0.180/0.202/0.403/0.043 ms
    
         $ iperf -c 192.168.1.1 ...
         [ ID] Interval       Transfer     Bandwidth
         [  3]  0.0- 1.0 sec   115 MBytes   945 Mbits/sec
    
         - After:
         $ ping 192.168.1.1 ...
         === 192.168.1.1 ping statistics ===
         24 packets transmitted, 24 received, 0% packet loss, time 22999ms
         rtt min/avg/max/mdev = 0.178/0.190/0.380/0.041 ms
    
         $ iperf -c 192.168.1.1 ...
         [ ID] Interval       Transfer     Bandwidth
         [  3]  0.0- 1.0 sec   115 MBytes   965 Mbits/sec
    
    v10: According David Miller and Arnd Bergmann's suggestion, add some modification
         for v9 version
         - drop the workqueue
         - batch cleanup based on tx_coalesce_frames/usecs for better throughput
         - use a reasonable default tx timeout (200us, could be shorted
           based on measurements) with a range timer
         - fix napi poll function return value
         - use a lockless queue for cleanup
    Signed-off-by: default avatarZhangfei Gao <zhangfei.gao@linaro.org>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarDing Tianhong <dingtianhong@huawei.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a41ea46a
hip04_eth.c 24.7 KB