On Thu, 2019-06-20 at 18:21 +0200, Bernard Metzler wrote: > This patch set contributes the SoftiWarp driver rebased for > latest rdma-next. SoftiWarp (siw) implements the iWarp RDMA > protocol over kernel TCP sockets. The driver integrates with > the linux-rdma framework. > > A matching userlevel driver is available as PR at > https://github.com/linux-rdma/rdma-core/pull/536 > > Many thanks for reviewing and testing the driver, especially to Leon, > Jason, Steve, Doug, Olga, Dennis, Gal. You all helped to significantly > improve the driver over the last year. > > Please find below a list of changes and comments, compared to older > versions of the siw driver. > > Many thanks! > Bernard. This, modulo moving the two defines to a private header, has been pulled into for-next. Thanks! > > CHANGES: > ======== > > v3 (this version) > ----------------- > > - Rebased to rdma-next > > - Removed unneccessary initialization of enums in siw-abi.h > > - Added comment on sizing of all work queues to power of two. > > > v2 > ----------------- > > - Changed recieve path CRC calculation to compute CRC32c not > on target buffer after placement, but on original skbuf. > This change severely hurts performance, if CRC is switched > on, since skb must now be walked twice. It is planned to > work on an extension to skb_copy_bits() to fold in CRC > computation. > > - Moved debugging to using ibdev_dbg(). > > - Dropped detailed packet debug printing. > > - Removed siw_debug.[ch] files. > > - Removed resource tracking, code now relies on restrack of > RDMA midlayer. Only object counting to enforce reported > device limits is left in place. > > - Removed all nested switch-case statements. > > - Cleaned up header file #include's > > - Moved CQ create/destroy to new semantics, > where midlayer creates/destroys containing object. > > - Set siw's ABI version to 1 (was 0 before) > > - Removed all enum initialization where not needed. > > - Fixed MAINTANERS entry for siw driver > > - This version stays with the current siw specific > management of user memory (siw_umem_get() vs. > ib_umem_get(), etc.). This, since the current ib_umem > implementation is less efficient for user page lookup > on the fast path, where effciency is important for a > SW RDMA driver. > It is planned to contribute enhancements to the ib_umem > framework, wich makes it suitable for SW drivers as well. > > > v1 (first version after v9 of siw RFC) > -------------------------------------- > > - Rebased to 5.2-rc1 > > - All IDR code got removed. > > - Both MR and QP deallocation verbs now synchronously > free the resources referenced by the RDMA mid-layer. > > - IPv6 support was added. > > - For compatibility with Chelsio iWarp hardware, the RX > path was slightly reworked. It now allows packet intersection > between tagged and untagged RDMAP operations. While not > a defined behavior as of IETF RFC 5040/5041, some RDMA hardware > may intersect an ongoing outbound (large) tagged message, such > as an multisegment RDMA Read Response with sending an untagged > message, such as an RDMA Send frame. This behavior was only > detected in an NVMeF setup, where siw was used at target side, > and RDMA hardware at client side (during file write). siw now > implements two input paths for tagged and untagged messages each, > and allows the intersected placement of both messages. > > - The siw kernel abi file got renamed from siw_user.h to siw-abi.h. > > Bernard Metzler (11): > iWarp wire packet format > SIW main include file > SIW network and RDMA core interface > 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 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 | 11 + > drivers/infiniband/sw/siw/iwarp.h | 380 ++++ > drivers/infiniband/sw/siw/siw.h | 745 ++++++++ > drivers/infiniband/sw/siw/siw_cm.c | 2072 > ++++++++++++++++++++++ > drivers/infiniband/sw/siw/siw_cm.h | 133 ++ > drivers/infiniband/sw/siw/siw_cq.c | 101 ++ > drivers/infiniband/sw/siw/siw_main.c | 687 +++++++ > drivers/infiniband/sw/siw/siw_mem.c | 460 +++++ > drivers/infiniband/sw/siw/siw_mem.h | 74 + > drivers/infiniband/sw/siw/siw_qp.c | 1322 ++++++++++++++ > drivers/infiniband/sw/siw/siw_qp_rx.c | 1455 +++++++++++++++ > drivers/infiniband/sw/siw/siw_qp_tx.c | 1268 +++++++++++++ > drivers/infiniband/sw/siw/siw_verbs.c | 1760 ++++++++++++++++++ > drivers/infiniband/sw/siw/siw_verbs.h | 91 + > include/uapi/rdma/rdma_user_ioctl_cmds.h | 1 + > include/uapi/rdma/siw-abi.h | 185 ++ > 20 files changed, 10771 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_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_main.c > create mode 100644 drivers/infiniband/sw/siw/siw_mem.c > create mode 100644 drivers/infiniband/sw/siw/siw_mem.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-abi.h > -- Doug Ledford <dledford@xxxxxxxxxx> GPG KeyID: B826A3330E572FDD Fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD
Attachment:
signature.asc
Description: This is a digitally signed message part