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

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

 



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

-- 
2.17.2




[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