• Zhu Yanjun's avatar
    IB/rxe: remove unnecessary skb_clone in xmit · 5793b465
    Zhu Yanjun authored
    In xmit, there is a skb_clone. This function copies the struct sk_buff.
    And some parameters are changed to the new skb. Then the new skb is sent
    while the old skb is freed.
    
    While the function skb_clone is removed, the parameter changes are made on
    the old skb, then the old skb is sent. It can also work well.
    
    The following tests are made.
    
     server                       client
    ---------                    ---------
    |1.1.1.1|<----rxe-channel--->|1.1.1.2|
    ---------                    ---------
    
    On server: rping -s -a 1.1.1.1 -v -C 1000 -S 512
    On client: rping -c -a 1.1.1.1 -v -C 1000 -S 512
    
    The kernel config CONFIG_DEBUG_KMEMLEAK is enabled on both server
    and client.
    
    This test runs for several hours. There is no memory leak and the whole
    system can work well.
    
    As the above network, the following tests are made.
    
    Server: ibv_rc_pingpong -d rxe0 -g 1
    Client: ibv_rc_pingpong -d rxe0 -g 1 1.1.1.1
    
    The result on Server.
    Before:
    8192000 bytes in 0.88 seconds = 74.36 Mbit/sec
    1000 iters in 0.88 seconds = 881.30 usec/iter
    
    After:
    8192000 bytes in 0.81 seconds = 81.15 Mbit/sec
    1000 iters in 0.81 seconds = 807.62 usec/iter
    
    The throughput is enhanced and the latency is reduced.
    
    CC: Srinivas Eeda <srinivas.eeda@oracle.com>
    CC: Joe Jin <joe.jin@oracle.com>
    CC: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: default avatarZhu Yanjun <yanjun.zhu@oracle.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    5793b465
rxe_net.c 16.3 KB