mbox series

[for-next,v2,00/18] RDMA/rxe: Enable scatter/gather support for skbs

Message ID 20221031202403.19062-1-rpearsonhpe@gmail.com (mailing list archive)
Headers show
Series RDMA/rxe: Enable scatter/gather support for skbs | expand

Message

Bob Pearson Oct. 31, 2022, 8:23 p.m. UTC
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@intel.com>

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

Comments

Jason Gunthorpe Nov. 24, 2022, 7:04 p.m. UTC | #1
On Mon, Oct 31, 2022 at 03:23:46PM -0500, Bob Pearson wrote:
> 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.

This doesn't apply, it will need to be rebased/resent

> 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.

The concept seems good

Jason