From patchwork Tue Dec 4 12:04:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gal Pressman X-Patchwork-Id: 10711629 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 89FEC13AF for ; Tue, 4 Dec 2018 12:04:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 77DAB2A35B for ; Tue, 4 Dec 2018 12:04:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 68FB02AE4E; Tue, 4 Dec 2018 12:04:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E4E9C2A35B for ; Tue, 4 Dec 2018 12:04:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725956AbeLDMEy (ORCPT ); Tue, 4 Dec 2018 07:04:54 -0500 Received: from smtp-fw-9102.amazon.com ([207.171.184.29]:41310 "EHLO smtp-fw-9102.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725767AbeLDMEy (ORCPT ); Tue, 4 Dec 2018 07:04:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1543925092; x=1575461092; h=from:to:cc:subject:date:message-id:mime-version; bh=fF5l7BpHIQMSllRseq8zFZYAxIEXxM4ZJJHzjAbmmWI=; b=TGiT93WngNWm7o4ishCnP8lorBwtlWuvNpMJzPQPyjF++qJ3/RaoSJEJ 6KpQRUDwcIb+J1KccCVgcJ8Ddj6qXBI0czPx4uLvSk5Nvmg7LZYuAKj2B /LzJfVHS9TcETB1jlEGPBcd7/86pn+aFbBWVT6RYWi8VPgM1W2wNiEx0Y k=; X-IronPort-AV: E=Sophos;i="5.56,253,1539648000"; d="scan'208";a="645914916" Received: from sea3-co-svc-lb6-vlan3.sea.amazon.com (HELO email-inbound-relay-1e-303d0b0e.us-east-1.amazon.com) ([10.47.22.38]) by smtp-border-fw-out-9102.sea19.amazon.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 04 Dec 2018 12:04:50 +0000 Received: from EX13MTAUEA001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1e-303d0b0e.us-east-1.amazon.com (8.14.7/8.14.7) with ESMTP id wB4C4koR089802 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Tue, 4 Dec 2018 12:04:49 GMT Received: from EX13D13EUA003.ant.amazon.com (10.43.165.25) by EX13MTAUEA001.ant.amazon.com (10.43.61.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 4 Dec 2018 12:04:48 +0000 Received: from EX13MTAUEB001.ant.amazon.com (10.43.60.96) by EX13D13EUA003.ant.amazon.com (10.43.165.25) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 4 Dec 2018 12:04:47 +0000 Received: from galpress-VirtualBox.hfa16.amazon.com (10.218.62.26) by mail-relay.amazon.com (10.43.60.129) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Tue, 4 Dec 2018 12:04:44 +0000 From: Gal Pressman To: Doug Ledford , Jason Gunthorpe CC: Alexander Matushevsky , Yossi Leybovich , , Tom Tucker , Gal Pressman Subject: [PATCH rdma-next 00/13] Elastic Fabric Adapter (EFA) driver Date: Tue, 4 Dec 2018 14:04:16 +0200 Message-ID: <1543925069-8838-1-git-send-email-galpress@amazon.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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