From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PULL_REQUEST,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4BF62C43381 for ; Sat, 16 Feb 2019 01:35:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 25A77222D0 for ; Sat, 16 Feb 2019 01:35:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732734AbfBPBfN (ORCPT ); Fri, 15 Feb 2019 20:35:13 -0500 Received: from mail-il-dmz.mellanox.com ([193.47.165.129]:46500 "EHLO mellanox.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727399AbfBPBfM (ORCPT ); Fri, 15 Feb 2019 20:35:12 -0500 Received: from Internal Mail-Server by MTLPINE1 (envelope-from saeedm@mellanox.com) with ESMTPS (AES256-SHA encrypted); 16 Feb 2019 03:35:07 +0200 Received: from sx1.mtl.com ([172.16.5.60]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x1G1Z4Hi028267; Sat, 16 Feb 2019 03:35:05 +0200 From: Saeed Mahameed To: "David S. Miller" Cc: netdev@vger.kernel.org, Saeed Mahameed Subject: [pull request][net-next 00/13] Mellanox, BlueField SmartNIC Date: Fri, 15 Feb 2019 17:34:39 -0800 Message-Id: <20190216013452.21131-1-saeedm@mellanox.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Hi Dave, This series adds the support for Melanox BlueField SmartNIC. For more information please see tag log below. Please note the merge commit of mlx5-next at the base of the pull request: 259fae5a2cff ("Merge branch 'mlx5-next' of git://git.kernel.org/.../mellanox/linux") Please pull and let me know if there is any problem. Thanks, Saeed. --- The following changes since commit 259fae5a2cff72e19f82094fb73e2149f8d64396: Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux (2019-02-15 16:45:31 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2019-02-15 for you to fetch changes up to c96692fb8f3d0a161c6892ab9cc51a5e9992ccf2: net/mlx5: E-Switch, Allow transition to offloads mode for ECPF (2019-02-15 17:25:58 -0800) ---------------------------------------------------------------- Support Mellanox BlueField SmartNIC (mlx5-updates-2019-02-15) Bodong Wang says, BlueField device is a multi-core ARM processor in a highly integrated system on chip coupled with the ConnectX interconnect controller. BlueField device can be presented in one out of two modes: - SEPARATED_HOST: ARM processors as a separated and orthogonal host like any other external host in the multi-host virtualization model. - EMBEDDED_CPU: ARM processors as Embedded CPU (EC) and part of the external hosts virtualization model. While existing driver already supports the device on separated_host mode, this patch series focus on the functionalities of embedded_cpu mode. On embedded_cpu mode, BlueField device exposes regular network controller PCI function in the BlueField host(e.g, x86). However, a separate PCI function called Embedded CPU Physical Function(ECPF) is also added to the ARM host side, where standard Linux distributions is able to run on the ARM cores. Depends on the NV configuration from firmware, ECPF can be the e-switch manager and firmware pages supplier. If ECPF is configured as e-switch manager and page supplier, it will take over the responsibilities from the PF on BlueField host includes: - Owns, controls and manages all e-switch parts, and takes e-switch traffic by default. It also should perform ENABLE_HCA for the host PF just like a PF does for its VFs. - Provides and manages the ICM host memory required for the HCA to store various contexts for itself, the PF and VFs belong the e-switch it manages. The PF on BlueField host side is still responsible for: - Control its own permanent MAC. - PCI and SRIOV configurations and perform ENABLE_HCA for its VFs. The ECPF can also retrieve information about the external host it controls, like host identifier, PCI BDF and number of virtual functions. As these parameters may be changed dynamically, an event will be triggered to the driver on ECPF side. ---------------------------------------------------------------- Bodong Wang (13): net/mlx5: Correctly set LAG mode for ECPF net/mlx5: E-Switch, Properly refer to the esw manager vport net/mlx5: E-Switch, Properly refer to host PF vport as other vport net/mlx5: E-Switch, Refactor offloads flow steering init/cleanup net/mlx5: E-Switch, Split VF and special vports for offloads mode net/mlx5: E-Switch, Use getter and iterator to access vport/rep net/mlx5: E-Switch, Add state to eswitch vport representors net/mlx5: E-Switch, Support load/unload reps of specific vport types net/mlx5: E-Switch, Centralize repersentor reg/unreg to eswitch driver net/mlx5: E-Switch, Assign a different position for uplink rep and vport net/mlx5: E-Switch, Consider ECPF vport depends on eswitch ownership net/mlx5: E-Switch, Load/unload VF reps according to event from host PF net/mlx5: E-Switch, Allow transition to offloads mode for ECPF drivers/infiniband/hw/mlx5/ib_rep.c | 20 +- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 25 +- drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 175 +++++--- drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 65 ++- .../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 470 +++++++++++++++++---- drivers/net/ethernet/mellanox/mlx5/core/lag.c | 5 + drivers/net/ethernet/mellanox/mlx5/core/vport.c | 10 +- include/linux/mlx5/driver.h | 5 + include/linux/mlx5/eswitch.h | 19 +- include/linux/mlx5/mlx5_ifc.h | 3 +- include/linux/mlx5/vport.h | 20 +- 11 files changed, 617 insertions(+), 200 deletions(-)