This patch series implements support for network devices that can handle or produce fragmented packets. This has the performance advantage of reducing the number of copies of payloads for large packets. On the send side packets are created with the network and roce headers in the linear portion of the skb and the payload in skb fragments. The pad and icrc are appended in an additional fragment pointing at data stored in free space in the tail of the linear buffer. Only RC messages are supported. On the receive side any fragmented skb is supported. This patch series is based on the current for-next branch. It also can be applied to current for-next after the workqueue patch series is applied without change. v2: Rebased to current for-next from wip/jgg-for-next. One patch is split into two 03/17 -> 03/18 and 04/18 Three errors reported by the kernel test robot are fixed 04/18 Fix use of uninitialized variable in error path 13/18 Missing static declaration 15/18 Fix use of uninitialized variable in error path Reported-by: kernel test robot <lkp@xxxxxxxxx> Bob Pearson (18): RDMA/rxe: Isolate code to fill request roce headers RDMA/rxe: Isolate request payload code in a subroutine RDMA/rxe: Remove paylen parameter from rxe_init_packet RDMA/rxe: Isolate code to build request packet RDMA/rxe: Add sg fragment ops RDMA/rxe: Add rxe_add_frag() to rxe_mr.c RDMA/rxe: Add routine to compute the number of frags RDMA/rxe: Extend rxe_mr_copy to support skb frags RDMA/rxe: Add routine to compute number of frags for dma RDMA/rxe: Extend copy_data to support skb frags RDMA/rxe: Replace rxe by qp as a parameter 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 | 3 + drivers/infiniband/sw/rxe/rxe.h | 3 + drivers/infiniband/sw/rxe/rxe_comp.c | 47 ++- drivers/infiniband/sw/rxe/rxe_icrc.c | 65 +++- drivers/infiniband/sw/rxe/rxe_loc.h | 30 +- drivers/infiniband/sw/rxe/rxe_mr.c | 419 +++++++++++++++++++------- drivers/infiniband/sw/rxe/rxe_net.c | 137 +++++++-- drivers/infiniband/sw/rxe/rxe_recv.c | 1 + drivers/infiniband/sw/rxe/rxe_req.c | 286 +++++++++++------- drivers/infiniband/sw/rxe/rxe_resp.c | 209 ++++++++----- drivers/infiniband/sw/rxe/rxe_verbs.h | 15 +- 11 files changed, 866 insertions(+), 349 deletions(-) base-commit: 4508d32ccced24c972bc4592104513e1ff8439b5 -- 2.34.1