[PATCH rdma-next 00/29] Soft RoCE driver

Moni Shoua
2016-06-02T16:57:08Z

Hi Doug,

Soft RoCE (RXE) - The software RoCE driver

ib_rxe implements the RDMA transport and registers to the RDMA core device as a
kernel verbs provider. It also implements the packet IO layer. On the other hand
ib_rxe registers to the Linux netdev stack as a udp encapsulating protocol, in
that case RDMA, for sending and receiving packets over any Ethernet device.
This yields a RDMA transport over the UDP/Ethernet network layer forming a RoCEv2
compatible device.

The configuration procedure of the Soft RoCE drivers requires binding to any existing
Ethernet network device. This is done with /sys interface.

A userspace Soft RoCE library (librxe) provides user applications the ability to run
with Soft RoCE devices. The use of rxe verbs in user space requires the inclusion of
librxe as a device specific plug-in to libibverbs. librxe is packaged separately.

Soft RoCE was previously pushed to drivers/infiniband/staging and now, after cleanups
and bug fixes is pushed to the hardware provides section in the RDMA stack.

Soft RoCE resources:

[1] https://github.com/SoftRoCE/librxe-dev librxe - source code in Github

[2] https://github.com/SoftRoCE/rxe-dev/wiki/rxe-dev:-Home - Soft RoCE Wiki page

Moni Shoua (29):
IB/rxe: IBA header types and methods
IB/rxe: Bit mask and lengths declaration for different opcodes
IB/rxe: Default rxe device and port parameters
IB/rxe: External interface to lower level modules
IB/rxe: Misc local interfaces between files
IB/rxe: Add maintainer for rxe driver
IB/rxe: Work request's opcode information table
IB/rxe: User/kernel shared queues infrastructure
IB/rxe: Common user/kernel queue implementation
IB/rxe: Interface to ib_core
IB/rxe: Allocation pool for RDMA objects
IB/rxe: RXE tasks handling
IB/rxe: Address vector manipulation functions
IB/rxe: Shared Receive Queue (SRQ) manipulation functions
IB/rxe: Completion Queue (CQ) manipulation functions
IB/rxe: Queue Pair (QP) handling
IB/rxe: Memory Region (MR) manioulation
IB/rxe: Add multicast infrastructure
IB/rxe: Received packets handling
IB/rxe: Completion handling
IB/rxe: QP request handling
IB/rxe: QP response handling
IB/rxe: Dummy DMA callbacks for RXE device
IB/rxe: Invariant CRC implementation
IB/rxe: Module init hooks
IB/rxe: Interface to netdev stack
IB/rxe: sysfs interface to RXE
IB/rxe: Shared objects between user and kernel
IB/rxe: Add Soft-RoCE to kbuild and makefiles

MAINTAINERS | 9 +
drivers/infiniband/Kconfig | 1 +
drivers/infiniband/hw/Makefile | 1 +
drivers/infiniband/hw/rxe/Kconfig | 23 +
drivers/infiniband/hw/rxe/Makefile | 24 +
drivers/infiniband/hw/rxe/rxe.c | 455 +++++++++++
drivers/infiniband/hw/rxe/rxe.h | 74 ++
drivers/infiniband/hw/rxe/rxe_av.c | 98 +++
drivers/infiniband/hw/rxe/rxe_comp.c | 734 +++++++++++++++++
drivers/infiniband/hw/rxe/rxe_cq.c | 165 ++++
drivers/infiniband/hw/rxe/rxe_dma.c | 166 ++++
drivers/infiniband/hw/rxe/rxe_hdr.h | 952 ++++++++++++++++++++++
drivers/infiniband/hw/rxe/rxe_icrc.c | 96 +++
drivers/infiniband/hw/rxe/rxe_loc.h | 289 +++++++
drivers/infiniband/hw/rxe/rxe_mcast.c | 190 +++++
drivers/infiniband/hw/rxe/rxe_mmap.c | 173 ++++
drivers/infiniband/hw/rxe/rxe_mr.c | 679 ++++++++++++++++
drivers/infiniband/hw/rxe/rxe_net.c | 753 ++++++++++++++++++
drivers/infiniband/hw/rxe/rxe_net.h | 78 ++
drivers/infiniband/hw/rxe/rxe_opcode.c | 961 ++++++++++++++++++++++
drivers/infiniband/hw/rxe/rxe_opcode.h | 128 +++
drivers/infiniband/hw/rxe/rxe_param.h | 173 ++++
drivers/infiniband/hw/rxe/rxe_pool.c | 510 ++++++++++++
drivers/infiniband/hw/rxe/rxe_pool.h | 164 ++++
drivers/infiniband/hw/rxe/rxe_qp.c | 851 ++++++++++++++++++++
drivers/infiniband/hw/rxe/rxe_queue.c | 217 +++++
drivers/infiniband/hw/rxe/rxe_queue.h | 178 +++++
drivers/infiniband/hw/rxe/rxe_recv.c | 420 ++++++++++
drivers/infiniband/hw/rxe/rxe_req.c | 675 ++++++++++++++++
drivers/infiniband/hw/rxe/rxe_resp.c | 1364 ++++++++++++++++++++++++++++++++
drivers/infiniband/hw/rxe/rxe_srq.c | 195 +++++
drivers/infiniband/hw/rxe/rxe_sysfs.c | 151 ++++
drivers/infiniband/hw/rxe/rxe_task.c | 154 ++++
drivers/infiniband/hw/rxe/rxe_task.h | 95 +++
drivers/infiniband/hw/rxe/rxe_verbs.c | 1352 +++++++++++++++++++++++++++++++
drivers/infiniband/hw/rxe/rxe_verbs.h | 486 ++++++++++++
include/uapi/rdma/Kbuild | 1 +
include/uapi/rdma/ib_rxe.h | 139 ++++
38 files changed, 13174 insertions(+)
create mode 100644 drivers/infiniband/hw/rxe/Kconfig
create mode 100644 drivers/infiniband/hw/rxe/Makefile
create mode 100644 drivers/infiniband/hw/rxe/rxe.c
create mode 100644 drivers/infiniband/hw/rxe/rxe.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_av.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_comp.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_cq.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_dma.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_hdr.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_icrc.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_loc.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_mcast.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_mmap.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_mr.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_net.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_net.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_opcode.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_opcode.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_param.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_pool.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_pool.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_qp.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_queue.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_queue.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_recv.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_req.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_resp.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_srq.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_sysfs.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_task.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_task.h
create mode 100644 drivers/infiniband/hw/rxe/rxe_verbs.c
create mode 100644 drivers/infiniband/hw/rxe/rxe_verbs.h
create mode 100644 include/uapi/rdma/ib_rxe.h

--
1.8.3.1