From patchwork Fri Feb 22 19:54:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1047103 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="FmQ2QsQ+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 445hqy3Ydwz9s9L for ; Sat, 23 Feb 2019 06:54:22 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726937AbfBVTyV (ORCPT ); Fri, 22 Feb 2019 14:54:21 -0500 Received: from mail-qt1-f195.google.com ([209.85.160.195]:40141 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725892AbfBVTyU (ORCPT ); Fri, 22 Feb 2019 14:54:20 -0500 Received: by mail-qt1-f195.google.com with SMTP id j36so3887927qta.7 for ; Fri, 22 Feb 2019 11:54:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=C66kYSk1WyPgEvTC5mSG49Z1HWXklVDZez5ilFvCeOM=; b=FmQ2QsQ+iiZaKd1aTAKDexlCZgKXnQxt1EA1rWJdOxwB8lAxrM3F8FiqvQWWhk6PTT 8yXcIl/f3R7vIrqV3XaB2LbGuhq7eP4ZReDkd9eYvFfOh5lh03dhnfMiTYgJF/q7+TfD 7e3VlpHLyYk5dxImw8Cmd8l0+NRFp7SPCZW4UDAkzL89Hc3s8WxowBI8LS9gtlQttUoR Xs1/pMtncNGiMPSTj4hDzpDA5CArtxyAn3IxNcCjJs3qmVHaGYnCYKp+J5gSXyeLpxKo 8bXP+0ksCbtn8vwRDv7RDJoqE1v0q67i1rUESNmhSD1pN8MfJfIhBe6AMq0Aigszf4+a jNbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=C66kYSk1WyPgEvTC5mSG49Z1HWXklVDZez5ilFvCeOM=; b=bPE0ZdoslQpgnBTiXu2fuQDvlACyycbK1zGNCm9kh+CezuWyJvm/6cMi+RDymXDwJT LvbSlMvgA/sRgna+UalgqQltDceqJRbE3OqEv3mlzczC88LNK0/c1GLgX4ru2/mOyn5l CJzMG6HZhL7rsSEJVeyokWFFAaeSnijD8/mKJSek/DgW+dQT+SsSFKi+yomvgEHzVbts uhLvoNoJ51b2PsqbYDmtLVLVLeL7VGjfNADJSOFM5kaMU4oeunvjQGWYXwHdSCO+xjTI RvNz1t9PM/S8DcsU6w6+1OQZql1j3bL6FEsK4Ak87VuOeqNrTay+8B8yEIJbqaW3sFLL pS/g== X-Gm-Message-State: AHQUAuY9+Kq/awq8AX6b22pNIwuhFh7clzguPlRXTAYjMif+8rBzqgRF 9Q8oZ9Jp3eyV3TNeGPVWQtCNuJ+Quo0= X-Google-Smtp-Source: AHgI3IZnRsfbQoBk0sqAcrilGKwK5JNTaRjPqXjxdXqFG6wn1Pbz8W9/qPjooRsrdui6+NBEoXeJcg== X-Received: by 2002:a0c:98c8:: with SMTP id g8mr4561833qvd.161.1550865259141; Fri, 22 Feb 2019 11:54:19 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r30sm1605280qtj.45.2019.02.22.11.54.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Feb 2019 11:54:18 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, jiri@resnulli.us Cc: mkubecek@suse.cz, andrew@lunn.ch, f.fainelli@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski Subject: [PATCH net-next v2 1/5] net: devlink: turn devlink into a built-in Date: Fri, 22 Feb 2019 11:54:06 -0800 Message-Id: <20190222195410.9494-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190222195410.9494-1-jakub.kicinski@netronome.com> References: <20190222195410.9494-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Being able to build devlink as a module causes growing pains. First all drivers had to add a meta dependency to make sure they are not built in when devlink is built as a module. Now we are struggling to invoke ethtool compat code reliably. Make devlink code built-in, users can still not build it at all but the dynamically loadable module option is removed. Signed-off-by: Jakub Kicinski Reviewed-by: Florian Fainelli --- drivers/infiniband/hw/bnxt_re/Kconfig | 1 - drivers/infiniband/hw/mlx4/Kconfig | 1 - drivers/net/Kconfig | 1 - drivers/net/ethernet/broadcom/Kconfig | 1 - drivers/net/ethernet/cavium/Kconfig | 1 - drivers/net/ethernet/mellanox/mlx4/Kconfig | 1 - drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 1 - drivers/net/ethernet/mellanox/mlxsw/Kconfig | 1 - drivers/net/ethernet/netronome/Kconfig | 1 - include/net/devlink.h | 10 ++++------ net/Kconfig | 11 +---------- net/core/devlink.c | 15 ++------------- net/dsa/Kconfig | 2 +- 13 files changed, 8 insertions(+), 39 deletions(-) diff --git a/drivers/infiniband/hw/bnxt_re/Kconfig b/drivers/infiniband/hw/bnxt_re/Kconfig index 18f5ed082f41..19982a4a9bba 100644 --- a/drivers/infiniband/hw/bnxt_re/Kconfig +++ b/drivers/infiniband/hw/bnxt_re/Kconfig @@ -1,7 +1,6 @@ config INFINIBAND_BNXT_RE tristate "Broadcom Netxtreme HCA support" depends on ETHERNET && NETDEVICES && PCI && INET && DCB - depends on MAY_USE_DEVLINK select NET_VENDOR_BROADCOM select BNXT ---help--- diff --git a/drivers/infiniband/hw/mlx4/Kconfig b/drivers/infiniband/hw/mlx4/Kconfig index d1de3285fd88..4e9936731867 100644 --- a/drivers/infiniband/hw/mlx4/Kconfig +++ b/drivers/infiniband/hw/mlx4/Kconfig @@ -2,7 +2,6 @@ config MLX4_INFINIBAND tristate "Mellanox ConnectX HCA support" depends on NETDEVICES && ETHERNET && PCI && INET depends on INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS - depends on MAY_USE_DEVLINK select NET_VENDOR_MELLANOX select MLX4_CORE ---help--- diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 6210757772ed..5e4ca082cfcd 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -505,7 +505,6 @@ source "drivers/net/hyperv/Kconfig" config NETDEVSIM tristate "Simulated networking device" depends on DEBUG_FS - depends on MAY_USE_DEVLINK help This driver is a developer testing tool and software model that can be used to test various control path networking APIs, especially diff --git a/drivers/net/ethernet/broadcom/Kconfig b/drivers/net/ethernet/broadcom/Kconfig index c1d3ee9baf7e..716bfbba59cf 100644 --- a/drivers/net/ethernet/broadcom/Kconfig +++ b/drivers/net/ethernet/broadcom/Kconfig @@ -194,7 +194,6 @@ config SYSTEMPORT config BNXT tristate "Broadcom NetXtreme-C/E support" depends on PCI - depends on MAY_USE_DEVLINK select FW_LOADER select LIBCRC32C ---help--- diff --git a/drivers/net/ethernet/cavium/Kconfig b/drivers/net/ethernet/cavium/Kconfig index 05f4a3b21e29..6650e2a5f171 100644 --- a/drivers/net/ethernet/cavium/Kconfig +++ b/drivers/net/ethernet/cavium/Kconfig @@ -64,7 +64,6 @@ config CAVIUM_PTP config LIQUIDIO tristate "Cavium LiquidIO support" depends on 64BIT && PCI - depends on MAY_USE_DEVLINK depends on PCI imply PTP_1588_CLOCK select FW_LOADER diff --git a/drivers/net/ethernet/mellanox/mlx4/Kconfig b/drivers/net/ethernet/mellanox/mlx4/Kconfig index f200b8c420d5..ff8057ed97ee 100644 --- a/drivers/net/ethernet/mellanox/mlx4/Kconfig +++ b/drivers/net/ethernet/mellanox/mlx4/Kconfig @@ -4,7 +4,6 @@ config MLX4_EN tristate "Mellanox Technologies 1/10/40Gbit Ethernet support" - depends on MAY_USE_DEVLINK depends on PCI && NETDEVICES && ETHERNET && INET select MLX4_CORE imply PTP_1588_CLOCK diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig index 37a551436e4a..6debffb8336b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig +++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig @@ -4,7 +4,6 @@ config MLX5_CORE tristate "Mellanox 5th generation network adapters (ConnectX series) core driver" - depends on MAY_USE_DEVLINK depends on PCI imply PTP_1588_CLOCK imply VXLAN diff --git a/drivers/net/ethernet/mellanox/mlxsw/Kconfig b/drivers/net/ethernet/mellanox/mlxsw/Kconfig index b9a25aed5d11..9c195dfed031 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/Kconfig +++ b/drivers/net/ethernet/mellanox/mlxsw/Kconfig @@ -4,7 +4,6 @@ config MLXSW_CORE tristate "Mellanox Technologies Switch ASICs support" - depends on MAY_USE_DEVLINK ---help--- This driver supports Mellanox Technologies Switch ASICs family. diff --git a/drivers/net/ethernet/netronome/Kconfig b/drivers/net/ethernet/netronome/Kconfig index 66f15b05b65e..549898d5d450 100644 --- a/drivers/net/ethernet/netronome/Kconfig +++ b/drivers/net/ethernet/netronome/Kconfig @@ -19,7 +19,6 @@ config NFP tristate "Netronome(R) NFP4000/NFP6000 NIC driver" depends on PCI && PCI_MSI depends on VXLAN || VXLAN=n - depends on MAY_USE_DEVLINK ---help--- This driver supports the Netronome(R) NFP4000/NFP6000 based cards working as a advanced Ethernet NIC. It works with both diff --git a/include/net/devlink.h b/include/net/devlink.h index a2da49dd9147..f9f7fe974652 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -707,6 +707,10 @@ devlink_health_reporter_priv(struct devlink_health_reporter *reporter); int devlink_health_report(struct devlink_health_reporter *reporter, const char *msg, void *priv_ctx); +void devlink_compat_running_version(struct net_device *dev, + char *buf, size_t len); +int devlink_compat_flash_update(struct net_device *dev, const char *file_name); + #else static inline struct devlink *devlink_alloc(const struct devlink_ops *ops, @@ -1190,13 +1194,7 @@ devlink_health_report(struct devlink_health_reporter *reporter, { return 0; } -#endif -#if IS_REACHABLE(CONFIG_NET_DEVLINK) -void devlink_compat_running_version(struct net_device *dev, - char *buf, size_t len); -int devlink_compat_flash_update(struct net_device *dev, const char *file_name); -#else static inline void devlink_compat_running_version(struct net_device *dev, char *buf, size_t len) { diff --git a/net/Kconfig b/net/Kconfig index 62da6148e9f8..1efe1f9ee492 100644 --- a/net/Kconfig +++ b/net/Kconfig @@ -429,21 +429,12 @@ config NET_SOCK_MSG with the help of BPF programs. config NET_DEVLINK - tristate "Network physical/parent device Netlink interface" + bool "Network physical/parent device Netlink interface" help Network physical/parent device Netlink interface provides infrastructure to support access to physical chip-wide config and monitoring. -config MAY_USE_DEVLINK - tristate - default m if NET_DEVLINK=m - default y if NET_DEVLINK=y || NET_DEVLINK=n - help - Drivers using the devlink infrastructure should have a dependency - on MAY_USE_DEVLINK to ensure they do not cause link errors when - devlink is a loadable module and the driver using it is built-in. - config PAGE_POOL bool diff --git a/net/core/devlink.c b/net/core/devlink.c index 4f31ddc883e7..05e04ea0a5c7 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -6482,20 +6482,9 @@ int devlink_compat_flash_update(struct net_device *dev, const char *file_name) return -EOPNOTSUPP; } -static int __init devlink_module_init(void) +static int __init devlink_init(void) { return genl_register_family(&devlink_nl_family); } -static void __exit devlink_module_exit(void) -{ - genl_unregister_family(&devlink_nl_family); -} - -module_init(devlink_module_init); -module_exit(devlink_module_exit); - -MODULE_LICENSE("GPL v2"); -MODULE_AUTHOR("Jiri Pirko "); -MODULE_DESCRIPTION("Network physical device Netlink interface"); -MODULE_ALIAS_GENL_FAMILY(DEVLINK_GENL_NAME); +subsys_initcall(devlink_init); diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig index 91e52973ee13..fab49132345f 100644 --- a/net/dsa/Kconfig +++ b/net/dsa/Kconfig @@ -6,7 +6,7 @@ config HAVE_NET_DSA config NET_DSA tristate "Distributed Switch Architecture" - depends on HAVE_NET_DSA && MAY_USE_DEVLINK + depends on HAVE_NET_DSA depends on BRIDGE || BRIDGE=n select NET_SWITCHDEV select PHYLINK From patchwork Fri Feb 22 19:54:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1047104 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="QtjEKEwv"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 445hqz5jTDz9sBL for ; Sat, 23 Feb 2019 06:54:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726964AbfBVTyW (ORCPT ); Fri, 22 Feb 2019 14:54:22 -0500 Received: from mail-qt1-f194.google.com ([209.85.160.194]:35974 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726870AbfBVTyV (ORCPT ); Fri, 22 Feb 2019 14:54:21 -0500 Received: by mail-qt1-f194.google.com with SMTP id p25so3923930qtb.3 for ; Fri, 22 Feb 2019 11:54:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=G7WO8kh5U1TvdM1SCF+Z3WJZnweGpcuresnBJgqjhac=; b=QtjEKEwveTXc93eFMvm1SbOj+LK2w/iQ6BR2iFtKdPNFX+Q1N0KqY1eDp+isPTbEB+ CoczZ1FP3iwpjgcjt3rovWOybqGE1kTpGjKqehlzLWvHROwZMnFtliIM2j4DyZkPFIcl Cf1FHm3dx0trrSqg/icSh7CFYPoM692g6t3+YUD4Ea7p6ux4KnuIvuq3x/UsAgqagbxA AlRNF/tbSJeMKIR2m6PbFVG33XJupZSSTaqJHH2nR1jRbEEc1HTH9c7p28eAoY21kkB5 of0sKsjCGZWmlBJCD+q6B0Zx5ulZ6ZxWyEsh7cHajAaiDadXAhLwfyLLhB3YDdj6w65J Vd2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=G7WO8kh5U1TvdM1SCF+Z3WJZnweGpcuresnBJgqjhac=; b=rBqHmt5X0TaQ00cZg0dD+y5o5XWafRwsUTW4XFSFKJFI2sfo94Jeie/g4TNt6300uh 6ecEqeQUjJBAjBADxuMdoZaJV9MdEZEE791A5QAHhEaf2kcQsIibCqylAVKclNqkCpvf TzSoo20IsLOaKpQ3X4ariCg1FF8UUuch501Ck+/vKFq99ztUUkJJXInI1MyD0mWFDkqy dIbP2Y5yXEDu87WUN+ZNUH0hLXhncR7qRq4r4rNtC4yhG7BgQSbq9LW8f4I3fkvUSlVl WOWC+sZgfbM4TKukaX1oTTJd8jn33Z82lEw3oBDAM2DS+XU4RGaQ8yWbI1zE7PMK1hMt DHYg== X-Gm-Message-State: AHQUAuZq2kIhTsow9XXcyzBOTOGuABDnwdXXTRZobXr/GPmjXeAz7t+5 WEjllyFdL43laH48gCRxD7S8g8GyY1M= X-Google-Smtp-Source: AHgI3IbhLPq/PKC98zeQaqr/CVpwsNh9/1tz6Ihma9Y6s7KPsKL4vdYJ5zrM7RXuJkLSeCdVRCrK/A== X-Received: by 2002:ac8:3855:: with SMTP id r21mr4213285qtb.91.1550865260693; Fri, 22 Feb 2019 11:54:20 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r30sm1605280qtj.45.2019.02.22.11.54.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Feb 2019 11:54:20 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, jiri@resnulli.us Cc: mkubecek@suse.cz, andrew@lunn.ch, f.fainelli@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski Subject: [PATCH net-next v2 2/5] ethtool: hold a reference to the netdevice around devlink compat Date: Fri, 22 Feb 2019 11:54:07 -0800 Message-Id: <20190222195410.9494-3-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190222195410.9494-1-jakub.kicinski@netronome.com> References: <20190222195410.9494-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When calling into devlink compat code make sure we have a reference on the netdevice on which the operation was invoked. Signed-off-by: Jakub Kicinski --- net/core/ethtool.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/net/core/ethtool.c b/net/core/ethtool.c index 1320e8dce559..6832476dfcaf 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c @@ -805,11 +805,14 @@ static noinline_for_stack int ethtool_get_drvinfo(struct net_device *dev, if (ops->get_eeprom_len) info.eedump_len = ops->get_eeprom_len(dev); - rtnl_unlock(); - if (!info.fw_version[0]) + if (!info.fw_version[0]) { + dev_hold(dev); + rtnl_unlock(); devlink_compat_running_version(dev, info.fw_version, sizeof(info.fw_version)); - rtnl_lock(); + rtnl_lock(); + dev_put(dev); + } if (copy_to_user(useraddr, &info, sizeof(info))) return -EFAULT; @@ -2043,9 +2046,11 @@ static noinline_for_stack int ethtool_flash_device(struct net_device *dev, if (!dev->ethtool_ops->flash_device) { int ret; + dev_hold(dev); rtnl_unlock(); ret = devlink_compat_flash_update(dev, efl.data); rtnl_lock(); + dev_put(dev); return ret; } From patchwork Fri Feb 22 19:54:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1047105 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="CGXIHfG4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 445hr15Shbz9s9L for ; Sat, 23 Feb 2019 06:54:25 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726979AbfBVTyY (ORCPT ); Fri, 22 Feb 2019 14:54:24 -0500 Received: from mail-qt1-f196.google.com ([209.85.160.196]:35979 "EHLO mail-qt1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726955AbfBVTyX (ORCPT ); Fri, 22 Feb 2019 14:54:23 -0500 Received: by mail-qt1-f196.google.com with SMTP id p25so3924009qtb.3 for ; Fri, 22 Feb 2019 11:54:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XnINPVcl62f4wsnCAF3REDBTtZ5/QQelD+BjuG2m+BI=; b=CGXIHfG4ou3xFGWrWOWq0dgG0Eux0FshtTLZFCGhH8SnoD7RoO8JVjoALw0qXj/Vs8 XI3zgo02bXSTkIx+cuLG4ixBR1Bp1QVgm7YthlbXAuhLiMISjJv8MpUK4m9kRytMDjR5 ZvY2lFIHRfsErZw+Odm6o+jnQj4f2wYhlcZhAHqVO0cw1CdfzSszEurNJOXRbLVhJHuZ r9ydFXyQ01dFMyzwH0yU3kg4fRUPpestBmu02SGl66Kp20p2a41pLHF5WM184Xphw0xi xLvCPnLQ5dIIwdYfR9ouSWlNe3ByY5mlr6JC7g4Ehz07Bq7biiEHMPSelUSyBFey5KEd JQ/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XnINPVcl62f4wsnCAF3REDBTtZ5/QQelD+BjuG2m+BI=; b=WqSKlMrcyqqDXIKg+HtI0EUg4dbvywQ2bWG5upBkyQtuZbcsr+eWExIk2gq8reX9lw y7Dj0IOrJSRTZQ8vyHCOEQ/81JRWBOEW7Fl85JvX6k+bfDUXSiuHfqTLGeciBiB1c9LE huWABUcdFl5lRhGxe5xIvyKH5BYbUUDQK80bhTqJDciyLzumXuCSU2dpur5YadtBM0pR X5P88Oi7ukyy8sxpM+c88NLgBt93HAiFDOfYkhGUf7LRbkjzUqmAE9i5hnL0Pd0lJg1L /BYATJ4gEWUFybrWsaUq+HpEC0jwoyG9ZzBhkcK5fIqhlyNhs0WNYG6zAAj/tL3lPN5l +bGA== X-Gm-Message-State: AHQUAuYarji0LB/XZQ1LoKDfJI1dj1xAlmjeI2gDO4YIQSoU6rP57Sct mAjJFEESOtEtnmowUWBfFZWRxw== X-Google-Smtp-Source: AHgI3IbX0hEW81DHJN8m1CNXsOXqOVY6t718Sdb1zhHI3zD5XeHPVwHwYvx5qqHMGfNDymd/iAAg2g== X-Received: by 2002:a0c:d121:: with SMTP id a30mr4698545qvh.0.1550865262263; Fri, 22 Feb 2019 11:54:22 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r30sm1605280qtj.45.2019.02.22.11.54.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Feb 2019 11:54:21 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, jiri@resnulli.us Cc: mkubecek@suse.cz, andrew@lunn.ch, f.fainelli@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski Subject: [PATCH net-next v2 3/5] devlink: create a special NDO for getting the devlink instance Date: Fri, 22 Feb 2019 11:54:08 -0800 Message-Id: <20190222195410.9494-4-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190222195410.9494-1-jakub.kicinski@netronome.com> References: <20190222195410.9494-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Instead of iterating over all devlink ports add a NDO which will return the devlink instance from the driver. v2: add the netdev_to_devlink() helper (Michal) Suggested-by: Jiri Pirko Signed-off-by: Jakub Kicinski Reviewed-by: Florian Fainelli --- include/linux/netdevice.h | 6 ++++ include/net/devlink.h | 9 ++++++ net/core/devlink.c | 58 ++++++++++----------------------------- 3 files changed, 30 insertions(+), 43 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index aab4d9f6613d..eebcef6b8191 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -940,6 +940,8 @@ struct dev_ifalias { char ifalias[]; }; +struct devlink; + /* * This structure defines the management hooks for network devices. * The following hooks can be defined; unless noted otherwise, they are @@ -1248,6 +1250,9 @@ struct dev_ifalias { * that got dropped are freed/returned via xdp_return_frame(). * Returns negative number, means general error invoking ndo, meaning * no frames were xmit'ed and core-caller will free all frames. + * struct devlink *(*ndo_get_devlink)(struct net_device *dev); + * Get devlink instance associated with a given netdev. + * Called with a reference on the device only, rtnl_lock is not held. */ struct net_device_ops { int (*ndo_init)(struct net_device *dev); @@ -1446,6 +1451,7 @@ struct net_device_ops { u32 flags); int (*ndo_xsk_async_xmit)(struct net_device *dev, u32 queue_id); + struct devlink * (*ndo_get_devlink)(struct net_device *dev); }; /** diff --git a/include/net/devlink.h b/include/net/devlink.h index f9f7fe974652..7f5a0bdca228 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -538,6 +538,15 @@ static inline struct devlink *priv_to_devlink(void *priv) return container_of(priv, struct devlink, priv); } +static inline struct devlink *netdev_to_devlink(struct net_device *dev) +{ +#if IS_ENABLED(CONFIG_NET_DEVLINK) + if (dev->netdev_ops->ndo_get_devlink) + return dev->netdev_ops->ndo_get_devlink(dev); +#endif + return NULL; +} + struct ib_device; #if IS_ENABLED(CONFIG_NET_DEVLINK) diff --git a/net/core/devlink.c b/net/core/devlink.c index 05e04ea0a5c7..31e9494e7fc3 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -6397,9 +6397,6 @@ static void __devlink_compat_running_version(struct devlink *devlink, struct sk_buff *msg; int rem, err; - if (!devlink->ops->info_get) - return; - msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); if (!msg) return; @@ -6431,55 +6428,30 @@ static void __devlink_compat_running_version(struct devlink *devlink, void devlink_compat_running_version(struct net_device *dev, char *buf, size_t len) { - struct devlink_port *devlink_port; struct devlink *devlink; - mutex_lock(&devlink_mutex); - list_for_each_entry(devlink, &devlink_list, list) { - mutex_lock(&devlink->lock); - list_for_each_entry(devlink_port, &devlink->port_list, list) { - if (devlink_port->type == DEVLINK_PORT_TYPE_ETH && - devlink_port->type_dev == dev) { - __devlink_compat_running_version(devlink, - buf, len); - mutex_unlock(&devlink->lock); - goto out; - } - } - mutex_unlock(&devlink->lock); - } -out: - mutex_unlock(&devlink_mutex); + devlink = netdev_to_devlink(dev); + if (!devlink || !devlink->ops->info_get) + return; + + mutex_lock(&devlink->lock); + __devlink_compat_running_version(devlink, buf, len); + mutex_unlock(&devlink->lock); } int devlink_compat_flash_update(struct net_device *dev, const char *file_name) { - struct devlink_port *devlink_port; struct devlink *devlink; + int ret; - mutex_lock(&devlink_mutex); - list_for_each_entry(devlink, &devlink_list, list) { - mutex_lock(&devlink->lock); - list_for_each_entry(devlink_port, &devlink->port_list, list) { - int ret = -EOPNOTSUPP; - - if (devlink_port->type != DEVLINK_PORT_TYPE_ETH || - devlink_port->type_dev != dev) - continue; - - mutex_unlock(&devlink_mutex); - if (devlink->ops->flash_update) - ret = devlink->ops->flash_update(devlink, - file_name, - NULL, NULL); - mutex_unlock(&devlink->lock); - return ret; - } - mutex_unlock(&devlink->lock); - } - mutex_unlock(&devlink_mutex); + devlink = netdev_to_devlink(dev); + if (!devlink || !devlink->ops->flash_update) + return -EOPNOTSUPP; - return -EOPNOTSUPP; + mutex_lock(&devlink->lock); + ret = devlink->ops->flash_update(devlink, file_name, NULL, NULL); + mutex_unlock(&devlink->lock); + return ret; } static int __init devlink_init(void) From patchwork Fri Feb 22 19:54:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1047106 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="b95SI0V2"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 445hr34dbzz9s9L for ; Sat, 23 Feb 2019 06:54:27 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727034AbfBVTy0 (ORCPT ); Fri, 22 Feb 2019 14:54:26 -0500 Received: from mail-qt1-f195.google.com ([209.85.160.195]:35013 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726973AbfBVTyZ (ORCPT ); Fri, 22 Feb 2019 14:54:25 -0500 Received: by mail-qt1-f195.google.com with SMTP id p48so3929872qtk.2 for ; Fri, 22 Feb 2019 11:54:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=46Bkh9g8Za9KDBwiZKxAy7D4WEXVaZo60slylBvX2DM=; b=b95SI0V2qKwmPrVBCqZNIrWWmkTteCjIDiiX/5QGya30rIH93kLieCYI4HpZ2aAvgf KnRBuonGqYo9QJXJA1Jy+d9gAumidYxkEfpnLIr8Ulkq7XVrCCtnQiQakChdK7i6z0HM thJzXjNtl+LPmIMYAMPQp0t/EvjGf+6aejyTnqvCCHRxnK18hGk0IY1dgKswXVjUBkXn OZieQzVtaresRJqa9h+PMfrS1z82rlroAqMlpKqDXKUlf+HumAsDuti4o88ZaHtdaSTM OR7GsmsWac79MgqK2AUVvE2P6MnVvOfiyE5ZcJ2vWEEwAj1dVOk7990DDojduPOICWGR 7wDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=46Bkh9g8Za9KDBwiZKxAy7D4WEXVaZo60slylBvX2DM=; b=sBm/CaM1rnvZpeoXGn+eb0QgEcGmi29yiMokNfHzWZHuxFuK3q/pjcA7nqgTPNJGJD eHxVBRlP5kYzgDLenQsYLkvizWnhYZ0c2ICT6nAf3ct+a3Sz5eJUjXqY39eLHaTYjYta RMh6iKdSCWomAZ1f7gXg5obWTV3A6pZZBxk/0PHZOyF3xDK/WoguxZRUo2Sfo5S9vlnk KH91LU68lpViCOpBlhOvFQt7vX4yQfNkVEcjZkNGlwjpIoX2Je0Ojqca0TufgN1wxpWG nIkcNZYCZbX5PPsX+hvjgHbGYZmCfUrPKfLNevQJIRAXksSFUYSBwFInBounJisp6Ty+ vsQw== X-Gm-Message-State: AHQUAuYPrnA8OfkN6MME2kTAjat4vs1xhWZgHLA9sz1NIUpBCG8k3YiF bV+n81ZJm60PLz5ZcBUWWjEeFw== X-Google-Smtp-Source: AHgI3IahLehGP8bTk9t5zfCwzjIovrBVaFyaF/EAZL7JU3k/dyBzNsLfLyWqmtxesS4vXrjzD8YEQQ== X-Received: by 2002:aed:3bd2:: with SMTP id s18mr4411771qte.353.1550865263839; Fri, 22 Feb 2019 11:54:23 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r30sm1605280qtj.45.2019.02.22.11.54.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Feb 2019 11:54:23 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, jiri@resnulli.us Cc: mkubecek@suse.cz, andrew@lunn.ch, f.fainelli@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski Subject: [PATCH net-next v2 4/5] nfp: add .ndo_get_devlink Date: Fri, 22 Feb 2019 11:54:09 -0800 Message-Id: <20190222195410.9494-5-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190222195410.9494-1-jakub.kicinski@netronome.com> References: <20190222195410.9494-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Support getting devlink instance from a new NDO. Signed-off-by: Jakub Kicinski --- drivers/net/ethernet/netronome/nfp/nfp_app.h | 2 ++ drivers/net/ethernet/netronome/nfp/nfp_devlink.c | 11 +++++++++++ drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 1 + drivers/net/ethernet/netronome/nfp/nfp_net_repr.c | 1 + 4 files changed, 15 insertions(+) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_app.h b/drivers/net/ethernet/netronome/nfp/nfp_app.h index d578d856a009..f8d422713705 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_app.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_app.h @@ -433,4 +433,6 @@ int nfp_app_nic_vnic_alloc(struct nfp_app *app, struct nfp_net *nn, int nfp_app_nic_vnic_init_phy_port(struct nfp_pf *pf, struct nfp_app *app, struct nfp_net *nn, unsigned int id); +struct devlink *nfp_devlink_get_devlink(struct net_device *netdev); + #endif diff --git a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c index db2da99f6aa7..e9eca99cf493 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c @@ -376,3 +376,14 @@ void nfp_devlink_port_unregister(struct nfp_port *port) { devlink_port_unregister(&port->dl_port); } + +struct devlink *nfp_devlink_get_devlink(struct net_device *netdev) +{ + struct nfp_app *app; + + app = nfp_app_from_netdev(netdev); + if (!app) + return NULL; + + return priv_to_devlink(app->pf); +} diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 776f6c07701b..6d1b8816552e 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -3531,6 +3531,7 @@ const struct net_device_ops nfp_net_netdev_ops = { .ndo_udp_tunnel_del = nfp_net_del_vxlan_port, .ndo_bpf = nfp_net_xdp, .ndo_get_port_parent_id = nfp_port_get_port_parent_id, + .ndo_get_devlink = nfp_devlink_get_devlink, }; /** diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c index 62839807e21e..d2c803bb4e56 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c @@ -273,6 +273,7 @@ const struct net_device_ops nfp_repr_netdev_ops = { .ndo_set_features = nfp_port_set_features, .ndo_set_mac_address = eth_mac_addr, .ndo_get_port_parent_id = nfp_port_get_port_parent_id, + .ndo_get_devlink = nfp_devlink_get_devlink, }; void From patchwork Fri Feb 22 19:54:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1047107 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="BzdFo1vn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 445hr55kVqz9s9L for ; Sat, 23 Feb 2019 06:54:29 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727046AbfBVTy2 (ORCPT ); Fri, 22 Feb 2019 14:54:28 -0500 Received: from mail-qt1-f193.google.com ([209.85.160.193]:35015 "EHLO mail-qt1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726955AbfBVTy0 (ORCPT ); Fri, 22 Feb 2019 14:54:26 -0500 Received: by mail-qt1-f193.google.com with SMTP id p48so3929953qtk.2 for ; Fri, 22 Feb 2019 11:54:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NMNkzC8Ri0itmDMCbwDkcpwGc6DYiermiwOcT9uaoqE=; b=BzdFo1vn4rQJToxgpKNXE8JjewD0Elp8TBiEX9MGbaF9xmzFpIGcIaxD0zqaW07pb3 NGBH4pPAUqJHMw4GX73j+O/7QMDxfZL1s8EqlTEsv/wINxE5SmWZyPjSsqlTXrNGmq4W QSy5Miu1Xmj1Fmt3Vw/X3YgvexS+Q1vApSKYnD3fz+yv9X7/Ex2Y2D1vOiUvMLm0hlxx Ormmrq7EYc796xnbuaPpUehSb+Exd9ugkRle1k3XRh7L+KpqeF1oNe8XbAEAWz4Upm6C J2tFyAgx/Kq1O20flbulTpqpKIrCvp9vMUs6kc9Br5ekMeezTUxnSxS1v+9IIykDodjA +sNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NMNkzC8Ri0itmDMCbwDkcpwGc6DYiermiwOcT9uaoqE=; b=oBmlTNHnlA6IHesl23IxGtEsv1QFQBqjbrcVlclaFpXVn8cUyvVc69J9eRqai7mtrr 92sOUozzD/oXKlg2neIj3SDY0bOBXqs09eyM2VkRgZ87bVWup8zrAE94kKJZNxO+vwc/ O2B51Pqu46RlWy/HFbr2TDeovBUIICvq7oYevPaNb+GonlkAgPec5QeuZG5ufcwfgIkU ONCqbY0EoQMHsPG/gNhlTmXchip3owfJZJJUQLybw3HaG0y+MLAJQC1lTI60ZoY1iJPz ujPFc/HWZHaidYeJfIs3kRTOG6TSi5Buy9Sy63jkHwvPReHJKt+jIZ8q5w0QbgpKAb5t 32jg== X-Gm-Message-State: AHQUAuaAn1LM5ZX4ww0TFkffnSnn3B7BZ+jiBTtyptwac6SC0T2rw+Ij crECOf8XZfWrHvG/68h7jWwedg== X-Google-Smtp-Source: AHgI3IZ+ovSNrd6VVtykutBicrrGlQnBzkw2eIr/px/0o0fekta/tv1rCNGk4mekEIh3lDbHkBYeBQ== X-Received: by 2002:aed:3f05:: with SMTP id p5mr4479486qtf.114.1550865265357; Fri, 22 Feb 2019 11:54:25 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r30sm1605280qtj.45.2019.02.22.11.54.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Feb 2019 11:54:24 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, jiri@resnulli.us Cc: mkubecek@suse.cz, andrew@lunn.ch, f.fainelli@gmail.com, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski Subject: [PATCH net-next v2 5/5] nfp: remove ethtool flashing fallback Date: Fri, 22 Feb 2019 11:54:10 -0800 Message-Id: <20190222195410.9494-6-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190222195410.9494-1-jakub.kicinski@netronome.com> References: <20190222195410.9494-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Now that devlink fallback will be called reliably, we can remove the ethtool flashing code. Signed-off-by: Jakub Kicinski --- .../ethernet/netronome/nfp/nfp_net_ethtool.c | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c index 8f189149efc5..690b62718dbb 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c @@ -1234,28 +1234,6 @@ static int nfp_net_set_channels(struct net_device *netdev, return nfp_net_set_num_rings(nn, total_rx, total_tx); } -static int -nfp_net_flash_device(struct net_device *netdev, struct ethtool_flash *flash) -{ - struct nfp_app *app; - int ret; - - if (flash->region != ETHTOOL_FLASH_ALL_REGIONS) - return -EOPNOTSUPP; - - app = nfp_app_from_netdev(netdev); - if (!app) - return -EOPNOTSUPP; - - dev_hold(netdev); - rtnl_unlock(); - ret = nfp_flash_update_common(app->pf, flash->data, NULL); - rtnl_lock(); - dev_put(netdev); - - return ret; -} - static const struct ethtool_ops nfp_net_ethtool_ops = { .get_drvinfo = nfp_net_get_drvinfo, .get_link = ethtool_op_get_link, @@ -1266,7 +1244,6 @@ static const struct ethtool_ops nfp_net_ethtool_ops = { .get_sset_count = nfp_net_get_sset_count, .get_rxnfc = nfp_net_get_rxnfc, .set_rxnfc = nfp_net_set_rxnfc, - .flash_device = nfp_net_flash_device, .get_rxfh_indir_size = nfp_net_get_rxfh_indir_size, .get_rxfh_key_size = nfp_net_get_rxfh_key_size, .get_rxfh = nfp_net_get_rxfh, @@ -1292,7 +1269,6 @@ const struct ethtool_ops nfp_port_ethtool_ops = { .get_strings = nfp_port_get_strings, .get_ethtool_stats = nfp_port_get_stats, .get_sset_count = nfp_port_get_sset_count, - .flash_device = nfp_net_flash_device, .set_dump = nfp_app_set_dump, .get_dump_flag = nfp_app_get_dump_flag, .get_dump_data = nfp_app_get_dump_data,