All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 rdma-next 00/29] Soft RoCE driver
@ 2016-06-16 13:45 Moni Shoua
       [not found] ` <1466084751-29901-1-git-send-email-monis-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
  0 siblings, 1 reply; 47+ messages in thread
From: Moni Shoua @ 2016-06-16 13:45 UTC (permalink / raw)
  To: dledford-H+wXaHxf7aLQT0dZR+AlfA
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, matanb-VPRAkNaXOzVWk0Htik3J/w,
	talal-VPRAkNaXOzVWk0Htik3J/w, leonro-VPRAkNaXOzVWk0Htik3J/w,
	majd-VPRAkNaXOzVWk0Htik3J/w, yonatanc-VPRAkNaXOzVWk0Htik3J/w,
	Moni Shoua

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.

Architecture:


     +-----------------------------------------------------------+
     |                          Application                      |
     +-----------------------------------------------------------+
                            +-----------------------------------+
                            |             libibverbs            |
User                        +-----------------------------------+
                            +----------------+ +----------------+
                            | librxe         | | HW RoCE lib    |
                            +----------------+ +----------------+
+---------------------------------------------------------------+
     +--------------+                           +------------+
     | Sockets      |                           | RDMA ULP   |
     +--------------+                           +------------+
     +--------------+                  +---------------------+
     | TCP/IP       |                  | ib_core             |
     +--------------+                  +---------------------+
                             +------------+ +----------------+
Kernel                       | ib_rxe     | | HW RoCE driver |
                             +------------+ +----------------+
     +------------------------------------+
     | NIC driver                         |
     +------------------------------------+

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     +-----------------------------------------------------------+
     |                          Application                      |
     +-----------------------------------------------------------+
                            +-----------------------------------+
                            |             libibverbs            |
User                        +-----------------------------------+
                            +----------------+ +----------------+
                            | librxe         | | HW RoCE lib    |
                            +----------------+ +----------------+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     +--------------+                           +------------+
     | Sockets      |                           | RDMA ULP   |
     +--------------+                           +------------+
     +--------------+                  +---------------------+
     | TCP/IP       |                  | ib_core             |
     +--------------+                  +---------------------+
                             +------------+ +----------------+
Kernel                       | ib_rxe     | | HW RoCE driver |
                             +------------+ +----------------+
     +------------------------------------+
     | NIC driver                         |
     +------------------------------------+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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
[3] https://github.com/SoftRoCE/librxe-dev - Soft RoCE userspace library

Changes from V1
===============================================================================
- Rebase to kernel 4.7-rc2
- Fix error code in rxe_srq_from_init() (from Dan Carpenter <dan.carpenter-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>)
- Fix 32-bit build warnings (from Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>)
- Add UDP_TUNNEL dependency (from Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>)
- Avoid 64-bit division (from Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>)
- Changed deprecated module_param_call() to module_param_cb()
- Add description to module params 'add' and 'remove'
- Hold list of RXE devices in list instead of array
- Fix race when received before wqe state update
- Add prefix "rxe" to memory cache names
- Rename ib_rxe.h to ib_user_rxe.h (comes with same change in librxe).
- Fix copyright date issue

Note: The FMR interface is left in until the fast memory registration interface
will be added so iSER can still work with Soft RoCE.

Note
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      |   24 +
 drivers/infiniband/hw/rxe/Makefile     |   24 +
 drivers/infiniband/hw/rxe/rxe.c        |  411 ++++++++++
 drivers/infiniband/hw/rxe/rxe.h        |   77 ++
 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    |  708 +++++++++++++++++
 drivers/infiniband/hw/rxe/rxe_net.h    |   53 ++
 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    |  692 ++++++++++++++++
 drivers/infiniband/hw/rxe/rxe_resp.c   | 1364 ++++++++++++++++++++++++++++++++
 drivers/infiniband/hw/rxe/rxe_srq.c    |  193 +++++
 drivers/infiniband/hw/rxe/rxe_sysfs.c  |  157 ++++
 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_user_rxe.h        |  139 ++++
 38 files changed, 13085 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_user_rxe.h

-- 
1.8.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2016-06-26 11:48 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-16 13:45 [PATCH v2 rdma-next 00/29] Soft RoCE driver Moni Shoua
     [not found] ` <1466084751-29901-1-git-send-email-monis-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-16 13:45   ` [PATCH v2 rdma-next 01/29] IB/rxe: IBA header types and methods Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 02/29] IB/rxe: Bit mask and lengths declaration for different opcodes Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 03/29] IB/rxe: Default rxe device and port parameters Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 04/29] IB/rxe: External interface to lower level modules Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 05/29] IB/rxe: Misc local interfaces between files Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 06/29] IB/rxe: Add maintainer for rxe driver Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 07/29] IB/rxe: Work request's opcode information table Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 08/29] IB/rxe: User/kernel shared queues infrastructure Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 09/29] IB/rxe: Common user/kernel queue implementation Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 10/29] IB/rxe: Interface to ib_core Moni Shoua
     [not found]     ` <1466084751-29901-11-git-send-email-monis-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-16 14:47       ` Steve Wise
2016-06-16 14:53         ` Moni Shoua
2016-06-16 18:01         ` Jason Gunthorpe
     [not found]           ` <20160616180131.GD23229-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-06-19 11:12             ` Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 11/29] IB/rxe: Allocation pool for RDMA objects Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 12/29] IB/rxe: RXE tasks handling Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 13/29] IB/rxe: Address vector manipulation functions Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 14/29] IB/rxe: Shared Receive Queue (SRQ) " Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 15/29] IB/rxe: Completion Queue (CQ) " Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 16/29] IB/rxe: Queue Pair (QP) handling Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 17/29] IB/rxe: Memory Region (MR) manioulation Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 18/29] IB/rxe: Add multicast infrastructure Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 19/29] IB/rxe: Received packets handling Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 20/29] IB/rxe: Completion handling Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 21/29] IB/rxe: QP request handling Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 22/29] IB/rxe: QP response handling Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 23/29] IB/rxe: Dummy DMA callbacks for RXE device Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 24/29] IB/rxe: Invariant CRC implementation Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 25/29] IB/rxe: Module init hooks Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 26/29] IB/rxe: Interface to netdev stack Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 27/29] IB/rxe: sysfs interface to RXE Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 28/29] IB/rxe: Shared objects between user and kernel Moni Shoua
2016-06-16 13:45   ` [PATCH v2 rdma-next 29/29] IB/rxe: Add Soft-RoCE to kbuild and makefiles Moni Shoua
2016-06-16 13:50   ` [PATCH v2 rdma-next 00/29] Soft RoCE driver Christoph Hellwig
     [not found]     ` <20160616135056.GA27373-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-06-16 13:55       ` Moni Shoua
     [not found]         ` <CAG9sBKO7psY+YkLCeGH1s9jmEizdkySbPz0tbtbO45Mo4bvVSg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-16 14:31           ` Steve Wise
2016-06-16 14:34             ` Moni Shoua
2016-06-16 14:30   ` Steve Wise
2016-06-20 19:10   ` Steve Wise
2016-06-21  7:21     ` Moni Shoua
     [not found]       ` <CAG9sBKPOxXMb=cFQTqiujRmRBz=HwK5yAZROvjsCeLXN_OT0EA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-21 13:52         ` Steve Wise
2016-06-23 16:18   ` Doug Ledford
     [not found]     ` <c233fabc-7779-db30-b983-13cf61094716-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-23 16:22       ` Moni Shoua
2016-06-24 17:11       ` Hefty, Sean
     [not found]         ` <1828884A29C6694DAF28B7E6B8A82373AB0651CA-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-06-24 21:27           ` Doug Ledford
2016-06-26 11:48       ` Moni Shoua

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.