From patchwork Fri Mar 1 08:13:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 1050017 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=resnulli.us Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="Aue0p4Wp"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 449hyx3D4gz9s2R for ; Fri, 1 Mar 2019 19:14:17 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733234AbfCAIOI (ORCPT ); Fri, 1 Mar 2019 03:14:08 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:38297 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731474AbfCAIOH (ORCPT ); Fri, 1 Mar 2019 03:14:07 -0500 Received: by mail-wm1-f66.google.com with SMTP id a188so4331795wmf.3 for ; Fri, 01 Mar 2019 00:14:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7H8LiHU17b8Jm69ueNjsQ1xhnOMG7IcH3dHXuWx7E/g=; b=Aue0p4WprGB0ZnEinmYecT2UyA9l2Kg6q8i/eD2iPyTcRHV3uIEu1oz830vUocsj9Y /mu3Uu8K/Hfcb7nXib0w35+gRL/+0bAIWYBpXevsQ+SxiKaYvYQgM4cWtzE8Amngz+CF xMvb7ComMuqyNQj+g8FsxjB15r8UqThiIq8pXY5JwgJ5InapeWGepS0Vcw68rpz9ayMN caWHQwdPpp/w+g2GTRbj78lrcHGZxmdzIvzFd9WV2gGHBNejMOF7GeIlyeaBiZbW1Ase TXCdCbWS6lZggfQQJrbnDCQJpEsn/0x1Db4kVAhp+TJJakklvbSXSFnfFcrL+7JBAfNy IlFg== 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; bh=7H8LiHU17b8Jm69ueNjsQ1xhnOMG7IcH3dHXuWx7E/g=; b=XZG+zoL9lSDOXZGKfxqxksSUwRVTjGssxNI7nIuSel+ynWU1q2q1haqNSsUF6gf2lA X/tUPRt+njihp5fQUB9wfOTOXfuwW8LUZB78PFaaMFb0JWlq15YWI5Q98KZcGG1hkrMk Kfjuh0SO5f/zQpBMuVFNZHW9UHrEP5ie55xbO21KzUWBCHIpEe21hSd7T30YqogxRU4P ybIG18nXFJaoJbwWDBKpCKqgcV1m4+rZSxV+gwyRkeobETtRWf0teFpb0AsCETpU+Ztv LEiL4ONYkOnViDYFcMnMAeg/64+Zw4vqwqxBNsJziefmByWd05zwzin3oehPaU5XKyeF QgmA== X-Gm-Message-State: AHQUAuY3fgtGXE++q0hj/mnTP7flB4wK7YuLq6pYlIGaw8o/TpsoclGl qRrjLhx3aQIlFZ1eTD+qFj3O1nsqst1LWw== X-Google-Smtp-Source: APXvYqwvjoGwlgu1YH+YBEylYJ1y5NHgs5GpeZ4I1JLWqcOsOjGZiHyCTF2btYTJ7PTCmT2sUy6FWQ== X-Received: by 2002:a7b:cf3a:: with SMTP id m26mr2333474wmg.144.1551428044637; Fri, 01 Mar 2019 00:14:04 -0800 (PST) Received: from localhost (ip-89-177-134-16.net.upcbroadband.cz. [89.177.134.16]) by smtp.gmail.com with ESMTPSA id h13sm16077611wrs.42.2019.03.01.00.14.04 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 01 Mar 2019 00:14:04 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, mlxsw@mellanox.com, idosch@mellanox.com, jakub.kicinski@netronome.com, dirk.vandermerwe@netronome.com, f.fainelli@gmail.com, andrew@lunn.ch, vivien.didelot@gmail.com Subject: [patch net-next 1/5] net: replace ndo_get_devlink for ndo_get_devlink_port Date: Fri, 1 Mar 2019 09:13:58 +0100 Message-Id: <20190301081402.6074-2-jiri@resnulli.us> X-Mailer: git-send-email 2.14.5 In-Reply-To: <20190301081402.6074-1-jiri@resnulli.us> References: <20190301081402.6074-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Follow-up patch is going to need a devlink port instance according to a netdev. Devlink port instance should be always available when devlink is used. So change the recently introduced ndo_get_devlink to ndo_get_devlink_port. With that, adjust the wrapper for the only user to get devlink pointer. Signed-off-by: Jiri Pirko Reviewed-by: Michal Kubecek Reviewed-by: Florian Fainelli --- drivers/net/ethernet/netronome/nfp/nfp_app.h | 2 +- drivers/net/ethernet/netronome/nfp/nfp_devlink.c | 10 +++++----- drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 2 +- drivers/net/ethernet/netronome/nfp/nfp_net_repr.c | 2 +- include/linux/netdevice.h | 6 +++--- include/net/devlink.h | 16 +++++++++++++--- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_app.h b/drivers/net/ethernet/netronome/nfp/nfp_app.h index f8d422713705..a6fda07fce43 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_app.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_app.h @@ -433,6 +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); +struct devlink_port *nfp_devlink_get_devlink_port(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 e9eca99cf493..f24a7fc11b9f 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c @@ -377,13 +377,13 @@ 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 devlink_port *nfp_devlink_get_devlink_port(struct net_device *netdev) { - struct nfp_app *app; + struct nfp_port *port; - app = nfp_app_from_netdev(netdev); - if (!app) + port = nfp_port_from_netdev(netdev); + if (!port) return NULL; - return priv_to_devlink(app->pf); + return &port->dl_port; } diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 6d1b8816552e..7dd6b3fbb394 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -3531,7 +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, + .ndo_get_devlink_port = nfp_devlink_get_devlink_port, }; /** diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c index d2c803bb4e56..bf621674f583 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c @@ -273,7 +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, + .ndo_get_devlink_port = nfp_devlink_get_devlink_port, }; void diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index c10b60297d28..dc9d72b8932a 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1251,8 +1251,8 @@ struct devlink; * 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. + * struct devlink_port *(*ndo_get_devlink_port)(struct net_device *dev); + * Get devlink port instance associated with a given netdev. * Called with a reference on the netdevice and devlink locks only, * rtnl_lock is not held. */ @@ -1453,7 +1453,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); + struct devlink_port * (*ndo_get_devlink_port)(struct net_device *dev); }; /** diff --git a/include/net/devlink.h b/include/net/devlink.h index 7f5a0bdca228..f34107def48e 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -538,15 +538,25 @@ 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) +static inline struct devlink_port * +netdev_to_devlink_port(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); + if (dev->netdev_ops->ndo_get_devlink_port) + return dev->netdev_ops->ndo_get_devlink_port(dev); #endif return NULL; } +static inline struct devlink *netdev_to_devlink(struct net_device *dev) +{ + struct devlink_port *devlink_port = netdev_to_devlink_port(dev); + + if (devlink_port) + return devlink_port->devlink; + return NULL; +} + struct ib_device; #if IS_ENABLED(CONFIG_NET_DEVLINK)