From patchwork Thu Mar 22 10:55:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889304 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="BEPli6wI"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406Nqv6zWMz9s1w for ; Thu, 22 Mar 2018 21:55:39 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754547AbeCVKze (ORCPT ); Thu, 22 Mar 2018 06:55:34 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:52677 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754088AbeCVKz0 (ORCPT ); Thu, 22 Mar 2018 06:55:26 -0400 Received: by mail-wm0-f65.google.com with SMTP id l9so15114050wmh.2 for ; Thu, 22 Mar 2018 03:55:25 -0700 (PDT) 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=Xg6LanMwVJzSP0+B5GMMl9SCDzTTXkFfcnLsQ0QCUgU=; b=BEPli6wIZVrww22lxva76Ifu+4MRMmWygwg0RdVhqIeI1rYv8NOD8SNEnSn5OHgbui edBO+2O4WSTQ2vUoAJ+9T4pwd7GoDAr3InGDCMoiH1Yce1ZJzABY/tCMopW61nbQYP2y bRRVy8bvfeQRi0UGQ9o+87r7uEVN4kre2Jl507mqX2bhXTrz/eKtXlQ6ry7qghN5lFvZ AbDgNuVLgCBHjOww/k7G5JlS2n78/k3UontV8gQbzn7JdxsynxSKVX9ZXoeGJhTDOn08 ZoJMHX5hLT76Ez+bleHJAnEsinqHQwaG18NT+0aJ9NODjG38uVsz8VrV7sQlQbRNPMwc f3wA== 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=Xg6LanMwVJzSP0+B5GMMl9SCDzTTXkFfcnLsQ0QCUgU=; b=W81kG4L26XcG1szatQotN/0UgMB0eIv7pI5ZXSszMEOJmwKQbpePpJWHUyUMAU0W0Q XITsrsU1QbIB/zPo+iL8C39m1aK9lYvb4rU0NUTVb5Uhny3I57/oe4GS3kyGNmp582a6 uDcHuWpN/CZs1dmlM6VZuPFCnvYP7HCD3L58pr464WDOWLWoLXT/MbwSWNKR7flLcZcj kfRhyYkD6qLIWeilKwK1QiYK0/L3ZoFbymrQvU57wreQXBxROr4VzqgEYq7TE5STgEVP 6L1KI4iR7ykcDqPIy96QV1doU0mPzTGooVujUA2JQ66GC1zrhjvidXdq8yQNYtyttLUC LBUA== X-Gm-Message-State: AElRT7HZoNkZLh4/bhBeAi0a7Tw1/Yspr03ngGGZoAn39kqqIAjsjwxZ MKIJkI7gt8tUZqVUA/Y7+C/ZJgBY X-Google-Smtp-Source: AG47ELtvu3vmy3dhVX0Y6Db6MY1f4cTyPeaQmOEbsm/cX3uUaQ8zPmrtHm/8KdfzE6DGm2Rdd6aH8g== X-Received: by 10.28.105.218 with SMTP id z87mr4973940wmh.100.1521716124615; Thu, 22 Mar 2018 03:55:24 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id c19sm1335011wmd.37.2018.03.22.03.55.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:24 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 01/12] devlink: introduce devlink_port_attrs_set Date: Thu, 22 Mar 2018 11:55:11 +0100 Message-Id: <20180322105522.8186-2-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Change existing setter for split port information into more generic attrs setter. Alongside with that, allow to set port number and subport number for split ports. Signed-off-by: Jiri Pirko --- drivers/net/ethernet/mellanox/mlxsw/core.c | 7 ++-- drivers/net/ethernet/mellanox/mlxsw/core.h | 3 +- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 4 +-- drivers/net/ethernet/mellanox/mlxsw/switchx2.c | 2 +- drivers/net/ethernet/netronome/nfp/nfp_devlink.c | 39 +++++++++++++++----- include/net/devlink.h | 20 +++++++---- include/uapi/linux/devlink.h | 3 ++ net/core/devlink.c | 46 ++++++++++++++++++------ 8 files changed, 93 insertions(+), 31 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c index 3529b545675d..dc924d5fb3b7 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c @@ -1713,15 +1713,16 @@ EXPORT_SYMBOL(mlxsw_core_port_fini); void mlxsw_core_port_eth_set(struct mlxsw_core *mlxsw_core, u8 local_port, void *port_driver_priv, struct net_device *dev, - bool split, u32 split_group) + u32 port_number, bool split, + u32 split_port_subnumber) { struct mlxsw_core_port *mlxsw_core_port = &mlxsw_core->ports[local_port]; struct devlink_port *devlink_port = &mlxsw_core_port->devlink_port; mlxsw_core_port->port_driver_priv = port_driver_priv; - if (split) - devlink_port_split_set(devlink_port, split_group); + devlink_port_attrs_set(devlink_port, port_number, + split, split_port_subnumber); devlink_port_type_eth_set(devlink_port, dev); } EXPORT_SYMBOL(mlxsw_core_port_eth_set); diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.h b/drivers/net/ethernet/mellanox/mlxsw/core.h index 5ddafd74dc00..10589abae67f 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.h +++ b/drivers/net/ethernet/mellanox/mlxsw/core.h @@ -201,7 +201,8 @@ int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port); void mlxsw_core_port_fini(struct mlxsw_core *mlxsw_core, u8 local_port); void mlxsw_core_port_eth_set(struct mlxsw_core *mlxsw_core, u8 local_port, void *port_driver_priv, struct net_device *dev, - bool split, u32 split_group); + u32 port_number, bool split, + u32 split_port_subnumber); void mlxsw_core_port_ib_set(struct mlxsw_core *mlxsw_core, u8 local_port, void *port_driver_priv); void mlxsw_core_port_clear(struct mlxsw_core *mlxsw_core, u8 local_port, diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index a120602bca26..59be0bf14127 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -2927,8 +2927,8 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u8 local_port, } mlxsw_core_port_eth_set(mlxsw_sp->core, mlxsw_sp_port->local_port, - mlxsw_sp_port, dev, mlxsw_sp_port->split, - module); + mlxsw_sp_port, dev, module + 1, + mlxsw_sp_port->split, lane / width); mlxsw_core_schedule_dw(&mlxsw_sp_port->periodic_hw_stats.update_dw, 0); return 0; diff --git a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c index f3c29bbf07e2..eddfcef320f1 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c +++ b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c @@ -1149,7 +1149,7 @@ static int __mlxsw_sx_port_eth_create(struct mlxsw_sx *mlxsw_sx, u8 local_port, } mlxsw_core_port_eth_set(mlxsw_sx->core, mlxsw_sx_port->local_port, - mlxsw_sx_port, dev, false, 0); + mlxsw_sx_port, dev, module + 1, false, 0); mlxsw_sx->ports[local_port] = mlxsw_sx_port; return 0; diff --git a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c index eb0fc614673d..3c0f0560f834 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c @@ -162,22 +162,45 @@ const struct devlink_ops nfp_devlink_ops = { .eswitch_mode_get = nfp_devlink_eswitch_mode_get, }; -int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port) +static int nfp_devlink_port_attrs_set(struct nfp_port *port) { struct nfp_eth_table_port eth_port; + int ret; + + switch (port->type) { + case NFP_PORT_PHYS_PORT: + rtnl_lock(); + ret = nfp_devlink_fill_eth_port(port, ð_port); + rtnl_unlock(); + if (ret) + return ret; + + devlink_port_attrs_set(&port->dl_port, eth_port.label_port, + eth_port.is_split, + eth_port.label_subport); + break; + case NFP_PORT_PF_PORT: + devlink_port_attrs_set(&port->dl_port, port->pf_id, false, 0); + break; + case NFP_PORT_VF_PORT: + devlink_port_attrs_set(&port->dl_port, port->vf_id, false, 0); + break; + default: + break; + } + return 0; +} + +int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port) +{ struct devlink *devlink; int ret; - rtnl_lock(); - ret = nfp_devlink_fill_eth_port(port, ð_port); - rtnl_unlock(); + devlink_port_type_eth_set(&port->dl_port, port->netdev); + ret = nfp_devlink_port_attrs_set(port); if (ret) return ret; - devlink_port_type_eth_set(&port->dl_port, port->netdev); - if (eth_port.is_split) - devlink_port_split_set(&port->dl_port, eth_port.label_port); - devlink = priv_to_devlink(app->pf); return devlink_port_register(devlink, &port->dl_port, port->eth_id); diff --git a/include/net/devlink.h b/include/net/devlink.h index c83125ad20ff..29c3bc260a3e 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -35,6 +35,13 @@ struct devlink { char priv[0] __aligned(NETDEV_ALIGN); }; +struct devlink_port_attrs { + bool set; + u32 port_number; /* same value as "split group" */ + bool split; + u32 split_subport_number; +}; + struct devlink_port { struct list_head list; struct devlink *devlink; @@ -43,8 +50,7 @@ struct devlink_port { enum devlink_port_type type; enum devlink_port_type desired_type; void *type_dev; - bool split; - u32 split_group; + struct devlink_port_attrs attrs; }; struct devlink_sb_pool_info { @@ -373,8 +379,9 @@ void devlink_port_type_eth_set(struct devlink_port *devlink_port, void devlink_port_type_ib_set(struct devlink_port *devlink_port, struct ib_device *ibdev); void devlink_port_type_clear(struct devlink_port *devlink_port); -void devlink_port_split_set(struct devlink_port *devlink_port, - u32 split_group); +void devlink_port_attrs_set(struct devlink_port *devlink_port, + u32 port_number, bool split, + u32 split_subport_number); int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, u32 size, u16 ingress_pools_count, u16 egress_pools_count, u16 ingress_tc_count, @@ -468,8 +475,9 @@ static inline void devlink_port_type_clear(struct devlink_port *devlink_port) { } -static inline void devlink_port_split_set(struct devlink_port *devlink_port, - u32 split_group) +static inline void devlink_port_attrs_set(struct devlink_port *devlink_port, + u32 port_number, bool split, + u32 split_subport_number) { } diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h index 1df65a4c2044..15b031a5ee7a 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -224,6 +224,9 @@ enum devlink_attr { DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID, /* u64 */ DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,/* u64 */ + DEVLINK_ATTR_PORT_NUMBER, /* u32 */ + DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER, /* u32 */ + /* add new attributes above here, update the policy in devlink.c */ __DEVLINK_ATTR_MAX, diff --git a/net/core/devlink.c b/net/core/devlink.c index f23e5ed7c90f..b0fca9644722 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -453,6 +453,25 @@ static void devlink_notify(struct devlink *devlink, enum devlink_command cmd) msg, 0, DEVLINK_MCGRP_CONFIG, GFP_KERNEL); } +static int devlink_nl_port_attrs_put(struct sk_buff *msg, + struct devlink_port *devlink_port) +{ + struct devlink_port_attrs *attrs = &devlink_port->attrs; + + if (!attrs->set) + return 0; + if (nla_put_u32(msg, DEVLINK_ATTR_PORT_NUMBER, attrs->port_number)) + return -EMSGSIZE; + if (!attrs->split) + return 0; + if (nla_put_u32(msg, DEVLINK_ATTR_PORT_SPLIT_GROUP, attrs->port_number)) + return -EMSGSIZE; + if (nla_put_u32(msg, DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER, + attrs->split_subport_number)) + return -EMSGSIZE; + return 0; +} + static int devlink_nl_port_fill(struct sk_buff *msg, struct devlink *devlink, struct devlink_port *devlink_port, enum devlink_command cmd, u32 portid, @@ -492,9 +511,7 @@ static int devlink_nl_port_fill(struct sk_buff *msg, struct devlink *devlink, ibdev->name)) goto nla_put_failure; } - if (devlink_port->split && - nla_put_u32(msg, DEVLINK_ATTR_PORT_SPLIT_GROUP, - devlink_port->split_group)) + if (devlink_nl_port_attrs_put(msg, devlink_port)) goto nla_put_failure; genlmsg_end(msg, hdr); @@ -2972,19 +2989,28 @@ void devlink_port_type_clear(struct devlink_port *devlink_port) EXPORT_SYMBOL_GPL(devlink_port_type_clear); /** - * devlink_port_split_set - Set port is split + * devlink_port_attrs_set - Set port attributes * * @devlink_port: devlink port - * @split_group: split group - identifies group split port is part of + * @port_number: number of the port that is facing user, for example + * the front panel port number + * @split: indicates if this is split port + * @split_subport_number: if the port is split, this is the number + * of subport. */ -void devlink_port_split_set(struct devlink_port *devlink_port, - u32 split_group) +void devlink_port_attrs_set(struct devlink_port *devlink_port, + u32 port_number, bool split, + u32 split_subport_number) { - devlink_port->split = true; - devlink_port->split_group = split_group; + struct devlink_port_attrs *attrs = &devlink_port->attrs; + + attrs->set = true; + attrs->port_number = port_number; + attrs->split = split; + attrs->split_subport_number = split_subport_number; devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); } -EXPORT_SYMBOL_GPL(devlink_port_split_set); +EXPORT_SYMBOL_GPL(devlink_port_attrs_set); int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, u32 size, u16 ingress_pools_count, From patchwork Thu Mar 22 10:55:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889303 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="V9yS2KtB"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406Nqr0W6lz9s1X for ; Thu, 22 Mar 2018 21:55:36 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754545AbeCVKzb (ORCPT ); Thu, 22 Mar 2018 06:55:31 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:40620 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754232AbeCVKz1 (ORCPT ); Thu, 22 Mar 2018 06:55:27 -0400 Received: by mail-wr0-f194.google.com with SMTP id z8so8192812wrh.7 for ; Thu, 22 Mar 2018 03:55:26 -0700 (PDT) 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=IMsvwluGolkHILc8FWCatF+B6H1OfKEUkmh/q/D5dmg=; b=V9yS2KtBW1wXk3cx2N3B+kWeKv5HkcqC8PAHQRuwjoVlrfvIheX+9FWdyA+54Zd4j5 rSMT8hrMxRQ1tS2aNZU3BMrxuNqIhuLsBRkvxkKb8X+2nyHk1nNzlAQ01KhD/sI//JhS TQaVLM5JZYb7GZefx4LkvXqVsPQYvQFUglnZdjWLTUBhLB2wIRxcaC85kV5GJvrEwJgy upCAPXBKHhWl62xYrT/ZbYWcCdmZWixtXssCwoJ/au24dkFDkBZVatEP75uxlVBuVKFU 6bwK0wpWEUQtbY3F2ZjL8UkcjvECqUKsxiZUuFcoENvZ/iZ9dmfgOXle0Q0ExjqHlONo qt+w== 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=IMsvwluGolkHILc8FWCatF+B6H1OfKEUkmh/q/D5dmg=; b=TYCiXiYhURWdiV4yRMWby3OQ1Bog9iwB/AOOMH2WJN9yMZPwlK3eBOhqnHu5qU+enC uoTedcoeHACh/erg+eRtnPXPC0d1cgvWB9Xxpl+eW+5mx+6RgKpDH5TDeNCDKCCCmBMq jJoZXaUEhmohGryuSSdJ5wAr8mle/+iUMkKtklTb3JLPrRDYZSustx5cuCVz6BHFL2qc UnCDxB8JlO7hqAUqb/Lat+m0gjFwFi8ADvSf2EbJJxz5bTO9PHP3Z0FWzi/CmlckZk84 kNDIT+/TCkv7PfM4PrPXEulgA0Dlls/cdeSscy4Phf+yfe3AsuPWnhy2ed79UydxE17/ 9z/g== X-Gm-Message-State: AElRT7HN3CVEZhxpdX3vOR7Lbp79gmhoOi/TpM5Mw3sPJJW4tg4SS+Wn JmhOFgGgk65c6YYgWLbUtNyBTexO X-Google-Smtp-Source: AG47ELvGk3U7ljkgqS2GCRBtiZmc+c1DV29KDc75kFVSs1rxj+nmKK3OHqWLnxGKQ7cPOrWO2a602g== X-Received: by 10.223.133.197 with SMTP id 5mr18857571wru.130.1521716125565; Thu, 22 Mar 2018 03:55:25 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id u127sm8381845wmd.30.2018.03.22.03.55.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:25 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 02/12] devlink: extend attrs_set for setting port flavours Date: Thu, 22 Mar 2018 11:55:12 +0100 Message-Id: <20180322105522.8186-3-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Devlink ports can have specific flavour according to the purpose of use. This patch extend attrs_set so the driver can say which flavour port has. Initial flavours are: physical, pf_rep, vf_rep, cpu, dsa User can query this to see right away what is the purpose of each port. Signed-off-by: Jiri Pirko --- drivers/net/ethernet/mellanox/mlxsw/core.c | 4 ++-- drivers/net/ethernet/netronome/nfp/nfp_devlink.c | 12 +++++++++--- include/net/devlink.h | 3 +++ include/uapi/linux/devlink.h | 19 +++++++++++++++++++ net/core/devlink.c | 5 +++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c index dc924d5fb3b7..0b6e646fed75 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c @@ -1721,8 +1721,8 @@ void mlxsw_core_port_eth_set(struct mlxsw_core *mlxsw_core, u8 local_port, struct devlink_port *devlink_port = &mlxsw_core_port->devlink_port; mlxsw_core_port->port_driver_priv = port_driver_priv; - devlink_port_attrs_set(devlink_port, port_number, - split, split_port_subnumber); + devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, + port_number, split, split_port_subnumber); devlink_port_type_eth_set(devlink_port, dev); } EXPORT_SYMBOL(mlxsw_core_port_eth_set); diff --git a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c index 3c0f0560f834..e3a46faaadc6 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c @@ -175,15 +175,21 @@ static int nfp_devlink_port_attrs_set(struct nfp_port *port) if (ret) return ret; - devlink_port_attrs_set(&port->dl_port, eth_port.label_port, + devlink_port_attrs_set(&port->dl_port, + DEVLINK_PORT_FLAVOUR_PHYSICAL, + eth_port.label_port, eth_port.is_split, eth_port.label_subport); break; case NFP_PORT_PF_PORT: - devlink_port_attrs_set(&port->dl_port, port->pf_id, false, 0); + devlink_port_attrs_set(&port->dl_port, + DEVLINK_PORT_FLAVOUR_PF_REP, + port->pf_id, false, 0); break; case NFP_PORT_VF_PORT: - devlink_port_attrs_set(&port->dl_port, port->vf_id, false, 0); + devlink_port_attrs_set(&port->dl_port, + DEVLINK_PORT_FLAVOUR_VF_REP, + port->vf_id, false, 0); break; default: break; diff --git a/include/net/devlink.h b/include/net/devlink.h index 29c3bc260a3e..900295afc521 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -37,6 +37,7 @@ struct devlink { struct devlink_port_attrs { bool set; + enum devlink_port_flavour flavour; u32 port_number; /* same value as "split group" */ bool split; u32 split_subport_number; @@ -380,6 +381,7 @@ void devlink_port_type_ib_set(struct devlink_port *devlink_port, struct ib_device *ibdev); void devlink_port_type_clear(struct devlink_port *devlink_port); void devlink_port_attrs_set(struct devlink_port *devlink_port, + enum devlink_port_flavour flavour, u32 port_number, bool split, u32 split_subport_number); int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, @@ -476,6 +478,7 @@ static inline void devlink_port_type_clear(struct devlink_port *devlink_port) } static inline void devlink_port_attrs_set(struct devlink_port *devlink_port, + enum devlink_port_flavour flavour, u32 port_number, bool split, u32 split_subport_number) { diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h index 15b031a5ee7a..74d0e620059b 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -132,6 +132,24 @@ enum devlink_eswitch_encap_mode { DEVLINK_ESWITCH_ENCAP_MODE_BASIC, }; +enum devlink_port_flavour { + DEVLINK_PORT_FLAVOUR_PHYSICAL, /* Any kind of a port physically + * facing the user. + */ + DEVLINK_PORT_FLAVOUR_PF_REP, /* Port represents a SR-IOV physical + * function counterpart port of + * embedded switch. + */ + DEVLINK_PORT_FLAVOUR_VF_REP, /* Port represents a SR-IOV virtual + * function counterpart port of + * embedded switch. + */ + DEVLINK_PORT_FLAVOUR_CPU, /* CPU port */ + DEVLINK_PORT_FLAVOUR_DSA, /* Distributed switch architecture + * interconnect port. + */ +}; + enum devlink_attr { /* don't change the order or add anything between, this is ABI! */ DEVLINK_ATTR_UNSPEC, @@ -224,6 +242,7 @@ enum devlink_attr { DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID, /* u64 */ DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,/* u64 */ + DEVLINK_ATTR_PORT_FLAVOUR, /* u16 */ DEVLINK_ATTR_PORT_NUMBER, /* u32 */ DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER, /* u32 */ diff --git a/net/core/devlink.c b/net/core/devlink.c index b0fca9644722..782476a1ff8f 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -460,6 +460,8 @@ static int devlink_nl_port_attrs_put(struct sk_buff *msg, if (!attrs->set) return 0; + if (nla_put_u16(msg, DEVLINK_ATTR_PORT_FLAVOUR, attrs->flavour)) + return -EMSGSIZE; if (nla_put_u32(msg, DEVLINK_ATTR_PORT_NUMBER, attrs->port_number)) return -EMSGSIZE; if (!attrs->split) @@ -2992,6 +2994,7 @@ EXPORT_SYMBOL_GPL(devlink_port_type_clear); * devlink_port_attrs_set - Set port attributes * * @devlink_port: devlink port + * @flavour: flavour of the port * @port_number: number of the port that is facing user, for example * the front panel port number * @split: indicates if this is split port @@ -2999,12 +3002,14 @@ EXPORT_SYMBOL_GPL(devlink_port_type_clear); * of subport. */ void devlink_port_attrs_set(struct devlink_port *devlink_port, + enum devlink_port_flavour flavour, u32 port_number, bool split, u32 split_subport_number) { struct devlink_port_attrs *attrs = &devlink_port->attrs; attrs->set = true; + attrs->flavour = flavour; attrs->port_number = port_number; attrs->split = split; attrs->split_subport_number = split_subport_number; From patchwork Thu Mar 22 10:55:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889314 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="vnZLKb9q"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406Nrl1NY9z9s1X for ; Thu, 22 Mar 2018 21:56:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754583AbeCVK4U (ORCPT ); Thu, 22 Mar 2018 06:56:20 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:35753 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754525AbeCVKz1 (ORCPT ); Thu, 22 Mar 2018 06:55:27 -0400 Received: by mail-wr0-f193.google.com with SMTP id 80so7113524wrb.2 for ; Thu, 22 Mar 2018 03:55:27 -0700 (PDT) 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=keBnWoWY5XNCBkIUdZJ45l/QfhMPREjP5wFYSFrOntA=; b=vnZLKb9qTk9p5EMkH2FHPiR6/vGuufwSlGt3/D7aeXz1V/r7ph4jMUmC/ngjn5obN7 QwDEQgv08Lr2dRCcL6HwZrVEZdf89zNS5dvO03RcogwT8LbC0qdnersL0xCRU1wEHiyg 9NEuDRAG5Pp3gJsZUJJn6fX+mRJtEVbHVOH7bicpP98ns9Br4Xs1r/7eHpwgRExE0i+a SdDzrhYt9iw78L974lUnud5GqA0mIIALcZiDBfZVFuiyQRLPOBnfDeK+xJng9onF8o1W ZO1E5fSp3gBxNa92hwJ/aj6YoREiUzm0S7ijvCaPbaaxY385wm+nXI+LYf7O+tv4cTMF oVPg== 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=keBnWoWY5XNCBkIUdZJ45l/QfhMPREjP5wFYSFrOntA=; b=gp3DUWFRO8EojV6P9c0nlaHWaGAWDlpqpNjSlDMy+SL9xj8CSFuQTpA7M6yuUDtA/c xqLZY1/TU5XgPUUJW8BTI0fzVWAoSmK8V1yDwI5f4c3KxKbqzpG8JLJWp1QBe1kjmspm dqmv0bg5+CXG5wcMA76myd2427vAiFoazglSFDb99K9OpTJCWDXFsX06McJOO2v0/wz1 zu1obpHkZ6qcqVi0kBo61pVTCp8HRYL+pKuX57vRXiVtmxZ6nMS4UTEraiSvaIoKdx1D 79y8SWDoG7YYuYzV8zV03YXextCWgM/lKGeo7Gc6A+/dx1e9zLtFOCzG0Jd/lCQ3PWw7 Tssw== X-Gm-Message-State: AElRT7F8TXZvq38RrNBBoSTJktSYy6UC/pZkzJAQ0UCUs9TdG3oSh8Kf eZVWLcAE4XyPE3iFFcY4U8Sj7Qn0 X-Google-Smtp-Source: AG47ELvZXV8wT2rs/mmcVKskgXP+46MSYRgZKf63i1XogXIEZkyuQ3PmyQWDprfTUXUDCbsV0IV3Nw== X-Received: by 10.223.179.9 with SMTP id j9mr15607361wrd.276.1521716126508; Thu, 22 Mar 2018 03:55:26 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id s126sm7225462wmd.38.2018.03.22.03.55.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:26 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 03/12] devlink: introduce a helper to generate physical port names Date: Thu, 22 Mar 2018 11:55:13 +0100 Message-Id: <20180322105522.8186-4-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Each driver implements physical port name generation by itself. However as devlink has all needed info, it can easily do the job for all its users. So implement this helper in devlink. Signed-off-by: Jiri Pirko --- include/net/devlink.h | 9 +++++++++ net/core/devlink.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/include/net/devlink.h b/include/net/devlink.h index 900295afc521..2e5bfe7723b4 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -384,6 +384,8 @@ void devlink_port_attrs_set(struct devlink_port *devlink_port, enum devlink_port_flavour flavour, u32 port_number, bool split, u32 split_subport_number); +int devlink_port_get_phys_port_name(struct devlink_port *devlink_port, + char *name, size_t len); int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, u32 size, u16 ingress_pools_count, u16 egress_pools_count, u16 ingress_tc_count, @@ -484,6 +486,13 @@ static inline void devlink_port_attrs_set(struct devlink_port *devlink_port, { } +static inline int +devlink_port_get_phys_port_name(struct devlink_port *devlink_port, + char *name, size_t len) +{ + return -EOPNOTSUPP; +} + static inline int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, u32 size, u16 ingress_pools_count, diff --git a/net/core/devlink.c b/net/core/devlink.c index 782476a1ff8f..4ba69383ab58 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -3017,6 +3017,45 @@ void devlink_port_attrs_set(struct devlink_port *devlink_port, } EXPORT_SYMBOL_GPL(devlink_port_attrs_set); +int devlink_port_get_phys_port_name(struct devlink_port *devlink_port, + char *name, size_t len) +{ + struct devlink_port_attrs *attrs = &devlink_port->attrs; + int n = 0; + + if (!attrs->set) + return -EOPNOTSUPP; + + switch (attrs->flavour) { + case DEVLINK_PORT_FLAVOUR_PHYSICAL: + if (!attrs->split) + n = snprintf(name, len, "p%u", attrs->port_number); + else + n = snprintf(name, len, "p%us%u", attrs->port_number, + attrs->split_subport_number); + break; + case DEVLINK_PORT_FLAVOUR_PF_REP: + n = snprintf(name, len, "pf%d", attrs->port_number); + break; + case DEVLINK_PORT_FLAVOUR_VF_REP: + n = snprintf(name, len, "vf%d", attrs->port_number); + break; + case DEVLINK_PORT_FLAVOUR_CPU: + case DEVLINK_PORT_FLAVOUR_DSA: + /* As CPU and DSA ports do not have a netdevice associated + * case should not ever happen. + */ + WARN_ON(1); + return -EINVAL; + } + + if (n >= len) + return -EINVAL; + + return 0; +} +EXPORT_SYMBOL_GPL(devlink_port_get_phys_port_name); + int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, u32 size, u16 ingress_pools_count, u16 egress_pools_count, u16 ingress_tc_count, From patchwork Thu Mar 22 10:55:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889313 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="ur7H77qq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406Nrh4BNFz9s1X for ; Thu, 22 Mar 2018 21:56:20 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754225AbeCVK4S (ORCPT ); Thu, 22 Mar 2018 06:56:18 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:37482 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754526AbeCVKz2 (ORCPT ); Thu, 22 Mar 2018 06:55:28 -0400 Received: by mail-wr0-f193.google.com with SMTP id z12so8210680wrg.4 for ; Thu, 22 Mar 2018 03:55:28 -0700 (PDT) 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=I1FEa67XNy4i3pzkd3HByo4wDiPbkQYlph2NLPuTIFo=; b=ur7H77qqGPG5ins+osPMtIUYzTtOiKQXIl/aQLICgFQ0/GEbIpAxDCdZEbD++4to4J Q9E7uLYXQ0MTlvaij6FC4vWSOBl7KfWW9nQYuX8ew06ecIuQib3WNcIDgbXV+kOrMszS IKWFsqE+VVJwYG883wKV4eMBeXMv01XyMQkyxhQJOy6gCA2x68y30iPdsVkP/1mnMX1w jIMYIAeGhF+YZTkh+4O+oZpq4e2xR8/DGyt8paMUW7dsnf0k8vaVk/4UGDYreiW5lckd sTqhsEA7LaiEWj9OFqlocQpRTJYfWb29a1L+c8al1T4eda0UOr5IymcMEhYMa7v9cWGu tmig== 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=I1FEa67XNy4i3pzkd3HByo4wDiPbkQYlph2NLPuTIFo=; b=Vl4owKqKWoSM6QDHgsHbdH/Sl2mfToAEag4eFiaIdTuWbc8wa2s4La9NwdBNmOaZwr Lg7LaX8sAiKXxClb8GDDe8N+aeKv/ojUL68iScKxbmyb0arHh5d/ELGmBnrRhnkXygV4 moP+yqqfNB3PM+t6HkgByh6U7IOsPwe7NpuNqYo+eHsJypgoi0HleZipvt0gN/hdsTsw PQdwyCws1JU35fAKAqnqxU6JZ0HQQtmPdSYSvz8bmF2GYs+4BDb0gA+sDPJVffs5u81x UB7bMwt1eV1X8KEkY2+6lu13BVfxUG1rLAZKYcy2NYQ2a1wr15gbdcp9UDGpX4hAWH6L /hAw== X-Gm-Message-State: AElRT7GENWkIXQPVNjuh0yFSUYhnN7r4B15v/p3wNdNhnkT4TYk8zQa5 YE4PdAjekjQ8WEvt+/T+/9NYu0XN X-Google-Smtp-Source: AG47ELs7ouram6DyBYoxivtLuCCRNBcNmEwMDAwfBo9ERLbRA+FGL6hxL4tdqpsR7gI0NtuVdfpO8Q== X-Received: by 10.223.161.145 with SMTP id u17mr14788692wru.61.1521716127388; Thu, 22 Mar 2018 03:55:27 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id y15sm4062992wrh.39.2018.03.22.03.55.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:27 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 04/12] dsa: set devlink port attrs for dsa ports Date: Thu, 22 Mar 2018 11:55:14 +0100 Message-Id: <20180322105522.8186-5-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Set the attrs and allow to expose port flavour to user via devlink. Signed-off-by: Jiri Pirko --- net/dsa/dsa2.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index adf50fbc4c13..49453690696d 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -270,7 +270,27 @@ static int dsa_port_setup(struct dsa_port *dp) case DSA_PORT_TYPE_UNUSED: break; case DSA_PORT_TYPE_CPU: + /* dp->index is used now as port_number. However + * CPU ports should have separate numbering + * independent from front panel port numbers. + */ + devlink_port_attrs_set(&dp->devlink_port, + DEVLINK_PORT_FLAVOUR_CPU, + dp->index, false, 0); + err = dsa_port_link_register_of(dp); + if (err) { + dev_err(ds->dev, "failed to setup link for port %d.%d\n", + ds->index, dp->index); + return err; + } case DSA_PORT_TYPE_DSA: + /* dp->index is used now as port_number. However + * DSA ports should have separate numbering + * independent from front panel port numbers. + */ + devlink_port_attrs_set(&dp->devlink_port, + DEVLINK_PORT_FLAVOUR_DSA, + dp->index, false, 0); err = dsa_port_link_register_of(dp); if (err) { dev_err(ds->dev, "failed to setup link for port %d.%d\n", @@ -279,6 +299,9 @@ static int dsa_port_setup(struct dsa_port *dp) } break; case DSA_PORT_TYPE_USER: + devlink_port_attrs_set(&dp->devlink_port, + DEVLINK_PORT_FLAVOUR_PHYSICAL, + dp->index, false, 0); err = dsa_slave_create(dp); if (err) dev_err(ds->dev, "failed to create slave for port %d.%d\n", From patchwork Thu Mar 22 10:55:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889305 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="mn38lEO3"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406Nqx3NMTz9s1X for ; Thu, 22 Mar 2018 21:55:41 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754558AbeCVKzg (ORCPT ); Thu, 22 Mar 2018 06:55:36 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:37485 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754534AbeCVKz3 (ORCPT ); Thu, 22 Mar 2018 06:55:29 -0400 Received: by mail-wr0-f194.google.com with SMTP id z12so8210724wrg.4 for ; Thu, 22 Mar 2018 03:55:28 -0700 (PDT) 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=mKztvGrMmN2kLvXxJ91DE6fPzGHEIJUYg7HX0O63zKE=; b=mn38lEO3R+gORe1Z6iT51ljJ/nuO2QRj3Y9R2zndqKZ8HOktAcPo6lXWCHliucyjUO C4r030Kmz+j9EHaQ7g1T4txKOhTzLCCYz1Rgqtb0+kw/omur1cX2zwYnMmU2Qk0WwJEt l5/brIk2skW5aDzsTS3IbY8azQitOjjdglgn+yA6O6JRN0UTkI4I1esxpegvY5/lkXtF dST0joCJNmBtty0C70otmkVdTuZghNID99PNQdQ2Aq12S5DygKJ4aexVrJHejrfeuf4P 0vFD4lYz8fqfwZNiMmv/8M+GDgacJWGOKU0iIxDPkNPaqwcefRVjtLGKdFneGrkJBFOH JElA== 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=mKztvGrMmN2kLvXxJ91DE6fPzGHEIJUYg7HX0O63zKE=; b=qLboUIhrxeu/2oh69wMSHjFkSXGo+hDGuuTVsM4aGTgOyD6/RtYWDHIn57FTH2HmfN X0i0kTydFdv0GFrDZeG01Zef+jrXDPkb0fJzlkfZ8n/G9Krbz8UsqarE5jnztBEHQG3G 0OU9ALDpm9IZdhhkvu9nVPcwVqNK6/feUAUvGKA8nqKMl0KRwNPevnsAud5I/8bX3bA4 w0U0jupZ+/OsNazP5Mv2rR7lMRiUzoihg9Ky9wZxs1v04QoUlhg/sVUrjiKLYZdX0JYV GQDRr5RN45BddU/e026z1bfzyEgXjnsNDnj4jbwKmITkPOhgF1Cc2ajZl+lQ1w1Oi430 NKKw== X-Gm-Message-State: AElRT7GcVqquBpE0OqNDcILdNnZoy2jNZCzagOS2kF+cRTJvVgrdJ7S1 7NXCpNRO3u3b7vbWQcXNUUbbgqix X-Google-Smtp-Source: AG47ELvkPXmP1Mwt1pEoTEXtwiwV8h/AgXfh5wibUM2+401Oqkvjwwdu4iGHKd5Bc6VQTlrsNlTHig== X-Received: by 10.223.191.11 with SMTP id p11mr17947431wrh.160.1521716128259; Thu, 22 Mar 2018 03:55:28 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id m135sm9536761wma.2.2018.03.22.03.55.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:27 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 05/12] dsa: use devlink helper to generate physical port name Date: Thu, 22 Mar 2018 11:55:15 +0100 Message-Id: <20180322105522.8186-6-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Since devlink knows the info needed to generate the physical port name in a generic way for all devlink users, use the helper to do the job. Signed-off-by: Jiri Pirko --- net/dsa/slave.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 18561af7a8f1..8d71dd672e52 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -727,10 +728,7 @@ static int dsa_slave_get_phys_port_name(struct net_device *dev, { struct dsa_port *dp = dsa_slave_to_port(dev); - if (snprintf(name, len, "p%d", dp->index) >= len) - return -EINVAL; - - return 0; + return devlink_port_get_phys_port_name(&dp->devlink_port, name, len); } static struct dsa_mall_tc_entry * From patchwork Thu Mar 22 10:55:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889312 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="Pk7d6mY7"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406NrV0ynWz9s1X for ; Thu, 22 Mar 2018 21:56:10 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754575AbeCVK4H (ORCPT ); Thu, 22 Mar 2018 06:56:07 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36928 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753653AbeCVKza (ORCPT ); Thu, 22 Mar 2018 06:55:30 -0400 Received: by mail-wm0-f67.google.com with SMTP id 139so15279650wmn.2 for ; Thu, 22 Mar 2018 03:55:30 -0700 (PDT) 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=JBuqfClrV4Kdo2liBR7lPzIlbwLX0+uYRdbkcfmhJA8=; b=Pk7d6mY7UX4GTcncJM9AAF+FT4jIWVyaoQC38tTX8TOYA6RDUWHFLUwVIf0hj2YRnD ZBbPCOT615aN6BUDob26F+b9YbFI6XJ4/jyI7S57wNe9PPcz63Z8JlmQEH4hS0w0JGa4 ZPlZw/z8iI+fNso6K0kPCRD2oa/a+6P9UflrIc42OuqCtp8QtM3GpmWqgNUr+uXjWAx5 t/xmyFsHY2ff7+sKb3GBNbyw3WaCFY0MzUkCsz7z+BSsFdXmuH6UAq4DHyRg3KFJ41mT CtNFg2NBFpN1r47ONBcxeWkwTHTv7wcY2AXDoiPkvx9WV5pVYkfgs0JvP3uesOcHA3x9 WSMQ== 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=JBuqfClrV4Kdo2liBR7lPzIlbwLX0+uYRdbkcfmhJA8=; b=ZC9/fqb91GTyjmr5kiUefmQ7teZ4JaT7y1lrznI/338d029a9hraxuyqV3olAVnC/G 11mCvvnI/iOMR38jkRAchCK9t7gFqX1ia+KXAOOJjEs2HQn5DIqn7wQwJbR7LmYy1sHs QKj3DGxDH+zkTCClwQkDg9NDnvCZZ90aqmh5zrhpPvBmp+n9TXgUQ9Lu/VraBb/C5qEE Ion/Phl9e1l7ShZa5KURwHprny6AVHNLVhfI9vrYFvU5OcZcnxpOSJWKbHxztDomgGvl adtuRAhCKfelXzj7bZQk6AQMcl49yaLlLpgZ2bjIreGCz7/iyYovOJF4hBvHhMCR5bdC 8vKw== X-Gm-Message-State: AElRT7HAo911E5a3s9LwtjNutjOZKFuTSljEEIgCOdLyu78Oy18tKKIF tnQsXZljEjHkLIJghM3BwdaL9wfu X-Google-Smtp-Source: AG47ELtuB5KcBHhbnEMp7+vgh+rlpkh+zArVIv0DYYRHr8xImMFT32q1X7DrY3JC4IBeko25CwgdDw== X-Received: by 10.28.175.82 with SMTP id y79mr4852639wme.93.1521716129194; Thu, 22 Mar 2018 03:55:29 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id l41sm13657977wrl.2.2018.03.22.03.55.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:28 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 06/12] mlxsw: use devlink helper to generate physical port name Date: Thu, 22 Mar 2018 11:55:16 +0100 Message-Id: <20180322105522.8186-7-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Since devlink knows the info needed to generate the physical port name in a generic way for all devlink users, use the helper to do the job. Signed-off-by: Jiri Pirko --- drivers/net/ethernet/mellanox/mlxsw/core.c | 11 +++++++++++ drivers/net/ethernet/mellanox/mlxsw/core.h | 2 ++ drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 17 +++-------------- drivers/net/ethernet/mellanox/mlxsw/switchx2.c | 9 +++------ 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c index 0b6e646fed75..7a49eb2c8db4 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c @@ -1762,6 +1762,17 @@ enum devlink_port_type mlxsw_core_port_type_get(struct mlxsw_core *mlxsw_core, } EXPORT_SYMBOL(mlxsw_core_port_type_get); +int mlxsw_core_port_get_phys_port_name(struct mlxsw_core *mlxsw_core, + u8 local_port, char *name, size_t len) +{ + struct mlxsw_core_port *mlxsw_core_port = + &mlxsw_core->ports[local_port]; + struct devlink_port *devlink_port = &mlxsw_core_port->devlink_port; + + return devlink_port_get_phys_port_name(devlink_port, name, len); +} +EXPORT_SYMBOL(mlxsw_core_port_get_phys_port_name); + static void mlxsw_core_buf_dump_dbg(struct mlxsw_core *mlxsw_core, const char *buf, size_t size) { diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.h b/drivers/net/ethernet/mellanox/mlxsw/core.h index 10589abae67f..09703688ea9a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.h +++ b/drivers/net/ethernet/mellanox/mlxsw/core.h @@ -209,6 +209,8 @@ void mlxsw_core_port_clear(struct mlxsw_core *mlxsw_core, u8 local_port, void *port_driver_priv); enum devlink_port_type mlxsw_core_port_type_get(struct mlxsw_core *mlxsw_core, u8 local_port); +int mlxsw_core_port_get_phys_port_name(struct mlxsw_core *mlxsw_core, + u8 local_port, char *name, size_t len); int mlxsw_core_schedule_dw(struct delayed_work *dwork, unsigned long delay); bool mlxsw_core_schedule_work(struct work_struct *work); diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 59be0bf14127..64ea94d4ee14 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -1238,21 +1238,10 @@ static int mlxsw_sp_port_get_phys_port_name(struct net_device *dev, char *name, size_t len) { struct mlxsw_sp_port *mlxsw_sp_port = netdev_priv(dev); - u8 module = mlxsw_sp_port->mapping.module; - u8 width = mlxsw_sp_port->mapping.width; - u8 lane = mlxsw_sp_port->mapping.lane; - int err; - - if (!mlxsw_sp_port->split) - err = snprintf(name, len, "p%d", module + 1); - else - err = snprintf(name, len, "p%ds%d", module + 1, - lane / width); - if (err >= len) - return -EINVAL; - - return 0; + return mlxsw_core_port_get_phys_port_name(mlxsw_sp_port->mlxsw_sp->core, + mlxsw_sp_port->local_port, + name, len); } static struct mlxsw_sp_port_mall_tc_entry * diff --git a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c index eddfcef320f1..96d4c073d9d6 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c +++ b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c @@ -417,13 +417,10 @@ static int mlxsw_sx_port_get_phys_port_name(struct net_device *dev, char *name, size_t len) { struct mlxsw_sx_port *mlxsw_sx_port = netdev_priv(dev); - int err; - - err = snprintf(name, len, "p%d", mlxsw_sx_port->mapping.module + 1); - if (err >= len) - return -EINVAL; - return 0; + return mlxsw_core_port_get_phys_port_name(mlxsw_sx_port->mlxsw_sx->core, + mlxsw_sx_port->local_port, + name, len); } static const struct net_device_ops mlxsw_sx_port_netdev_ops = { From patchwork Thu Mar 22 10:55:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889311 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="yM/EARCU"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406NrR64LXz9s1X for ; Thu, 22 Mar 2018 21:56:07 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754569AbeCVK4G (ORCPT ); Thu, 22 Mar 2018 06:56:06 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:33463 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754542AbeCVKzb (ORCPT ); Thu, 22 Mar 2018 06:55:31 -0400 Received: by mail-wr0-f193.google.com with SMTP id z73so8205027wrb.0 for ; Thu, 22 Mar 2018 03:55:30 -0700 (PDT) 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=JGoeLCZclLcY2/R0eVijLQj+iUuZxUju5TvyDMhrnFw=; b=yM/EARCUNDUTLi6W3YxvXTOTAvk6Zw9H59qvMMeEihIohkr9S836dL6CBymLzBJQ07 x1IfRdGLzJ3fKMYAlIC0VPAOhf9ok4922bHKCoFzXLq7a8pmaKeXyRMyWDNksY6lHkuZ EUyJq0N1s5jWaF0J5K5iCF21MMI1KkhmSANB3C/aHCxKagqdP3uSz7UXnyxgRmIRjtLn 4SQ69WZiIJAVLg78MBwFzrsVLr9vI1tyG6c7Haa7XGQ7i3SJlOfGbvSiCwFmgz0bJJYl cM9i6PFfqgsVdlnxfz7zwF4r5HHyAOmA0NoT9Acb4sfrdGLvjASQcMYXIrE8ApVnyyDt acYw== 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=JGoeLCZclLcY2/R0eVijLQj+iUuZxUju5TvyDMhrnFw=; b=EYQpxZePF9stXZpcW4IDSnj+nMv0dE3y9YtU0ynBSScyKY7gI15LA2OtS9D9bqfxJu WUZqKVM96QDVZHpKs2lmwrND01qe4n46GD+bDZPeR2OK5ABmi9iU0FQvdvHjAxpoi91B xMZBZqqU7X0XHllJzzkE1N9Kvg3ev5e3X2SvubkRXgqo9X+LRCKff1cjNFFLqSzsS5Be hzO/vRAY56N8SQiTN+hRNibKV7CfTLmf+mW/wr/l3qjiScJo6TjFg3BE1xxA3qcpPYp8 g9qa8zZy+XZZyztXEeaDuV/Js+IPCHJNKUCb/l9sgrE39NHLHunc+suS04zDFk5KVfUi VV1g== X-Gm-Message-State: AElRT7FWHMMstmqOnhAXy+L3YRcfq2Nfdaly77ehBFqD3t4QZNs9AyVn +urpySLmNQ1MKEaEL7SOA0TQFW/A X-Google-Smtp-Source: AG47ELsaNrvBB+eFUADaVryk9Ou58LZiEqZgP4VYCfGQSyvUt2mISZ/f5/k6mYp6YvP7QvApvP+5aQ== X-Received: by 10.223.144.69 with SMTP id h63mr10019000wrh.218.1521716130177; Thu, 22 Mar 2018 03:55:30 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id q8sm2267650wrd.69.2018.03.22.03.55.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:29 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 07/12] nfp: flower: fix error path during representor creation Date: Thu, 22 Mar 2018 11:55:17 +0100 Message-Id: <20180322105522.8186-8-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Don't store repr pointer to reprs array until the representor is successfully created. This avoids message about "representor destruction" even when it was never created. Also it cleans-up the flow. Also, check return value after port alloc. Signed-off-by: Jiri Pirko --- drivers/net/ethernet/netronome/nfp/flower/main.c | 13 +++++++++++-- drivers/net/ethernet/netronome/nfp/nfp_net_repr.c | 9 +++++++-- drivers/net/ethernet/netronome/nfp/nfp_net_repr.h | 1 + 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.c b/drivers/net/ethernet/netronome/nfp/flower/main.c index 742d6f1575b5..aed8df0e9d41 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.c +++ b/drivers/net/ethernet/netronome/nfp/flower/main.c @@ -247,12 +247,16 @@ nfp_flower_spawn_vnic_reprs(struct nfp_app *app, err = -ENOMEM; goto err_reprs_clean; } - RCU_INIT_POINTER(reprs->reprs[i], repr); /* For now we only support 1 PF */ WARN_ON(repr_type == NFP_REPR_TYPE_PF && i); port = nfp_port_alloc(app, port_type, repr); + if (IS_ERR(port)) { + err = PTR_ERR(port); + nfp_repr_free(repr); + goto err_reprs_clean; + } if (repr_type == NFP_REPR_TYPE_PF) { port->pf_id = i; port->vnic = priv->nn->dp.ctrl_bar; @@ -271,9 +275,11 @@ nfp_flower_spawn_vnic_reprs(struct nfp_app *app, port_id, port, priv->nn->dp.netdev); if (err) { nfp_port_free(port); + nfp_repr_free(repr); goto err_reprs_clean; } + RCU_INIT_POINTER(reprs->reprs[i], repr); nfp_info(app->cpp, "%s%d Representor(%s) created\n", repr_type == NFP_REPR_TYPE_PF ? "PF" : "VF", i, repr->name); @@ -344,16 +350,17 @@ nfp_flower_spawn_phy_reprs(struct nfp_app *app, struct nfp_flower_priv *priv) err = -ENOMEM; goto err_reprs_clean; } - RCU_INIT_POINTER(reprs->reprs[phys_port], repr); port = nfp_port_alloc(app, NFP_PORT_PHYS_PORT, repr); if (IS_ERR(port)) { err = PTR_ERR(port); + nfp_repr_free(repr); goto err_reprs_clean; } err = nfp_port_init_phy_port(app->pf, app, port, i); if (err) { nfp_port_free(port); + nfp_repr_free(repr); goto err_reprs_clean; } @@ -365,6 +372,7 @@ nfp_flower_spawn_phy_reprs(struct nfp_app *app, struct nfp_flower_priv *priv) cmsg_port_id, port, priv->nn->dp.netdev); if (err) { nfp_port_free(port); + nfp_repr_free(repr); goto err_reprs_clean; } @@ -373,6 +381,7 @@ nfp_flower_spawn_phy_reprs(struct nfp_app *app, struct nfp_flower_priv *priv) eth_tbl->ports[i].base, phys_port); + RCU_INIT_POINTER(reprs->reprs[phys_port], repr); nfp_info(app->cpp, "Phys Port %d Representor(%s) created\n", phys_port, repr->name); } diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c index 619570524d2a..d98cbc173dca 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c @@ -337,12 +337,17 @@ int nfp_repr_init(struct nfp_app *app, struct net_device *netdev, return err; } -static void nfp_repr_free(struct nfp_repr *repr) +static void __nfp_repr_free(struct nfp_repr *repr) { free_percpu(repr->stats); free_netdev(repr->netdev); } +void nfp_repr_free(struct net_device *netdev) +{ + __nfp_repr_free(netdev_priv(netdev)); +} + struct net_device *nfp_repr_alloc(struct nfp_app *app) { struct net_device *netdev; @@ -374,7 +379,7 @@ static void nfp_repr_clean_and_free(struct nfp_repr *repr) nfp_info(repr->app->cpp, "Destroying Representor(%s)\n", repr->netdev->name); nfp_repr_clean(repr); - nfp_repr_free(repr); + __nfp_repr_free(repr); } void nfp_reprs_clean_and_free(struct nfp_app *app, struct nfp_reprs *reprs) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.h b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.h index a621e8ff528e..cd756a15445f 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.h @@ -123,6 +123,7 @@ void nfp_repr_inc_rx_stats(struct net_device *netdev, unsigned int len); int nfp_repr_init(struct nfp_app *app, struct net_device *netdev, u32 cmsg_port_id, struct nfp_port *port, struct net_device *pf_netdev); +void nfp_repr_free(struct net_device *netdev); struct net_device *nfp_repr_alloc(struct nfp_app *app); void nfp_reprs_clean_and_free(struct nfp_app *app, struct nfp_reprs *reprs); void nfp_reprs_clean_and_free_by_type(struct nfp_app *app, From patchwork Thu Mar 22 10:55:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889308 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="j4Sh9bji"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406Nr44ZKJz9s1c for ; Thu, 22 Mar 2018 21:55:48 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754560AbeCVKzj (ORCPT ); Thu, 22 Mar 2018 06:55:39 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:46939 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754546AbeCVKzc (ORCPT ); Thu, 22 Mar 2018 06:55:32 -0400 Received: by mail-wr0-f193.google.com with SMTP id s10so8181362wra.13 for ; Thu, 22 Mar 2018 03:55:31 -0700 (PDT) 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=dKN1SMirtGl6ZYWtxnq2TKohcrf4sfypp0NfPTqvDpk=; b=j4Sh9bjiLfrfqcYiWVkfbJbgqcRIN6JAWpA9bfMnXqB5ZHfE/R8o/k4G/nJs2EcxZC iVLCPxHwPwhLuy+TiKuou4TEsRg4G83NyA6eCA2cqcNensE6otUWbQL9HipEUaXGADYv wmL96ho/c68r8D46289R3lbTFaPtVNravn7MOeuJY4sDR4oPLnbo84HnKHBIoh5eQBQ3 h6rUdbUWXLPMw0RsxyqHS8Va7Upmqm2SJMO7hIErNlVmz+WL2PLXL0Y8Z1uH9yt7Z3L3 j6ZitTJKTwyRxEZl6SuXonX2HVbn5XktocFLtVT2dAgMUQLpd30k3K1wlFhZJ7NDbRYG C6dw== 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=dKN1SMirtGl6ZYWtxnq2TKohcrf4sfypp0NfPTqvDpk=; b=T3Gw6juM8WF6umTDQTf67bFDKukduspFwbX95FdZ106WVIdgOT+HoU7+buNqFpee9F obIS4/6F5sODDTMRXHnMZbwMQ44vqFSu6+oBb9HEgEvz+1cfJBknamrThpG5eGTmdZO8 mdfjc793GX3tk4/pz4ie4TaDkN73a2qgY0Fa5jYJ4jZI/A4zBup9+iu7yTNcl9c0M08O Ga+OMIWPJV6Vy7Xt6fyD2FeenFe/MVS6sAbqja3C5IAmtMHhFUYFggJTctEQTfFyNgLw rft2anrElCrAt/fUQEHJVwmqqaVvEzl7QzT+U0W+OGdz8zSf5uGiFRgbDlrWE8onpFlQ /wZg== X-Gm-Message-State: AElRT7H1/7tm5gTQfR96tsDmFnUu4YhVKesW1FrDSw0nggaOiPaUBXZQ kTE2dlc586Cavzo7otuLWH54Q0hc X-Google-Smtp-Source: AG47ELubA3nhdWaB2wp9PfwgpgKD28aSkBrq2sA7HMXb6rohoy8PGHTr5+6J9/IPzIhAf1TFplGcaA== X-Received: by 10.223.172.35 with SMTP id v32mr18874123wrc.19.1521716131080; Thu, 22 Mar 2018 03:55:31 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id s11sm5935438wra.57.2018.03.22.03.55.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:30 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 08/12] nfp: set eth_id for representors to avoid port index conflict Date: Thu, 22 Mar 2018 11:55:18 +0100 Message-Id: <20180322105522.8186-9-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Incorrect, need to be done differently Signed-off-by: Jiri Pirko --- drivers/net/ethernet/netronome/nfp/nfp_net_repr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c index d98cbc173dca..e6445f6707cb 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c @@ -328,6 +328,8 @@ int nfp_repr_init(struct nfp_app *app, struct net_device *netdev, if (err) goto err_repr_clean; + /* This is incorrect - the id has to be figured out differently */ + port->eth_id = cmsg_port_id; return 0; err_repr_clean: From patchwork Thu Mar 22 10:55:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889306 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="hJwMyAPQ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406Nqy6XnSz9s1c for ; Thu, 22 Mar 2018 21:55:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754564AbeCVKzk (ORCPT ); Thu, 22 Mar 2018 06:55:40 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:51726 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754232AbeCVKzd (ORCPT ); Thu, 22 Mar 2018 06:55:33 -0400 Received: by mail-wm0-f67.google.com with SMTP id v21so3875556wmc.1 for ; Thu, 22 Mar 2018 03:55:32 -0700 (PDT) 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=LAaTafsfD/pvsLtGCEpU8LsXXhG6LEQrbrQXreU+lBY=; b=hJwMyAPQIaALziyACT1XXy/NOB37pVyuSBCbJN5zNurpeQ8mapmfx19NGcm9zpq1i4 dFYmKEEOEAEsPNQlwf1qVTgzSurUt5s0lSPeW3oHKW7OGWhEJZLgiiYaX1IELPcDyuxs 2BDpNcMPLoYFEOuo5R0iSgSIZ/NOZ2S+uOa+adBaQtEcJ92bGa0+E1zVUYalsCQY6F3O xFGiZwWX3HU821okmBX9hpIU1DS+nc/ZGVxTSw/bOyHp0IZeN5qUJkPu6WuQanthl8p3 1r2JcF7fJFq9U4D0ybCr1DWWWp0gMqhGVPjTXTaiD3IgEttu9q5KiFQf3tJjLd0nAVde h1xQ== 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=LAaTafsfD/pvsLtGCEpU8LsXXhG6LEQrbrQXreU+lBY=; b=ZXQ0xV1w1IgTQQ99QcsFE0aDY/UwqbmBBS88XprFLvXTmGX7YgAB4DSzyf1YQXyzol w7CShN4OubYF1ZoIAUb0g4P2MkRzyIxO2D6B/tO/2inVXs+MiZcbzx4r5qTYfiw+tr6b EREGuRDFoKPu4jPvg69oKcvBh4VsxTio7o44g3VXYgrxVXLY8FWfdQeOjsf8ClUPBOF0 Bcwc4LbpdMPWMaqKeuZcalZt+AzLqKHCHt6Heo1AU9TwWCazov4PJwT+W58R/YGbitMH ZAEqcqiv3xpgRni5efEN6qPrXmQxdOQr5K4Zyyg6MzZ8VAGlOfT+qCNmhngKSyNA9K3N msmA== X-Gm-Message-State: AElRT7E3qHqP67NFpq+H4CMlrzluQcSm2qTxYn92CmBnLwZL8a1/ym78 Kwthb5+o0CiGgdcFEtPw8ebB1aCO X-Google-Smtp-Source: AG47ELukmk9R9YJ39So9Dtgzu7nyWTef+ffXNJhNEx2DTycP0lo6rF7ZYZpqANWBniLxiDyUywDvYw== X-Received: by 10.28.210.85 with SMTP id j82mr5003717wmg.64.1521716132065; Thu, 22 Mar 2018 03:55:32 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id q21sm7705279wmd.40.2018.03.22.03.55.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:31 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 09/12] nfp: register devlink port for VF/PF representors Date: Thu, 22 Mar 2018 11:55:19 +0100 Message-Id: <20180322105522.8186-10-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Drivers should always register devlink port instance for all their ports. So fix nfp and register devlink port for VF and PF representors. Signed-off-by: Jiri Pirko --- drivers/net/ethernet/netronome/nfp/nfp_net_repr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c index e6445f6707cb..eff07e9a175d 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c @@ -270,6 +270,8 @@ const struct net_device_ops nfp_repr_netdev_ops = { static void nfp_repr_clean(struct nfp_repr *repr) { + if (repr->port) + nfp_devlink_port_unregister(repr->port); unregister_netdev(repr->netdev); nfp_app_repr_clean(repr->app, repr->netdev); dst_release((struct dst_entry *)repr->dst); @@ -330,8 +332,14 @@ int nfp_repr_init(struct nfp_app *app, struct net_device *netdev, /* This is incorrect - the id has to be figured out differently */ port->eth_id = cmsg_port_id; + err = nfp_devlink_port_register(app, port); + if (err) + goto err_netdev_clean; + return 0; +err_netdev_clean: + unregister_netdev(netdev); err_repr_clean: nfp_app_repr_clean(app, netdev); err_clean: From patchwork Thu Mar 22 10:55:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889310 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="mP+3p1DJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406NrK41zKz9s1X for ; Thu, 22 Mar 2018 21:56:01 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754550AbeCVKz7 (ORCPT ); Thu, 22 Mar 2018 06:55:59 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:55021 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754308AbeCVKze (ORCPT ); Thu, 22 Mar 2018 06:55:34 -0400 Received: by mail-wm0-f65.google.com with SMTP id h76so15108864wme.4 for ; Thu, 22 Mar 2018 03:55:33 -0700 (PDT) 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=p30tKkpjdtUZ99Nkmp/ainfPX3mGgpJMEJ+A9RFm2vg=; b=mP+3p1DJlblbDeM8ny9tSO2yPm17lefbuWA9WyyrshQtQVUF1xOTwVit3P5PYZ9DjF 5cpzMMBYmXMqDe5wmxHPb3BDwy46qambz3nPCzn8kHYOx9PNV5B5Jd2+CJ8Hk/z7976X Eq1XqjdEnqQm6PRIRu8Me4jCsEDlKdEhjWCe89Ri673Mz9/J8eN4R3Lsy8AQo9j0mdBd pK1snleM0AQPcqdwj/DANPmOORZsMnHbSby/nY84l5AVPRNlalyuM+wn5XE6JDXZjQlW 6gUtZRwYeqE8wQVufXjybReoTNZFwUsetabcX2cnBJKf+OXERaSSeP4QtXJQ1AmVxuwN +gww== 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=p30tKkpjdtUZ99Nkmp/ainfPX3mGgpJMEJ+A9RFm2vg=; b=BD2YK+95v4n+CxXwcPBMQ5eWcRkgPsId8Kd1BzNieiItRn3iK398SBCiWzcsEz1HZz bDBDKAGQmVNtmUpeB4SaiAH2ZF2paWrnntceDe2+YWMoZMsCBi41546srAMiARtJ3Vxg DjO4Nb1LdRPGjBP8jIhEEcCz4bdjEV/RkOfOkNhynBtDbwXNc8v6Wamm/kd2sME0CBMx AKIkPHoNbjnhom0w0J2Y1r/Y2VDgjfe6wQfhQvHU7UGql0vXUXyzFf2vbyUXu4daei8D n0HgWPLdVd8pHxqWGQqhw4GCRBO5j59VUiysVsbeo5OjTtSC1/MU9Op1lTIUaPGU8/Ks Wazw== X-Gm-Message-State: AElRT7HqkVAPRWbAfkLwj0AugItWe/ZyKJZbgAFhYNntMolfqWilI8w1 akEldtMLZfncQLAOLTVLuIZ9NkAk X-Google-Smtp-Source: AG47ELvKHqhttX6G7QWYEIbRdHXE4hivfEl4PDjGmH5qCgkW8JHZu2TfEDmtOIfXPSBM7QS15adppQ== X-Received: by 10.28.133.200 with SMTP id h191mr5646431wmd.39.1521716132951; Thu, 22 Mar 2018 03:55:32 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id f84sm7620364wmh.44.2018.03.22.03.55.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:32 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 10/12] nfp: flower: create port for flower vnic Date: Thu, 22 Mar 2018 11:55:20 +0100 Message-Id: <20180322105522.8186-11-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Signed-off-by: Jiri Pirko --- drivers/net/ethernet/netronome/nfp/flower/main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.c b/drivers/net/ethernet/netronome/nfp/flower/main.c index aed8df0e9d41..1890af7e6196 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.c +++ b/drivers/net/ethernet/netronome/nfp/flower/main.c @@ -427,10 +427,9 @@ static int nfp_flower_vnic_alloc(struct nfp_app *app, struct nfp_net *nn, goto err_invalid_port; } - eth_hw_addr_random(nn->dp.netdev); netif_keep_dst(nn->dp.netdev); - return 0; + return nfp_app_nic_vnic_alloc(app, nn, id); err_invalid_port: nn->port = nfp_port_alloc(app, NFP_PORT_INVALID, nn->dp.netdev); From patchwork Thu Mar 22 10:55:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889309 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="G7RM3XzM"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406NrD5gDFz9s1X for ; Thu, 22 Mar 2018 21:55:56 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754265AbeCVKzy (ORCPT ); Thu, 22 Mar 2018 06:55:54 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:52709 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754549AbeCVKzf (ORCPT ); Thu, 22 Mar 2018 06:55:35 -0400 Received: by mail-wm0-f67.google.com with SMTP id l9so15114893wmh.2 for ; Thu, 22 Mar 2018 03:55:34 -0700 (PDT) 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=hworZYet0kNdmKw87M5bh6oxa/zcm26MkWcwQdd6LhI=; b=G7RM3XzM4ncW5qEmF5oq3XjOXMRtlV9xCP9z5GQlzWheHaUv3j2rY9NuK7+682jc9a 7z4aU82Y4WfD/Zbv6VNnXa6OjaB32X+VcCNl2StSg58EK+mV9t5/cy6HpDSBXU6+IRl0 NHq+QQHpS8T8iKxDwc2twJY3D1+6PxH9mcbYVydGFFRd9OCnVEDwfxjHrRMN+97B9ZuM wwi+mHqiPJ3icvENZpOmHtQ7YHz3XXU7cLHHg4mlRSZNWbeJ84wJ4xufgKZtW7fQFOF5 8saoiKlbD+p5lJQG9ekMcLBfIwdyiv3u4D8mAJcJKfvXg3+vOshWRHTw6+8mY0pvtdNW M2lg== 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=hworZYet0kNdmKw87M5bh6oxa/zcm26MkWcwQdd6LhI=; b=dQlaZYH2OduObPEApRJjMiVEg8R8bwVuRBHyRfWp3rVdx2myJ3PflTPoJLRYDz2t+u 7b+QMNZigLjfT53tCd1T9f/pYPS/tGtZmeCtH5pjsvrUx9tGUA0JquKG0sym054fmxrc nh5m3+lEZtHVjUSwR3TbHKnf5WfyEN65LEjoyDOrDipZpNuj3B901rMAKCW6clVAY+Ew BL6oAlCZaUWQjAc5q2BbW6IVAzg5cqHzVV5qn14+YTqAYf6or6Q06rEZQwKsYUwW+6FY xUEkXwAuSAZ/w6/veqJqI3T3Ge50yIx/2pEWu2agcOgGUWOXS0GXc8QL74r1j8KCIv7E yH4Q== X-Gm-Message-State: AElRT7FQO9mMNaUsTGk0Dp7zYpdsFC0OskyurfVvt+qfCecDDVonRiYI zW5w+gW3w77nqjQ5bB28Eay3EWKF X-Google-Smtp-Source: AG47ELv7TC4dJb71sXSsKoThk5Sg4a/KY5tfZQtwXjpd6buSYSCNfaSCj+L3e7ZbtWhDDTAGRMpHtw== X-Received: by 10.28.92.200 with SMTP id q191mr4868581wmb.11.1521716133851; Thu, 22 Mar 2018 03:55:33 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id j6sm8127725wmg.14.2018.03.22.03.55.33 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:33 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 11/12] nfp: use devlink helper to generate physical port name Date: Thu, 22 Mar 2018 11:55:21 +0100 Message-Id: <20180322105522.8186-12-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Since devlink knows the info needed to generate the physical port name in a generic way for all devlink users, use the helper to do the job. Signed-off-by: Jiri Pirko --- drivers/net/ethernet/netronome/nfp/nfp_port.c | 30 ++------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_port.c b/drivers/net/ethernet/netronome/nfp/nfp_port.c index 7bd8be5c833b..01dac8533ef6 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_port.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_port.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "nfpcore/nfp_cpp.h" #include "nfpcore/nfp_nsp.h" @@ -160,40 +161,13 @@ struct nfp_eth_table_port *nfp_port_get_eth_port(struct nfp_port *port) int nfp_port_get_phys_port_name(struct net_device *netdev, char *name, size_t len) { - struct nfp_eth_table_port *eth_port; struct nfp_port *port; - int n; port = nfp_port_from_netdev(netdev); if (!port) return -EOPNOTSUPP; - switch (port->type) { - case NFP_PORT_PHYS_PORT: - eth_port = __nfp_port_get_eth_port(port); - if (!eth_port) - return -EOPNOTSUPP; - - if (!eth_port->is_split) - n = snprintf(name, len, "p%d", eth_port->label_port); - else - n = snprintf(name, len, "p%ds%d", eth_port->label_port, - eth_port->label_subport); - break; - case NFP_PORT_PF_PORT: - n = snprintf(name, len, "pf%d", port->pf_id); - break; - case NFP_PORT_VF_PORT: - n = snprintf(name, len, "pf%dvf%d", port->pf_id, port->vf_id); - break; - default: - return -EOPNOTSUPP; - } - - if (n >= len) - return -EINVAL; - - return 0; + return devlink_port_get_phys_port_name(&port->dl_port, name, len); } /** From patchwork Thu Mar 22 10:55:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 889307 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="P5o7/jTU"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 406Nr12zssz9s1X for ; Thu, 22 Mar 2018 21:55:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754428AbeCVKzn (ORCPT ); Thu, 22 Mar 2018 06:55:43 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:41584 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754550AbeCVKzg (ORCPT ); Thu, 22 Mar 2018 06:55:36 -0400 Received: by mail-wr0-f196.google.com with SMTP id f14so8188956wre.8 for ; Thu, 22 Mar 2018 03:55:35 -0700 (PDT) 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=byddx8DB8D0Z6vzHF1p7pTfRUFCsbKwkE4l9ttib+MQ=; b=P5o7/jTUCQlzU4agSbYyjwPgMBmzmgNDYzprdkjXHizEuhhIFRZB4P8UyQV/fsiKAm mwxYUtMKr14T23XHMNJm1HLYv9GNhY4e4LITcbwgXw7Mgbf5BFLkk5zyUxv6zQpC/Qq8 3Ujdy1draAv+Zrrjsa8QL+4kDQqgcAZKmm6qqhBjh2OYFrh6pJMfPyCtnbw659O+JSti O1m7CaIlQT88ZbyYhuL3BQOY+vSys+DZqj14jFEX6MJYkcGhuZ27bZ1RbdhENeQGwZi9 mI3VETN2AZm74Zm3E/xuvE1vHrmdQeJShJ9vY0uEBTKmqEjh9AiM4KhQUvt3EXhzRo61 1Ksw== 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=byddx8DB8D0Z6vzHF1p7pTfRUFCsbKwkE4l9ttib+MQ=; b=pvpEa0m30melaO+zUWtzs0I05zG5QKUTb+FSW/bxJnUV8099SJjBG/w03Bw9S9D5gm pNpmeZXKvuk93GELk//eqfI7Qs9q1C6F+mKZ3RkfJkuKiy5ef+U0WDNAW54O86ZxVRzn aHAVDd/lmfU4fqhdGZNrWs3l75Vs1sIz4AGPxPOvJx0biBPX6nxj4izvz/OqTo+EGCAT uMZ7OTYkkw4sO6wuMGSWahEeLlEYyU5pTdtXDE2y0Irw9VK/ew87Mz5e2p2kRzyK8cP3 I/W5KUOKS6YYqXhKaGaA1zT7u5a90eDnrSs3d5Y+7rA9sScMkvZ4SQFku0+FrpzHi8uh MAog== X-Gm-Message-State: AElRT7FALbOYs7/QpTj/V44KsWlB3B4f54QmMBE1K1cdVKAcAw8gAuzD WtIpiL5JS7fjJmWmVlkNZDTAYi8Y X-Google-Smtp-Source: AG47ELv1hvSbM8d9Slf4jvMROHa6/4GNTU92uQS/n/58G5l8eb1S7bKzlpqZCpZlVuAj8kVrYaqRLA== X-Received: by 10.223.129.199 with SMTP id 65mr13707083wra.159.1521716135202; Thu, 22 Mar 2018 03:55:35 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id w74sm5401193wmd.27.2018.03.22.03.55.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Mar 2018 03:55:34 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, jakub.kicinski@netronome.com, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, dirk.vandermerwe@netronome.com, alexander.h.duyck@intel.com, ogerlitz@mellanox.com, dsahern@gmail.com, vijaya.guvva@cavium.com, satananda.burla@cavium.com, raghu.vatsavayi@cavium.com, felix.manlunas@cavium.com, gospo@broadcom.com, sathya.perla@broadcom.com, vasundhara-v.volam@broadcom.com, tariqt@mellanox.com, eranbe@mellanox.com, jeffrey.t.kirsher@intel.com Subject: [patch net-next RFC 12/12] nfp: flower: set sysfs link to device for representors Date: Thu, 22 Mar 2018 11:55:22 +0100 Message-Id: <20180322105522.8186-13-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180322105522.8186-1-jiri@resnulli.us> References: <20180322105522.8186-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Do this so the sysfs has "device" link correctly set. Signed-off-by: Jiri Pirko --- drivers/net/ethernet/netronome/nfp/flower/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.c b/drivers/net/ethernet/netronome/nfp/flower/main.c index 1890af7e6196..9751708585e4 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.c +++ b/drivers/net/ethernet/netronome/nfp/flower/main.c @@ -267,6 +267,7 @@ nfp_flower_spawn_vnic_reprs(struct nfp_app *app, app->pf->vf_cfg_mem + i * NFP_NET_CFG_BAR_SZ; } + SET_NETDEV_DEV(repr, &priv->nn->pdev->dev); eth_hw_addr_random(repr); port_id = nfp_flower_cmsg_pcie_port(nfp_pcie, vnic_type,