From patchwork Fri May 18 07:29:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 916053 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="ZtJDGvAx"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40nKYj59hJz9s33 for ; Fri, 18 May 2018 17:29:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752265AbeERH3P (ORCPT ); Fri, 18 May 2018 03:29:15 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:37779 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752014AbeERH3M (ORCPT ); Fri, 18 May 2018 03:29:12 -0400 Received: by mail-wm0-f67.google.com with SMTP id l1-v6so13257774wmb.2 for ; Fri, 18 May 2018 00:29:12 -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=fgqa4qWPNl24IVjPZsDxGxB6O1ZEVZk5kdSwzsajjZs=; b=ZtJDGvAxwZpl0HOLN8YpGx4HSEQzvy2HwZBkUwqqdB1XTp96TUwqSnHXdDnDfVm6ck 9v0x2shvuagQhzwk9YwzO43nXTj42V8ACAwnQ3qLtxnD7HkRZ8aBsmT8ogD+FnzR1rCM UQv/gA6FrmnKmyGuPb4TVB/REd+vEGcRfgZpZXaMR51qLJmdbmiV8eM5DcaMgPMegqib YTwYLoomHtlV5853Wam16TXwR/DUu01g8PkhBZeYToLgAlaDpLBE12ndjHkt/n/yST5g 7h+lZ1NwLFG2jpq5fkYxd5ZFkSAtiC430r6/Lgx9BFruKicaRSuDwHx/DM548+H+1jFh Kf+A== 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=fgqa4qWPNl24IVjPZsDxGxB6O1ZEVZk5kdSwzsajjZs=; b=IkNOGU71RuNPzMttSMiVGt3hlSZ81PO5t/yFmdY9tLqjpftLlwaW1GU/9VTstXWco9 AezlnO3BhmCNAlyITdtTj4k4HbJSv7S0aIS02GXmVxjgxsGbGz4xOFFNjkqpPAHpcD1Q WqNKIjgWNCnPPTYn1YeObWNzCn5W68XraF/VU5SBavrPxHQPmEQjM6bS0+5rAge0rYSO GkKLEzsvteX4ccAoLa8z7J/tFgEr21JKwDOqO0ZsiDGZS/vJyuxwM4WzcEkavpikuTcf q7sUUQ0vFIGfq49aoRqWLkcekdiK2XhScgNvjbqaI9wlUPdyo4yotCjicqIRD3ih1PcR 5KXg== X-Gm-Message-State: ALKqPwfCiPFZS/du9vitoJx1rbkG+8mUcX7OyX2taZ5NLtQP9MvQOGhD D32CbeloTlXNsFS+VgPNd9dn+Un3 X-Google-Smtp-Source: AB8JxZpm/8y6ajV8xb+1f7XgGILBVhxSlh6qFHBjTnHkhTNWDaPZjHZd5WgiqX13CH/bOzWoQ8Ys/Q== X-Received: by 2002:a1c:d546:: with SMTP id m67-v6mr4087695wmg.117.1526628551224; Fri, 18 May 2018 00:29:11 -0700 (PDT) Received: from localhost (ip-94-113-127-8.net.upcbroadband.cz. [94.113.127.8]) by smtp.gmail.com with ESMTPSA id e7-v6sm7156960wrn.88.2018.05.18.00.29.10 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 18 May 2018 00:29:10 -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, roopa@cumulusnetworks.com Subject: [patch net-next 1/5] devlink: introduce devlink_port_attrs_set Date: Fri, 18 May 2018 09:29:00 +0200 Message-Id: <20180518072904.29523-2-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180518072904.29523-1-jiri@resnulli.us> References: <20180518072904.29523-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 --- RFC->v1: - Reduced the nfp change just to simply use newly created attr_set func --- 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 | 4 +-- include/net/devlink.h | 20 +++++++---- include/uapi/linux/devlink.h | 3 ++ net/core/devlink.c | 46 ++++++++++++++++++------ 8 files changed, 64 insertions(+), 25 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c index e13ac3b8dff7..958769689ca2 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c @@ -1714,15 +1714,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 092d39399f3c..e65287c15afd 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 94132f6cec61..96f6d8af1fd8 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 a655c5850aa6..551e05067b1e 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..d7a768ff3112 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c @@ -175,8 +175,8 @@ int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port) 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_port_attrs_set(&port->dl_port, eth_port.label_port, + eth_port.is_split, eth_port.label_subport); devlink = priv_to_devlink(app->pf); diff --git a/include/net/devlink.h b/include/net/devlink.h index 2e4f71e16e95..d6ca92266709 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 { @@ -367,8 +373,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, @@ -466,8 +473,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 ad1317376798..8fde7d2df9b0 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); @@ -2971,19 +2988,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 Fri May 18 07:29:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 916051 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="UTJ7QHyD"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40nKYX0wB4z9s0q for ; Fri, 18 May 2018 17:29:20 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752279AbeERH3R (ORCPT ); Fri, 18 May 2018 03:29:17 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:39202 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751909AbeERH3N (ORCPT ); Fri, 18 May 2018 03:29:13 -0400 Received: by mail-wm0-f66.google.com with SMTP id f8-v6so13252926wmc.4 for ; Fri, 18 May 2018 00:29:13 -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=ZDQh6/5f5/dIi6oz7h1qcWXell7VClObhRneLLoPVHM=; b=UTJ7QHyDZQ+D4Af0BAfuln4r3T2889F+evrtNr5545bl0eGEn+Ja5MrSGRT/4dI0Qt OZgwUMqU7HE6z5XwkKpjeSZjo7dIAVdIAFqbBVUpoqTADEFLYlrFQ9TRR7hgP0OrJBjz 7kCjrQFLfpR6LstQafRawYEyU5j5kkiiI83ek48ejqqSftlvCZleEN8Ql+9655R7wdhJ 8MU12ddTUNqU/ag/2Sv2FtqpakZNWl0vkX2ae1HwJBm9xnABrPbDJVNIDMA876Wvvpns Rkf5FlJzDPJ8PzJGld14wY4o9Pj+CmuBNzO4/LXGRP4TyEMNqW8VXDJ7wFOkSuZRmNib B8qQ== 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=ZDQh6/5f5/dIi6oz7h1qcWXell7VClObhRneLLoPVHM=; b=WLOWZ2rzgVFPEpbIgRz01lgqoxXsXnFooqlsjQvEMie9zHnFRYLu+7utRDKrPRaBTT 5L6aeJ68joeASYB8GRucur4xYdJQMwX0XUWzIv60UTYT89O2w69Ke40qw+8xJ0qaCxXU VOHTJYoZeMi8wq29JbryeX0uelRiGxg5lAiDHfv0i3hLUU4lMJAyrbfXUw4690U7GfQZ zVvr054WLpLLBHbD1rruhtFzTVNbe/UDrHFb/TCYXWMqh8xSM58IxwnGOnZbOQqzMJi6 ZMhnOEtUBnZ+JkwQGjdppsHN8GJxRNn4Su+WtcSVLsPc3gFdjk/CxixABEWEgrL6cxLj qvfQ== X-Gm-Message-State: ALKqPwehaYYNYrq3cEn8mUzkfu9BwJfFMN555nTgMt7toLntZfPGuMZW 4cBomxlRkBuTpEG2+c4TW4roLws9 X-Google-Smtp-Source: AB8JxZoCSNbm/AvqBooLoV+tu9pruHKAoa0rBIkB5ga6RVmP62NIE0oJxWzhECDobsyjCW0maSjYbw== X-Received: by 2002:a1c:d50a:: with SMTP id m10-v6mr3855897wmg.72.1526628552226; Fri, 18 May 2018 00:29:12 -0700 (PDT) Received: from localhost (ip-94-113-127-8.net.upcbroadband.cz. [94.113.127.8]) by smtp.gmail.com with ESMTPSA id u68-v6sm6910262wmu.40.2018.05.18.00.29.11 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 18 May 2018 00:29:11 -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, roopa@cumulusnetworks.com Subject: [patch net-next 2/5] devlink: extend attrs_set for setting port flavours Date: Fri, 18 May 2018 09:29:01 +0200 Message-Id: <20180518072904.29523-3-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180518072904.29523-1-jiri@resnulli.us> References: <20180518072904.29523-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, cpu, dsa User can query this to see right away what is the purpose of each port. Signed-off-by: Jiri Pirko --- RFC->v1: - rebased - removed pf/vf reps flavours --- drivers/net/ethernet/mellanox/mlxsw/core.c | 4 ++-- drivers/net/ethernet/netronome/nfp/nfp_devlink.c | 5 +++-- include/net/devlink.h | 3 +++ include/uapi/linux/devlink.h | 11 +++++++++++ net/core/devlink.c | 5 +++++ 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c index 958769689ca2..a720aa11bcc0 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c @@ -1722,8 +1722,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 d7a768ff3112..b1e67cf4257a 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c @@ -175,8 +175,9 @@ int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port) return ret; devlink_port_type_eth_set(&port->dl_port, port->netdev); - devlink_port_attrs_set(&port->dl_port, eth_port.label_port, - eth_port.is_split, eth_port.label_subport); + devlink_port_attrs_set(&port->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, + eth_port.label_port, eth_port.is_split, + eth_port.label_subport); devlink = priv_to_devlink(app->pf); diff --git a/include/net/devlink.h b/include/net/devlink.h index d6ca92266709..6eae15cf0f57 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; @@ -374,6 +375,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, @@ -474,6 +476,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..75cb5450c851 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -132,6 +132,16 @@ 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_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 +234,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 8fde7d2df9b0..af90d237cbc2 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) @@ -2991,6 +2993,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 @@ -2998,12 +3001,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 Fri May 18 07:29:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 916056 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="qnqtY1dm"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40nKZ205nCz9s3M for ; Fri, 18 May 2018 17:29:46 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752354AbeERH3i (ORCPT ); Fri, 18 May 2018 03:29:38 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:37320 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752240AbeERH3O (ORCPT ); Fri, 18 May 2018 03:29:14 -0400 Received: by mail-wr0-f195.google.com with SMTP id h5-v6so8092145wrm.4 for ; Fri, 18 May 2018 00:29:14 -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=y1xbJF1MCk/I/4/sUwDhGojBuo8EsOAwYz0GBwBtw+8=; b=qnqtY1dmwkEsmV1zWPBCbUFaF7tBbGSFKIh4G1kUZnpqWUwJJPvUDLRCQTiGzt4u7+ pfOLQIdgHJbr1oXw8CsltLWA3WYKZwvsORYJjM3bRtGaepVaKFsps4WodamL0UMl1gMT /Isyqz1t+GyOZJ+m+LL/pgsw+8JBpfwpsV2OKVTj9XP7GNt6AakEWud5E/VYujWTXB50 iocAnKkrzW/lBSZ00k0CLGatexqJc+Qtp1RgXXdNUdbMBhUWnRbwsqi/GKYL4ydNHfwh elYfyVeRwbyz7k+JVjYKqS9H+vl2a4Mozu9QJ++I1OzXy7M+3LrYU+fpdqCHO3p1D2fR xPjQ== 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=y1xbJF1MCk/I/4/sUwDhGojBuo8EsOAwYz0GBwBtw+8=; b=UK+6TQQkZqgxhZkgCwwozP+nSm6pESQeR5IGPHnUdmzfNHf9QVaK1bDPvVZHhBiQWn VDk3km0KrW1bhq+1kaUBHrjFW0R7MagXOdzXYiwHyOjPCX8ojn0GbUKNfkiSyGoXIMUK JwUEJJmGaTji4BKoLiy1Od/JPyTU+LrY1EajfSof7X6dlsRAtt0JAVVXqyNKuMD+fXaQ nUXXPz5fH0bsahOIYyJPTsCzXHCceOcbd2dtPiYBEmkefWAgDRhGnhm2+kxjkDdll80m H/3gzvAGDUg7sI6uncoU7V3HOfRsdMT3sGZXibAyb6+xbu/KBv3Nx0vxw3INyxVoJq5c QJPQ== X-Gm-Message-State: ALKqPwcxQLMQRFVafOpd0ll0+mHdJu9EBFpdJNathvZiMyQL45WQyr29 t60/QJE4an5P2T4auQCarb+Cg2+b X-Google-Smtp-Source: AB8JxZqPaUgHq4VnOz7+iGKDoiOKGKX2beymQOdunSeFyyJT+/NT/akWy6Ueo73sRrTNuPJEHkzhQQ== X-Received: by 2002:adf:dd03:: with SMTP id a3-v6mr7438718wrm.0.1526628553205; Fri, 18 May 2018 00:29:13 -0700 (PDT) Received: from localhost (ip-94-113-127-8.net.upcbroadband.cz. [94.113.127.8]) by smtp.gmail.com with ESMTPSA id y45-v6sm6275983wrd.97.2018.05.18.00.29.12 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 18 May 2018 00:29:12 -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, roopa@cumulusnetworks.com Subject: [patch net-next 3/5] devlink: introduce a helper to generate physical port names Date: Fri, 18 May 2018 09:29:02 +0200 Message-Id: <20180518072904.29523-4-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180518072904.29523-1-jiri@resnulli.us> References: <20180518072904.29523-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 --- RFC->v1: - rebased --- include/net/devlink.h | 9 +++++++++ net/core/devlink.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/include/net/devlink.h b/include/net/devlink.h index 6eae15cf0f57..9686a1aa4ec9 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -378,6 +378,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, @@ -482,6 +484,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 af90d237cbc2..5c8a40e1a01e 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -3016,6 +3016,39 @@ 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_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 Fri May 18 07:29:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 916054 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="yjy4sUq+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40nKYl4t8Rz9s0q for ; Fri, 18 May 2018 17:29:31 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752307AbeERH32 (ORCPT ); Fri, 18 May 2018 03:29:28 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:41961 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752244AbeERH3P (ORCPT ); Fri, 18 May 2018 03:29:15 -0400 Received: by mail-wr0-f196.google.com with SMTP id w15-v6so529292wrp.8 for ; Fri, 18 May 2018 00:29:14 -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=rKvClRUjym8hqP0CrgnqRWxI2YyuxK2LbiMHqJikeWE=; b=yjy4sUq+EZnwDL0GE7mYTGt2KaweCe6UdAq0J6e7kjpnuHcQ8I+WY0fZ6HrmCIGXrj DZF4t4BV6S8WC2fTGjbDKHH3HIq/t478nlpmJVkU39ptLGD4GpkQWETT9Drn21PDRQfv jLfm45rDxVVwefQuSG2LqBX5F0uOKA/8bI/42uNA8OpSxzpHQsI/b0zg4RVVeewWoItk IJpXPytkaSbN7A7dlxh7vTZ9HUdazBgpcezBH73WuxoP/x3nnJPdvGpYEyM160SCSbV6 ONEOMHGkKim72O6Ulp4mR+uxQYTBXR8rBa+TzHgb4cO+hkEUI0z7rDlQRAwM4WkpSORm YvCA== 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=rKvClRUjym8hqP0CrgnqRWxI2YyuxK2LbiMHqJikeWE=; b=uGlypSIaCKHtX0Fb3By1SSWCHH8gKOPsHjX+uIqAqHTo7g8nNy4jG5X6M4MM7Z1kRk CxNHR3jfaI7AoQBgIgtxiNxBSWMYNpj1NT+AmG5ExIyc6cO9KZtbKpg+Z2WIbQVuHXW6 4mL2fza+C+WCY5TnfGHAGOl7MzR+TtH9yqz4YFcaHpsLtYa+yuePZVAokJ5bJu6XN7BY 3KfpGs9WuhfVU/ZxoLFksqmnuWEmT3gq9iW6BfnbCLBzJZcDCBrSON97Ju5wHFFKWISO AUSyU7+oJL3754B4roEttmimZ2DXtTIRLBg76rDk6nlp6SAUxJw52GBww4P7//zVjf+2 aIGg== X-Gm-Message-State: ALKqPwcyqjIWIbx1+fubWqwj3nM9fivoohTqqcms2zsuTheUa9iFsWZ3 13V7WYPdV1lZ1PtJLTgXjbwPyGIE X-Google-Smtp-Source: AB8JxZqSBbMIO0ZgQEN68QZ4h1Id2sPPTFOk8X7uXLZmXJivdkjB5tc4hoDx2hiuZ2M9OTQuX1xYRA== X-Received: by 2002:adf:8861:: with SMTP id e30-v6mr6422640wre.252.1526628554235; Fri, 18 May 2018 00:29:14 -0700 (PDT) Received: from localhost (ip-94-113-127-8.net.upcbroadband.cz. [94.113.127.8]) by smtp.gmail.com with ESMTPSA id m69-v6sm11592965wmd.47.2018.05.18.00.29.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 18 May 2018 00:29:13 -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, roopa@cumulusnetworks.com Subject: [patch net-next 4/5] dsa: set devlink port attrs for dsa ports Date: Fri, 18 May 2018 09:29:03 +0200 Message-Id: <20180518072904.29523-5-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180518072904.29523-1-jiri@resnulli.us> References: <20180518072904.29523-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 --- RFC->v1: - added missing break pointed out by Andrew --- net/dsa/dsa2.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index adf50fbc4c13..00126cda4319 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -270,7 +270,28 @@ 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; + } + break; 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 +300,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 Fri May 18 07:29:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 916052 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="sdzlmjDI"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40nKYd3nH9z9s0q for ; Fri, 18 May 2018 17:29:25 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752226AbeERH3W (ORCPT ); Fri, 18 May 2018 03:29:22 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:38968 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752014AbeERH3Q (ORCPT ); Fri, 18 May 2018 03:29:16 -0400 Received: by mail-wr0-f193.google.com with SMTP id w18-v6so4331610wrn.6 for ; Fri, 18 May 2018 00:29:16 -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=TYNzRqdQTu5D/sdp3rCzGHNPyTtxarqLC/E0fms/EqE=; b=sdzlmjDIPQ/L5gl6P1epE0taG2yTNPH3HDdfeZK0MUuV0IVE64FxRvA9+rlTanZ9vy ZlttyRJWYeKlIy5dP0B05TH8b5MoBxLBDaD/Gomf9B9pMZlYypD+WtBR8lhclZK6aAyD 9s3vxIrMBPayqSHjEeIUdtlPjnY26RSmIE02vvY1fZKcm60trXafVNEWKk8aMfy3MzBW qUSMsWNGDrLndG90gt7MBjZe39x0qkKwI+bHR2oXSs6jt5TrvSuk0Gj9VyhlyTCaum3o gJYc14YYst2TRieTVrWBQeI3H65Yz+kiv+jJis0ezQhdZBfYHlVLuR9wY/HMsRcqiMpB gU2Q== 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=TYNzRqdQTu5D/sdp3rCzGHNPyTtxarqLC/E0fms/EqE=; b=cJZ/JEAtjT1RDotPJPM/bmzAXfVrFMRf93zHIOipopjRs93/tA7fFbJ/mWN9NKAahO VQerd1C8BNmYGgIAQJ9/kNuHQDe75Mns9+rDIHGsBOrg2MIoa0ImSjqFZ5AwpR7L/Xuu DXyDDey6oVU1Id1EWjpOqtshzZK1qxtBXtHaRc5vFlVCWvXHwBZWjui/KzdlFsbffiFm plbu2aQHZdltEAnUAq3b0iRme7o8tT1AogzA+Cy7Z5KvuOSY3r6lMtMaVyvQr/AK4Piu iVdFo/16JCzgxNxFfmub1abb96woZZoFiPNGBUdwhOZTnEZtJUWIuNlFZ5J0bMrmw2+b NC+A== X-Gm-Message-State: ALKqPwdMlNJhESsboW1nntJlLvJsApApYo6XbvoYl5Ey++UsdaVE5m/R QoOP+OjDdDHHklO7p9NsWihNEWO4 X-Google-Smtp-Source: AB8JxZqHdmUhl7J3a13T2ZiZg+RkZDYOJUhIGXa+a+CmYqYW7H5z3g5XXiLg7AX/MEM59ZzJ9DC6OA== X-Received: by 2002:adf:e447:: with SMTP id t7-v6mr6620153wrm.143.1526628555193; Fri, 18 May 2018 00:29:15 -0700 (PDT) Received: from localhost (ip-94-113-127-8.net.upcbroadband.cz. [94.113.127.8]) by smtp.gmail.com with ESMTPSA id u35-v6sm8914900wrc.29.2018.05.18.00.29.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 18 May 2018 00:29:14 -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, roopa@cumulusnetworks.com Subject: [patch net-next 5/5] mlxsw: use devlink helper to generate physical port name Date: Fri, 18 May 2018 09:29:04 +0200 Message-Id: <20180518072904.29523-6-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180518072904.29523-1-jiri@resnulli.us> References: <20180518072904.29523-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 a720aa11bcc0..a38faec45b30 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c @@ -1763,6 +1763,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 e65287c15afd..4eac7fbd07d5 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 96f6d8af1fd8..bb252b36994d 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 551e05067b1e..3922c1cfe5f5 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 = {