This patch set is a revised version of an older set which implements support for nonlinear or fragmented packets. This avoids extra copies in both the send and receive paths and gives significant performance improvement for large messages such as are used in storage applications. This patch set has been heavily tested at large system scale and demonstrated a 2X improvement in file system read performance on a 200 Gb/sec network. The patch set is rebased to the current for-next branch with the following previous patch sets applied: RDMA/rxe: Fix incomplete state save in rxe_requester RDMA/rxe: Misc fixes and cleanups Enable rcu locking of verbs objects RDMA/rxe: Misc cleanups Bob Pearson (10): RDMA/rxe: Add sg fragment ops RDMA/rxe: Extend rxe_mr_copy to support skb frags RDMA/rxe: Extend copy_data to support skb frags RDMA/rxe: Extend rxe_init_packet() to support frags RDMA/rxe: Extend rxe_icrc.c to support frags RDMA/rxe: Extend rxe_init_req_packet() for frags RDMA/rxe: Extend response packets for frags RDMA/rxe: Extend send/write_data_in() for frags RDMA/rxe: Extend do_read() in rxe_comp.c for frags RDMA/rxe: Enable sg code in rxe drivers/infiniband/sw/rxe/rxe.c | 5 + drivers/infiniband/sw/rxe/rxe.h | 3 + drivers/infiniband/sw/rxe/rxe_comp.c | 46 +++- drivers/infiniband/sw/rxe/rxe_icrc.c | 65 ++++- drivers/infiniband/sw/rxe/rxe_loc.h | 27 +- drivers/infiniband/sw/rxe/rxe_mr.c | 348 +++++++++++++++++++------ drivers/infiniband/sw/rxe/rxe_net.c | 109 +++++++- drivers/infiniband/sw/rxe/rxe_opcode.c | 2 + drivers/infiniband/sw/rxe/rxe_recv.c | 1 + drivers/infiniband/sw/rxe/rxe_req.c | 88 ++++++- drivers/infiniband/sw/rxe/rxe_resp.c | 172 +++++++----- drivers/infiniband/sw/rxe/rxe_verbs.h | 8 +- 12 files changed, 672 insertions(+), 202 deletions(-) base-commit: 693e1cdebb50d2aa67406411ca6d5be195d62771 prerequisite-patch-id: c3994e7a93e37e0ce4f50e0c768f3c1a0059a02f prerequisite-patch-id: 48e13f6ccb560fdeacbd20aaf6696782c23d1190 prerequisite-patch-id: da75fb8eaa863df840e7b392b5048fcc72b0bef3 prerequisite-patch-id: d0877649e2edaf00585a0a6a80391fe0d7bbc13b prerequisite-patch-id: 6495b1d1f664f8ab91ed9ef9d2ca5b3b27d7df35 prerequisite-patch-id: a6367b8fedd0d8999139c8b857ebbd3ce5c72245 prerequisite-patch-id: 78c95e90a5e49b15b7af8ef57130739c143e88b5 prerequisite-patch-id: 7c65a01066c0418de6897bc8b5f44d078d21b0ec prerequisite-patch-id: 8ab09f93c23c7875e56c597e69236c30464723b6 prerequisite-patch-id: ca9d84b34873b49048e42fb4c13a2a097c215c46 prerequisite-patch-id: 0f6a587501c8246e1185dfd0cbf5e2044c5f9b13 prerequisite-patch-id: 5246df93137429916d76e75b9a13a4ad5ceb0bad prerequisite-patch-id: 41b0e4150794dd914d9fcb4cd106fe4cf4227611 prerequisite-patch-id: 02b08ec037bc35b9c7771640c89c66504cdf38a6 prerequisite-patch-id: dfccc06c16454d7fe8e6fcba064d4e471d314666 prerequisite-patch-id: 7459a6e5cdd46efd53ba27f9b3e9028af6e0863b prerequisite-patch-id: 36d49f9303f5cb276a5601c1ab568eea6eca7d3a prerequisite-patch-id: 6359a681e40832694f81ca003c10e5327996bf7d prerequisite-patch-id: 558175db657f374dbd3e0a57ac4c5fb77a56b6c6 prerequisite-patch-id: d6b811de06c8900be5840dd29715161d26db66cf -- 2.39.2