Re: [PATCH v4 00/13] SIW: Request for Comments

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/30/2019 12:21 PM, bmt@xxxxxxxxxxxxxx wrote:
From: Bernard Metzler <bmt@xxxxxxxxxxxxxx>

This patch set contributes a new version of the SoftiWarp
driver, as originally introduced to the list Oct 6th, 2017.
SoftiWarp (siw) implements the iWarp RDMA protocol over
kernel TCP sockets. The driver integrates with the
linux-rdma framework.

For this patch series, we aimed at fixing the main
obstacles, which prevented siw acceptance in the past:

1. siw now uses the recently extended rdma netlink protocol
    for adding and removing siw devices. It became the
    only way of managing siw devices.

2. The driver integrates with the currently reviewed
    RDMA/IWPM patch series on introducing no port mapping
    requirements. These patches as provided by Steve Wise
    are a pre-requisit to run siw in an environment with
    active iwpmd.

The code has the following known limitations:

1. Only IPv4 addresses are supported / no IPv6 support.

2. All previously flexible module parameters are translated
    into const values as defined in siw_main.c. We propose
    another extension of the netlink protocol to make those
    driver parameters dynamically settable. Ideally, we would
    distinguish between link specific and connection specific
    parameters.

    Currently, we would like to see the following parameters
    settable:
    o MPA peer-to-peer mode (boolean on/off)
    o MPA CRC (boolean on/off)
    o MPA CRC negotiation mode: accept different CRC setting
      from peer (boolean on/off)
    o TCP_NODELAY to control Nagle settings of TCP socket
      (boolean on/off)
    o MPA version (0, 1 or 2)
    o Zerocopy to let TCP transmit out of application
      buffers wr/o copying data (boolean on/off)
    o GSO to select Generic Segementation Offload for
      larger frames (one frame may span 1 .. n Ethernet
      frames, if advertised by TCP socket)

    In principle, all of those parameters could be controlled
    per connection. At least, dynamically setting those per
    device is highly desirable. Please let's agree on the
    most clean solution for that.

We maintain a snapshot of the current code at
https://github.com/zrlio/softiwarp-for-linux-rdma.git
within branch 'siw-for-rdma-next-nvme-5.0'.
This branch is based on the rdma-next tree and additionally
includes the latest netlink and portmapper patches from
Steve Wise as well as the latest nvme-5.0 code changes from
git://git.infradead.org/nvme.git. We tested siw with
NVMeF host and target applications and therefor merged
with latest nvme development.

The matching siw user library is maintained at
https://github.com/zrlio/softiwarp-user-for-linux-rdma.git.
It is based on rdma-core, and extended with Steve's patches
to both rdma netlink and portmapper. The relevant branch
name is 'siw-for-rdma-next'.


As always, we'd highly appreciate your code review. Thanks
very much for your time.

Bernard

Bernard Metzler (13):
   iWarp wire packet format
   SIW main include file
   SIW network and RDMA core interface
   SIW object management
   SIW connection management
   SIW application interface
   SIW application buffer management
   SIW queue pair methods
   SIW transmit path
   SIW receive path
   SIW completion queue methods
   SIW debugging
   SIW addition to kernel build environment

  drivers/infiniband/Kconfig               |    1 +
  drivers/infiniband/sw/Makefile           |    1 +
  drivers/infiniband/sw/siw/Kconfig        |   17 +
  drivers/infiniband/sw/siw/Makefile       |   15 +
  drivers/infiniband/sw/siw/iwarp.h        |  415 ++++
  drivers/infiniband/sw/siw/siw.h          |  805 ++++++++
  drivers/infiniband/sw/siw/siw_ae.c       |  120 ++
  drivers/infiniband/sw/siw/siw_cm.c       | 2185 ++++++++++++++++++++++
  drivers/infiniband/sw/siw/siw_cm.h       |  156 ++
  drivers/infiniband/sw/siw/siw_cq.c       |  150 ++
  drivers/infiniband/sw/siw/siw_debug.c    |  467 +++++
  drivers/infiniband/sw/siw/siw_debug.h    |   87 +
  drivers/infiniband/sw/siw/siw_main.c     |  846 +++++++++
  drivers/infiniband/sw/siw/siw_mem.c      |  243 +++
  drivers/infiniband/sw/siw/siw_obj.c      |  338 ++++
  drivers/infiniband/sw/siw/siw_obj.h      |  200 ++
  drivers/infiniband/sw/siw/siw_qp.c       | 1473 +++++++++++++++
  drivers/infiniband/sw/siw/siw_qp_rx.c    | 1533 +++++++++++++++
  drivers/infiniband/sw/siw/siw_qp_tx.c    | 1340 +++++++++++++
  drivers/infiniband/sw/siw/siw_verbs.c    | 1888 +++++++++++++++++++
  drivers/infiniband/sw/siw/siw_verbs.h    |  119 ++
  include/uapi/rdma/rdma_user_ioctl_cmds.h |    1 +
  include/uapi/rdma/siw_user.h             |  216 +++
  23 files changed, 12616 insertions(+)
  create mode 100644 drivers/infiniband/sw/siw/Kconfig
  create mode 100644 drivers/infiniband/sw/siw/Makefile
  create mode 100644 drivers/infiniband/sw/siw/iwarp.h
  create mode 100644 drivers/infiniband/sw/siw/siw.h
  create mode 100644 drivers/infiniband/sw/siw/siw_ae.c
  create mode 100644 drivers/infiniband/sw/siw/siw_cm.c
  create mode 100644 drivers/infiniband/sw/siw/siw_cm.h
  create mode 100644 drivers/infiniband/sw/siw/siw_cq.c
  create mode 100644 drivers/infiniband/sw/siw/siw_debug.c
  create mode 100644 drivers/infiniband/sw/siw/siw_debug.h
  create mode 100644 drivers/infiniband/sw/siw/siw_main.c
  create mode 100644 drivers/infiniband/sw/siw/siw_mem.c
  create mode 100644 drivers/infiniband/sw/siw/siw_obj.c
  create mode 100644 drivers/infiniband/sw/siw/siw_obj.h
  create mode 100644 drivers/infiniband/sw/siw/siw_qp.c
  create mode 100644 drivers/infiniband/sw/siw/siw_qp_rx.c
  create mode 100644 drivers/infiniband/sw/siw/siw_qp_tx.c
  create mode 100644 drivers/infiniband/sw/siw/siw_verbs.c
  create mode 100644 drivers/infiniband/sw/siw/siw_verbs.h
  create mode 100644 include/uapi/rdma/siw_user.h

Don't forget a MAINTAINERS file update.

-Denny





[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux