From patchwork Fri Feb 15 17:10:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiraz Saleem X-Patchwork-Id: 10815531 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 DBD5C13B4 for ; Fri, 15 Feb 2019 17:11:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C8FEE2FCB1 for ; Fri, 15 Feb 2019 17:11:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C68F52FCF0; Fri, 15 Feb 2019 17:11:40 +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=-7.9 required=2.0 tests=BAYES_00,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 F036C2FCEB for ; Fri, 15 Feb 2019 17:11:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727861AbfBORLi (ORCPT ); Fri, 15 Feb 2019 12:11:38 -0500 Received: from mga14.intel.com ([192.55.52.115]:20585 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725939AbfBORLi (ORCPT ); Fri, 15 Feb 2019 12:11:38 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Feb 2019 09:11:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,373,1544515200"; d="scan'208";a="134635663" Received: from ssaleem-mobl4.amr.corp.intel.com ([10.122.129.109]) by orsmga002.jf.intel.com with ESMTP; 15 Feb 2019 09:11:36 -0800 From: Shiraz Saleem To: dledford@redhat.com, jgg@ziepe.ca, davem@davemloft.net Cc: linux-rdma@vger.kernel.org, netdev@vger.kernel.org, mustafa.ismail@intel.com, jeffrey.t.kirsher@intel.com, "Saleem, Shiraz" Subject: [RFC v1 00/19] Add unified Intel Ethernet RDMA driver (irdma) Date: Fri, 15 Feb 2019 11:10:47 -0600 Message-Id: <20190215171107.6464-1-shiraz.saleem@intel.com> X-Mailer: git-send-email 2.8.3 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 From: "Saleem, Shiraz" This patchset adds a unified Intel Ethernet RDMA driver that supports a new network device E810 (iWARP and RoCEv2 capable) and the existing X722 iWARP device. The driver architecture provides the extensibility for future generations of Intel HW supporting RDMA. The underlying LAN driver for X722 ("i40e") and E810 ("ice") have their own peer/client interface that this unified RDMA driver registers to. The netdev_priv structure of each LAN driver accessed by the netdev_priv() interface exposes their peer register/unregister function pointers for use by the RDMA driver. This solution revives an earlier submission [1] intended for a different purpose. It now serves to unify the RDMA driver and we are requesting feedback. The unified driver is currently being tested on X722 with rdma-core-v22. X722 is supported by this driver, but only if CONFIG_INFINIBAND_I40IW is disabled in the kernel. We desire to deprecate or phase out i40iw from the kernel and can submit patches to do the same. We would like to move forward with this unified driver model for current and future HW. This series was built against rdma-next. commit 21a428a019c9 ("RDMA: Handle PD allocations by IB/core") It includes both net and rdma patches for the purposes of review. It will be split into two separate patch series, one for net-next and rdma-next once RFC is accepted. [1] https://patchwork.kernel.org/patch/10419583/ v0->v1: * updated to use latest core APIs - Jasons feedback Anirudh Venkataramanan (2): net/ice: Create framework for VSI queue context net/ice: Add support for ice peer devices and drivers Michael J. Ruhl (1): RDMA/irdma: Add dynamic tracing for CM Mustafa Ismail (13): RDMA/irdma: Add driver framework definitions RDMA/irdma: Implement device initialization definitions RDMA/irdma: Implement HW Admin Queue OPs RDMA/irdma: Add HMC backing store setup functions RDMA/irdma: Add privileged UDA queue implementation RDMA/irdma: Add QoS definitions RDMA/irdma: Add connection manager RDMA/irdma: Add PBLE resource manager RDMA/irdma: Implement device supported verb APIs RDMA/irdma: Add RoCEv2 UD OP support RDMA/irdma: Add user/kernel shared libraries RDMA/irdma: Add miscellaneous utility definitions RDMA/irdma: Add ABI definitions Shiraz Saleem (3): net/i40e: Add peer register/unregister to struct i40e_netdev_priv RDMA/irdma: Add Kconfig and Makefile RDMA/irdma: Update MAINTAINERS file MAINTAINERS | 10 +- drivers/infiniband/Kconfig | 1 + drivers/infiniband/hw/Makefile | 1 + drivers/infiniband/hw/irdma/Kconfig | 11 + drivers/infiniband/hw/irdma/Makefile | 31 + drivers/infiniband/hw/irdma/cm.c | 4622 ++++++++++++++++ drivers/infiniband/hw/irdma/cm.h | 424 ++ drivers/infiniband/hw/irdma/ctrl.c | 6165 ++++++++++++++++++++++ drivers/infiniband/hw/irdma/defs.h | 2053 +++++++ drivers/infiniband/hw/irdma/hmc.c | 716 +++ drivers/infiniband/hw/irdma/hmc.h | 221 + drivers/infiniband/hw/irdma/hw.c | 2485 +++++++++ drivers/infiniband/hw/irdma/i40iw_hw.c | 207 + drivers/infiniband/hw/irdma/i40iw_hw.h | 164 + drivers/infiniband/hw/irdma/i40iw_if.c | 250 + drivers/infiniband/hw/irdma/icrdma_hw.c | 74 + drivers/infiniband/hw/irdma/icrdma_hw.h | 60 + drivers/infiniband/hw/irdma/irdma.h | 187 + drivers/infiniband/hw/irdma/irdma_if.c | 430 ++ drivers/infiniband/hw/irdma/main.c | 489 ++ drivers/infiniband/hw/irdma/main.h | 709 +++ drivers/infiniband/hw/irdma/osdep.h | 153 + drivers/infiniband/hw/irdma/pble.c | 520 ++ drivers/infiniband/hw/irdma/pble.h | 135 + drivers/infiniband/hw/irdma/protos.h | 118 + drivers/infiniband/hw/irdma/puda.c | 1695 ++++++ drivers/infiniband/hw/irdma/puda.h | 186 + drivers/infiniband/hw/irdma/status.h | 70 + drivers/infiniband/hw/irdma/trace.c | 113 + drivers/infiniband/hw/irdma/trace.h | 4 + drivers/infiniband/hw/irdma/trace_cm.h | 459 ++ drivers/infiniband/hw/irdma/type.h | 1705 ++++++ drivers/infiniband/hw/irdma/uda.c | 416 ++ drivers/infiniband/hw/irdma/uda.h | 87 + drivers/infiniband/hw/irdma/uda_d.h | 383 ++ drivers/infiniband/hw/irdma/uk.c | 1680 ++++++ drivers/infiniband/hw/irdma/user.h | 463 ++ drivers/infiniband/hw/irdma/utils.c | 2565 +++++++++ drivers/infiniband/hw/irdma/verbs.c | 4166 +++++++++++++++ drivers/infiniband/hw/irdma/verbs.h | 183 + drivers/infiniband/hw/irdma/ws.c | 449 ++ drivers/infiniband/hw/irdma/ws.h | 40 + drivers/net/ethernet/intel/i40e/i40e.h | 1 + drivers/net/ethernet/intel/i40e/i40e_client.h | 10 + drivers/net/ethernet/intel/i40e/i40e_main.c | 7 + drivers/net/ethernet/intel/ice/Makefile | 1 + drivers/net/ethernet/intel/ice/ice.h | 14 + drivers/net/ethernet/intel/ice/ice_adminq_cmd.h | 32 + drivers/net/ethernet/intel/ice/ice_common.c | 189 + drivers/net/ethernet/intel/ice/ice_common.h | 9 + drivers/net/ethernet/intel/ice/ice_idc.c | 1527 ++++++ drivers/net/ethernet/intel/ice/ice_idc.h | 402 ++ drivers/net/ethernet/intel/ice/ice_idc_int.h | 99 + drivers/net/ethernet/intel/ice/ice_lib.c | 24 + drivers/net/ethernet/intel/ice/ice_lib.h | 2 + drivers/net/ethernet/intel/ice/ice_main.c | 143 +- drivers/net/ethernet/intel/ice/ice_sched.c | 177 +- drivers/net/ethernet/intel/ice/ice_switch.c | 23 + drivers/net/ethernet/intel/ice/ice_switch.h | 11 + drivers/net/ethernet/intel/ice/ice_type.h | 3 + drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 25 - include/uapi/rdma/irdma-abi.h | 140 + include/uapi/rdma/rdma_user_ioctl_cmds.h | 1 + 63 files changed, 37647 insertions(+), 93 deletions(-) create mode 100644 drivers/infiniband/hw/irdma/Kconfig create mode 100644 drivers/infiniband/hw/irdma/Makefile create mode 100644 drivers/infiniband/hw/irdma/cm.c create mode 100644 drivers/infiniband/hw/irdma/cm.h create mode 100644 drivers/infiniband/hw/irdma/ctrl.c create mode 100644 drivers/infiniband/hw/irdma/defs.h create mode 100644 drivers/infiniband/hw/irdma/hmc.c create mode 100644 drivers/infiniband/hw/irdma/hmc.h create mode 100644 drivers/infiniband/hw/irdma/hw.c create mode 100644 drivers/infiniband/hw/irdma/i40iw_hw.c create mode 100644 drivers/infiniband/hw/irdma/i40iw_hw.h create mode 100644 drivers/infiniband/hw/irdma/i40iw_if.c create mode 100644 drivers/infiniband/hw/irdma/icrdma_hw.c create mode 100644 drivers/infiniband/hw/irdma/icrdma_hw.h create mode 100644 drivers/infiniband/hw/irdma/irdma.h create mode 100644 drivers/infiniband/hw/irdma/irdma_if.c create mode 100644 drivers/infiniband/hw/irdma/main.c create mode 100644 drivers/infiniband/hw/irdma/main.h create mode 100644 drivers/infiniband/hw/irdma/osdep.h create mode 100644 drivers/infiniband/hw/irdma/pble.c create mode 100644 drivers/infiniband/hw/irdma/pble.h create mode 100644 drivers/infiniband/hw/irdma/protos.h create mode 100644 drivers/infiniband/hw/irdma/puda.c create mode 100644 drivers/infiniband/hw/irdma/puda.h create mode 100644 drivers/infiniband/hw/irdma/status.h create mode 100644 drivers/infiniband/hw/irdma/trace.c create mode 100644 drivers/infiniband/hw/irdma/trace.h create mode 100644 drivers/infiniband/hw/irdma/trace_cm.h create mode 100644 drivers/infiniband/hw/irdma/type.h create mode 100644 drivers/infiniband/hw/irdma/uda.c create mode 100644 drivers/infiniband/hw/irdma/uda.h create mode 100644 drivers/infiniband/hw/irdma/uda_d.h create mode 100644 drivers/infiniband/hw/irdma/uk.c create mode 100644 drivers/infiniband/hw/irdma/user.h create mode 100644 drivers/infiniband/hw/irdma/utils.c create mode 100644 drivers/infiniband/hw/irdma/verbs.c create mode 100644 drivers/infiniband/hw/irdma/verbs.h create mode 100644 drivers/infiniband/hw/irdma/ws.c create mode 100644 drivers/infiniband/hw/irdma/ws.h create mode 100644 drivers/net/ethernet/intel/ice/ice_idc.c create mode 100644 drivers/net/ethernet/intel/ice/ice_idc.h create mode 100644 drivers/net/ethernet/intel/ice/ice_idc_int.h create mode 100644 include/uapi/rdma/irdma-abi.h