This patch set contributes version 5 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. In response to the various helpful feedback, we fixed (besides other small fixes) the following issues: 1. The debugfs logic got completely removed. There is no debugfs entry for siw anymore. We will interate with rdmatool in the future. 2. The driver adheres to the device and object management as recently proposed by Jason Gunthorpe. This includes the new protection domain management. 3. An entry to linux MAINTAINERS for siw was added. 4. The packet length at MPA protocol level got restricted to physical MTU size: to interoperate with hardware iWarp devices such as Chelsio T5/T6, GSO usage got unselected. It can be selcted with a global parameter 'gso_seg_limit'. Setting 'gso_seg_limit = 0' makes full use of GSO if advertised by the TCP socket. This almost doubles bandwidth for bulk data transfers in a pure siw <-> siw setting, but does not interoperate wth some hardware RNIC's. 5. An 'SPDX-License-Identifier' got added to all files 6. The user interface as defined in include/uapi/rdma/siwa_user.h got cleaned up. 7. Useless redefinition of functions for kernel reference count reading got removed. The driver continues to make use of rdma-netdev extensions to add and delete links, as proposed by Steve Wise. The driver continues to rely on the iWarp port mapper extensions for software RDMA devices, as proposed by Steve Wise. We maintain a snapshot of the current code at https://github.com/zrlio/softiwarp-for-linux-rdma.git within branch 'siw-for-rdma-next-v5'. This branch includes the latest netlink and portmapper patches from Steve as well as the latest device and object management from Jason. 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'. Since siw may generate work completion notifications from a kthread context, performance of kernel siw clients like NVMeF depends on the following pending kernel patch (included in https://github.com/zrlio/softiwarp-for-linux-rdma.git): https://www.spinics.net/lists/linux-rdma/msg75081.html 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 MAINTAINERS | 7 + 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 | 414 ++++ drivers/infiniband/sw/siw/siw.h | 790 ++++++++ drivers/infiniband/sw/siw/siw_ae.c | 121 ++ drivers/infiniband/sw/siw/siw_cm.c | 2186 ++++++++++++++++++++++ drivers/infiniband/sw/siw/siw_cm.h | 157 ++ drivers/infiniband/sw/siw/siw_cq.c | 149 ++ drivers/infiniband/sw/siw/siw_debug.c | 124 ++ drivers/infiniband/sw/siw/siw_debug.h | 69 + drivers/infiniband/sw/siw/siw_main.c | 813 ++++++++ drivers/infiniband/sw/siw/siw_mem.c | 217 +++ drivers/infiniband/sw/siw/siw_obj.c | 341 ++++ drivers/infiniband/sw/siw/siw_obj.h | 226 +++ drivers/infiniband/sw/siw/siw_qp.c | 1478 +++++++++++++++ drivers/infiniband/sw/siw/siw_qp_rx.c | 1535 +++++++++++++++ drivers/infiniband/sw/siw/siw_qp_tx.c | 1330 +++++++++++++ drivers/infiniband/sw/siw/siw_verbs.c | 1851 ++++++++++++++++++ drivers/infiniband/sw/siw/siw_verbs.h | 114 ++ include/uapi/rdma/rdma_user_ioctl_cmds.h | 1 + include/uapi/rdma/siw_user.h | 223 +++ 24 files changed, 12180 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