Hello all, The following patchset introduces the Elastic Fabric Adapter (EFA) driver, that was pre-announced by Amazon [1]. EFA is a networking adapter designed to support user space network communication, initially offered in the Amazon EC2 environment. First release of EFA supports datagram send/receive operations and does not support connection-oriented or read/write operations. EFA supports unreliable datagrams (UD) as well as a new unordered, scalable reliable datagram protocol (SRD). SRD provides support for reliable datagrams and more complete error handling than typical RD, but, unlike RD, it does not support ordering nor segmentation. A new queue pair type, IB_QPT_SRD, is added to expose this new queue pair type. User verbs are supported via a dedicated userspace libfabric provider. Kernel verbs and in-kernel services are initially not supported. EFA enabled EC2 instances have two different devices allocated, one for ENA (netdev) and one for EFA, the two are separate pci devices with no in-kernel communication between them. Thanks, Gal [1] https://aws.amazon.com/about-aws/whats-new/2018/11/introducing-elastic-fabric-adapter/ Gal Pressman (13): RDMA: Add EFA related definitions RDMA/efa: Add EFA device definitions RDMA/efa: Add the PCI device id definitions RDMA/efa: Add the efa.h header file RDMA/efa: Add the efa_com.h file RDMA/efa: Add the com service API definitions RDMA/efa: Add the ABI definitions RDMA/efa: Implement functions that submit and complete admin commands RDMA/efa: Add com command handlers RDMA/efa: Add bitmap allocation service RDMA/efa: Add EFA verbs implementation RDMA/efa: Add the efa module RDMA/efa: Add driver to Kconfig/Makefile MAINTAINERS | 8 + drivers/infiniband/Kconfig | 2 + drivers/infiniband/core/verbs.c | 2 + drivers/infiniband/hw/Makefile | 1 + drivers/infiniband/hw/efa/Kconfig | 14 + drivers/infiniband/hw/efa/Makefile | 8 + drivers/infiniband/hw/efa/efa.h | 191 +++ drivers/infiniband/hw/efa/efa_admin_cmds_defs.h | 783 ++++++++++ drivers/infiniband/hw/efa/efa_admin_defs.h | 135 ++ drivers/infiniband/hw/efa/efa_bitmap.c | 76 + drivers/infiniband/hw/efa/efa_com.c | 1122 ++++++++++++++ drivers/infiniband/hw/efa/efa_com.h | 139 ++ drivers/infiniband/hw/efa/efa_com_cmd.c | 544 +++++++ drivers/infiniband/hw/efa/efa_com_cmd.h | 217 +++ drivers/infiniband/hw/efa/efa_common_defs.h | 17 + drivers/infiniband/hw/efa/efa_main.c | 669 +++++++++ drivers/infiniband/hw/efa/efa_pci_id_tbl.h | 25 + drivers/infiniband/hw/efa/efa_regs_defs.h | 117 ++ drivers/infiniband/hw/efa/efa_verbs.c | 1827 +++++++++++++++++++++++ include/rdma/ib_verbs.h | 9 +- include/uapi/rdma/efa-abi.h | 89 ++ 21 files changed, 5993 insertions(+), 2 deletions(-) create mode 100644 drivers/infiniband/hw/efa/Kconfig create mode 100644 drivers/infiniband/hw/efa/Makefile create mode 100644 drivers/infiniband/hw/efa/efa.h create mode 100644 drivers/infiniband/hw/efa/efa_admin_cmds_defs.h create mode 100644 drivers/infiniband/hw/efa/efa_admin_defs.h create mode 100644 drivers/infiniband/hw/efa/efa_bitmap.c create mode 100644 drivers/infiniband/hw/efa/efa_com.c create mode 100644 drivers/infiniband/hw/efa/efa_com.h create mode 100644 drivers/infiniband/hw/efa/efa_com_cmd.c create mode 100644 drivers/infiniband/hw/efa/efa_com_cmd.h create mode 100644 drivers/infiniband/hw/efa/efa_common_defs.h create mode 100644 drivers/infiniband/hw/efa/efa_main.c create mode 100644 drivers/infiniband/hw/efa/efa_pci_id_tbl.h create mode 100644 drivers/infiniband/hw/efa/efa_regs_defs.h create mode 100644 drivers/infiniband/hw/efa/efa_verbs.c create mode 100644 include/uapi/rdma/efa-abi.h -- 2.7.4