linux/drivers/infiniband/sw/rxe
Zhu Yanjun 5793b46521 IB/rxe: remove unnecessary skb_clone in xmit
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: Zhu Yanjun <yanjun.zhu@oracle.com>

Signed-off-by: Doug Ledford <dledford@redhat.com>
2018-01-08 17:43:47 -05:00
..
Kconfig IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rxe_av.c IB/rxe: Remove unneeded check 2017-08-18 14:01:10 -04:00
rxe_comp.c IB/rxe: Convert timers to use timer_setup() 2017-10-25 15:24:49 -04:00
rxe_cq.c IB/rxe: Disable completion upcalls when a CQ is destroyed 2017-08-28 19:12:32 -04:00
rxe_hdr.h IB/rxe: Enable type checking on SKB_TO_PKT() and PKT_TO_SKB() arguments 2017-01-10 16:52:47 -05:00
rxe_hw_counters.c IB/rxe: Make rxe_counter_name static 2017-08-24 16:44:48 -04:00
rxe_hw_counters.h IB/rxe: Add port protocol stats 2017-04-21 10:43:28 -04:00
rxe_icrc.c IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
rxe_loc.h IB/rxe: Convert timers to use timer_setup() 2017-10-25 15:24:49 -04:00
rxe_mcast.c IB/rxe: Remove a pointless indirection layer 2017-01-10 16:52:47 -05:00
rxe_mmap.c IB/rxe: Constify static rxe_vm_ops 2017-07-24 08:43:12 -04:00
rxe_mr.c IB/rxe: Avoid ICRC errors by copying into the skb first 2017-08-28 19:12:36 -04:00
rxe_net.c IB/rxe: remove unnecessary skb_clone in xmit 2018-01-08 17:43:47 -05:00
rxe_net.h IB/rxe: add the static type to the variable 2018-01-08 17:43:06 -05:00
rxe_opcode.c
rxe_opcode.h
rxe_param.h rxe: expose num_possible_cpus() cnum_comp_vectors 2017-05-04 19:33:02 -04:00
rxe_pool.c IB/rxe: put the pool on allocation failure 2017-10-09 12:10:41 -04:00
rxe_pool.h IB/rxe: Let the compiler check the type of the cleanup functions 2017-01-10 16:52:47 -05:00
rxe_qp.c IB/rxe: Convert timers to use timer_setup() 2017-10-25 15:24:49 -04:00
rxe_queue.c IB/rxe: Clear queue buffer when modifying QP to reset 2016-11-16 20:03:44 -05:00
rxe_queue.h IB/rxe: Clear queue buffer when modifying QP to reset 2016-11-16 20:03:44 -05:00
rxe_recv.c IB/rxe: Avoid passing unused index pointer which is optional 2017-12-18 15:37:08 -07:00
rxe_req.c IB/rxe: Convert timers to use timer_setup() 2017-10-25 15:24:49 -04:00
rxe_resp.c IB/rxe: Fix up the responder's find_resources() function 2017-08-28 19:12:33 -04:00
rxe_srq.c IB/rxe: Remove unneeded cast in rxe_srq_from_attr() 2016-12-12 16:31:45 -05:00
rxe_sysfs.c IB/rxe: improved debug prints & code cleanup 2016-10-06 13:50:04 -04:00
rxe_task.c RDMA/rxe: Suppress gcc 7 fall-through complaints 2017-10-14 20:47:07 -04:00
rxe_task.h IB/rxe: Wait for tasklets to finish before tearing down QP 2016-12-12 16:31:45 -05:00
rxe_verbs.c IB/rxe: don't crash, if allocation of crc algorithm failed 2017-11-10 13:43:50 -05:00
rxe_verbs.h IB/rxe: Fix destination cache for IPv6 2017-08-28 19:12:33 -04:00
rxe.c RDMA/rxe: Remove useless EXPORT_SYMBOL 2018-01-02 13:36:57 -07:00
rxe.h RDMA/rxe: Remove useless EXPORT_SYMBOL 2018-01-02 13:36:57 -07:00