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,