From patchwork Fri Sep 25 23:04:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1371646 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=KFMo+SfO; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BynYN5Cz6z9sTN for ; Sat, 26 Sep 2020 09:04:40 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726559AbgIYXEj (ORCPT ); Fri, 25 Sep 2020 19:04:39 -0400 Received: from mail-eopbgr80051.outbound.protection.outlook.com ([40.107.8.51]:28545 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726694AbgIYXEj (ORCPT ); Fri, 25 Sep 2020 19:04:39 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A3moGTDrtGlrqM9+7n/xmY2ynamkmAoNTwz8bxUWbtYsTWt2PKyoBJ5Dg2bm23nE5JwcRnZs8KlCS0tSvUBvoAzRPnHM1L03LRy03ywKFWZW7m63yY+kc54z7Qve6cyYojDvnh1kbn9SzY7qKZqBjnNoY7+HWMkY3GKHpOlIgxlo3gdmeA50NDWHlx6mSa0cCWbpG5sh5MjTEtY4dVEiQB8F3RbZgboGw1xXbD9VWnM+KEF+PoVEOat4yLNq6WgRF3qEuoW5Wv9LCyPyFh7GRgn9iY0LQMOQNUEO7I11JdU+pBrhQDmvcKn6KbpamY59WHQDu39WkHOIgzhwsAR4eA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I7e+qcOdPYbP1hHz2Qlnf7SSHkQMBABCIsTnkdfJgG4=; b=B/9cOnTBCH5dx2KwPZLSQYFEKLnOj4IkzWzpKtSwMUT76qScO24/A73bNNVVRcox47LejA7rkeisimvMBQFDbeW+OVBcXYbfGGv3KqlA7RhErSZi7teZ24675pXJ1bsSqtv16YHm8ctbjtkpazr4TdwlKNzYRlTIMZNkyTTKez++Zksmb+nmOtnQrRJ9hdtLVypUrNJ9qk8NbLpe9Qf7jkoKNaHNMAR4FxkbyeIb2J62P4wmlfyhti+j7zeEwx3U6Dp0aindM602uIPM3GxttsNUqrvBsiSMCXK28dyKz6WcGPz6SMS93YUDgELNATfQBH2zXInGHTomv77RDe4fbA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I7e+qcOdPYbP1hHz2Qlnf7SSHkQMBABCIsTnkdfJgG4=; b=KFMo+SfOGq2F8woG17m2+YH32X4FNfTmq9GCoHsSMt3UnT5NEcQ97yzNL7N2m4FiIP68E97zGoBhvWcVFwS+/tr+8R6B6X9N1H+uMY8MXwA260FRYvKnn2Zq4kltRXwWhYRrvT3K2HQf3PPTZqcyx4ChQUoRbx4qF3hvgyrFUKc= Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) by VI1PR04MB3968.eurprd04.prod.outlook.com (2603:10a6:803:3d::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22; Fri, 25 Sep 2020 23:04:35 +0000 Received: from VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d]) by VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d%3]) with mapi id 15.20.3412.024; Fri, 25 Sep 2020 23:04:35 +0000 From: Vladimir Oltean To: davem@davemloft.net, netdev@vger.kernel.org Cc: andrew@lunn.ch, vivien.didelot@gmail.com, f.fainelli@gmail.com, kuba@kernel.org, cphealy@gmail.com, jiri@nvidia.com Subject: [PATCH v2 net-next 1/3] net: dsa: sja1105: move devlink param code to sja1105_devlink.c Date: Sat, 26 Sep 2020 02:04:19 +0300 Message-Id: <20200925230421.711991-2-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200925230421.711991-1-vladimir.oltean@nxp.com> References: <20200925230421.711991-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: VI1PR06CA0169.eurprd06.prod.outlook.com (2603:10a6:803:c8::26) To VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (188.25.217.212) by VI1PR06CA0169.eurprd06.prod.outlook.com (2603:10a6:803:c8::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22 via Frontend Transport; Fri, 25 Sep 2020 23:04:34 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [188.25.217.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3510b7f2-98b7-456e-5f4e-08d861a75e5b X-MS-TrafficTypeDiagnostic: VI1PR04MB3968: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: viPxXmo9j/ZIXQy92d1ZqoHTaooEOXauEjQA1Utn4CRV4+irdNskYt452+SzyTTJQW1aO/v1pTsaci2DomObQgXH+Uml3hbezGXfBD6kZ33SrxYDjC8//QjJZHikjAv9kYPdyfjYiFTNbliQhFeMAzLgdRttbnybMNvlPa6/fx+HWNGCyGYuDFq3MW/31M1lRX27J+nTrxMiRm5rH79Xbqg3ync/xwibrbQRbP6fkKWtCNK8eLK3X3ByQet7J86s9A9j6zU4icqQE0tYIMb68a7qQn0yrlM+2DDSQPsotYCrqiAL035GZYVU6tyGYpE1e1UOLIpFDuFS/pcJoTvtSoYmcsQrlIBk16hAc2nDVuJxpQEu7TYY6Zd6eKq7qCPOtEDI7RdpWnIhPjB++2GvvvGimmpeWKO0XPpZIAVCgIr4LTCoBJZN5opT3jj+i6Wv X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5696.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(39850400004)(396003)(346002)(366004)(136003)(478600001)(5660300002)(83380400001)(86362001)(66946007)(69590400008)(1076003)(316002)(6506007)(52116002)(16526019)(6512007)(36756003)(66476007)(66556008)(2906002)(44832011)(6666004)(8936002)(8676002)(26005)(4326008)(2616005)(956004)(6486002)(186003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: jhYtkdoHknMUVNaA2oG/mckkG/XJcTlZirR1DRm+Z+H7bMf0tEFRdRa/RSVCFN1xJH6eLGKp+zyGN1USV8Y5aR4iMIa/B+Y+M8sStxaDAoUGT9EhgPFLReOh82FosVtomLtAOk9jF9aGlF0rajXgBZQ4aMRH+gq9Qcikqk/oAq4PwfFaCJZlb/6Gc/N2I5S89/VFo1T7b+Nkosu2IxGNSL/AirPpEpf61DpxiU3pHCqtJRonn+7UI5LIfusqL9sNQAHUZrZtfWoCk26yPVMbHAXRooYD/h3vgrS3vH28M5d3EfMf8XPHp0Ua6hTZBfepdejcN0jd+9hMoyPPZ92CEJ7MvXV1spTatauyTRNd1YnOZUvPemM66aNMxVau0i1fuoB4qf4pzVUYL76mTP/VAVDWDbZx55btp1kcWbIqkgEsgXivFRu5wXwWWeUdrH5VFxtNFrmM0uVhR7SADpv41/3+eH4Pqu1LKqtMPIgeUxS/S4ovdR3GVUhHUuCiE5rLTJYCVuFmQb04D+aoun5pFoejNzS06uwsq+KBh6xUFsxM3ldFX9eYHjclwD12jyVmTmXz2nyZSqaFQDF/RU1apzHHVmSyg6ZgIg9++ktw6edzpZ6r5kDKnt+Mzw+w/1molEYyLRMW0YrLhbgd+ZzGew== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3510b7f2-98b7-456e-5f4e-08d861a75e5b X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5696.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2020 23:04:35.2349 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: q64mp8kiCpAHSNWZPZPGmo3SDtqKi/V+j16jt6GXcV3knMVwIwchhHHaLdvdxDTELZJS4tj/KwpRcUeA8pcRgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3968 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We'll have more devlink code soon. Group it together in a separate translation object. Signed-off-by: Vladimir Oltean --- Changes in v2: None. drivers/net/dsa/sja1105/Makefile | 1 + drivers/net/dsa/sja1105/sja1105.h | 10 +- drivers/net/dsa/sja1105/sja1105_devlink.c | 119 ++++++++++++++++++++++ drivers/net/dsa/sja1105/sja1105_main.c | 105 +------------------ 4 files changed, 132 insertions(+), 103 deletions(-) create mode 100644 drivers/net/dsa/sja1105/sja1105_devlink.c diff --git a/drivers/net/dsa/sja1105/Makefile b/drivers/net/dsa/sja1105/Makefile index c88e56a29db8..a860e3a910be 100644 --- a/drivers/net/dsa/sja1105/Makefile +++ b/drivers/net/dsa/sja1105/Makefile @@ -6,6 +6,7 @@ sja1105-objs := \ sja1105_main.o \ sja1105_flower.o \ sja1105_ethtool.o \ + sja1105_devlink.o \ sja1105_clocking.o \ sja1105_static_config.o \ sja1105_dynamic_config.o \ diff --git a/drivers/net/dsa/sja1105/sja1105.h b/drivers/net/dsa/sja1105/sja1105.h index a93f580b558a..d043332cbc02 100644 --- a/drivers/net/dsa/sja1105/sja1105.h +++ b/drivers/net/dsa/sja1105/sja1105.h @@ -244,9 +244,17 @@ enum sja1105_reset_reason { int sja1105_static_config_reload(struct sja1105_private *priv, enum sja1105_reset_reason reason); - +int sja1105_vlan_filtering(struct dsa_switch *ds, int port, bool enabled); void sja1105_frame_memory_partitioning(struct sja1105_private *priv); +/* From sja1105_devlink.c */ +int sja1105_devlink_setup(struct dsa_switch *ds); +void sja1105_devlink_teardown(struct dsa_switch *ds); +int sja1105_devlink_param_get(struct dsa_switch *ds, u32 id, + struct devlink_param_gset_ctx *ctx); +int sja1105_devlink_param_set(struct dsa_switch *ds, u32 id, + struct devlink_param_gset_ctx *ctx); + /* From sja1105_spi.c */ int sja1105_xfer_buf(const struct sja1105_private *priv, sja1105_spi_rw_mode_t rw, u64 reg_addr, diff --git a/drivers/net/dsa/sja1105/sja1105_devlink.c b/drivers/net/dsa/sja1105/sja1105_devlink.c new file mode 100644 index 000000000000..03454638c5a8 --- /dev/null +++ b/drivers/net/dsa/sja1105/sja1105_devlink.c @@ -0,0 +1,119 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2018-2019, Vladimir Oltean + */ +#include "sja1105.h" + +static int sja1105_best_effort_vlan_filtering_get(struct sja1105_private *priv, + bool *be_vlan) +{ + *be_vlan = priv->best_effort_vlan_filtering; + + return 0; +} + +static int sja1105_best_effort_vlan_filtering_set(struct sja1105_private *priv, + bool be_vlan) +{ + struct dsa_switch *ds = priv->ds; + bool vlan_filtering; + int port; + int rc; + + priv->best_effort_vlan_filtering = be_vlan; + + rtnl_lock(); + for (port = 0; port < ds->num_ports; port++) { + struct dsa_port *dp; + + if (!dsa_is_user_port(ds, port)) + continue; + + dp = dsa_to_port(ds, port); + vlan_filtering = dsa_port_is_vlan_filtering(dp); + + rc = sja1105_vlan_filtering(ds, port, vlan_filtering); + if (rc) + break; + } + rtnl_unlock(); + + return rc; +} + +enum sja1105_devlink_param_id { + SJA1105_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX, + SJA1105_DEVLINK_PARAM_ID_BEST_EFFORT_VLAN_FILTERING, +}; + +int sja1105_devlink_param_get(struct dsa_switch *ds, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct sja1105_private *priv = ds->priv; + int err; + + switch (id) { + case SJA1105_DEVLINK_PARAM_ID_BEST_EFFORT_VLAN_FILTERING: + err = sja1105_best_effort_vlan_filtering_get(priv, + &ctx->val.vbool); + break; + default: + err = -EOPNOTSUPP; + break; + } + + return err; +} + +int sja1105_devlink_param_set(struct dsa_switch *ds, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct sja1105_private *priv = ds->priv; + int err; + + switch (id) { + case SJA1105_DEVLINK_PARAM_ID_BEST_EFFORT_VLAN_FILTERING: + err = sja1105_best_effort_vlan_filtering_set(priv, + ctx->val.vbool); + break; + default: + err = -EOPNOTSUPP; + break; + } + + return err; +} + +static const struct devlink_param sja1105_devlink_params[] = { + DSA_DEVLINK_PARAM_DRIVER(SJA1105_DEVLINK_PARAM_ID_BEST_EFFORT_VLAN_FILTERING, + "best_effort_vlan_filtering", + DEVLINK_PARAM_TYPE_BOOL, + BIT(DEVLINK_PARAM_CMODE_RUNTIME)), +}; + +static int sja1105_setup_devlink_params(struct dsa_switch *ds) +{ + return dsa_devlink_params_register(ds, sja1105_devlink_params, + ARRAY_SIZE(sja1105_devlink_params)); +} + +static void sja1105_teardown_devlink_params(struct dsa_switch *ds) +{ + dsa_devlink_params_unregister(ds, sja1105_devlink_params, + ARRAY_SIZE(sja1105_devlink_params)); +} + +int sja1105_devlink_setup(struct dsa_switch *ds) +{ + int rc; + + rc = sja1105_setup_devlink_params(ds); + if (rc) + return rc; + + return 0; +} + +void sja1105_devlink_teardown(struct dsa_switch *ds) +{ + sja1105_teardown_devlink_params(ds); +} diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c index 4a298729937b..de4773e99549 100644 --- a/drivers/net/dsa/sja1105/sja1105_main.c +++ b/drivers/net/dsa/sja1105/sja1105_main.c @@ -2634,7 +2634,7 @@ static int sja1105_vlan_prepare(struct dsa_switch *ds, int port, * which can only be partially reconfigured at runtime (and not the TPID). * So a switch reset is required. */ -static int sja1105_vlan_filtering(struct dsa_switch *ds, int port, bool enabled) +int sja1105_vlan_filtering(struct dsa_switch *ds, int port, bool enabled) { struct sja1105_l2_lookup_params_entry *l2_lookup_params; struct sja1105_general_params_entry *general_params; @@ -2864,105 +2864,6 @@ static const struct dsa_8021q_ops sja1105_dsa_8021q_ops = { .vlan_del = sja1105_dsa_8021q_vlan_del, }; -static int sja1105_best_effort_vlan_filtering_get(struct sja1105_private *priv, - bool *be_vlan) -{ - *be_vlan = priv->best_effort_vlan_filtering; - - return 0; -} - -static int sja1105_best_effort_vlan_filtering_set(struct sja1105_private *priv, - bool be_vlan) -{ - struct dsa_switch *ds = priv->ds; - bool vlan_filtering; - int port; - int rc; - - priv->best_effort_vlan_filtering = be_vlan; - - rtnl_lock(); - for (port = 0; port < ds->num_ports; port++) { - struct dsa_port *dp; - - if (!dsa_is_user_port(ds, port)) - continue; - - dp = dsa_to_port(ds, port); - vlan_filtering = dsa_port_is_vlan_filtering(dp); - - rc = sja1105_vlan_filtering(ds, port, vlan_filtering); - if (rc) - break; - } - rtnl_unlock(); - - return rc; -} - -enum sja1105_devlink_param_id { - SJA1105_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX, - SJA1105_DEVLINK_PARAM_ID_BEST_EFFORT_VLAN_FILTERING, -}; - -static int sja1105_devlink_param_get(struct dsa_switch *ds, u32 id, - struct devlink_param_gset_ctx *ctx) -{ - struct sja1105_private *priv = ds->priv; - int err; - - switch (id) { - case SJA1105_DEVLINK_PARAM_ID_BEST_EFFORT_VLAN_FILTERING: - err = sja1105_best_effort_vlan_filtering_get(priv, - &ctx->val.vbool); - break; - default: - err = -EOPNOTSUPP; - break; - } - - return err; -} - -static int sja1105_devlink_param_set(struct dsa_switch *ds, u32 id, - struct devlink_param_gset_ctx *ctx) -{ - struct sja1105_private *priv = ds->priv; - int err; - - switch (id) { - case SJA1105_DEVLINK_PARAM_ID_BEST_EFFORT_VLAN_FILTERING: - err = sja1105_best_effort_vlan_filtering_set(priv, - ctx->val.vbool); - break; - default: - err = -EOPNOTSUPP; - break; - } - - return err; -} - -static const struct devlink_param sja1105_devlink_params[] = { - DSA_DEVLINK_PARAM_DRIVER(SJA1105_DEVLINK_PARAM_ID_BEST_EFFORT_VLAN_FILTERING, - "best_effort_vlan_filtering", - DEVLINK_PARAM_TYPE_BOOL, - BIT(DEVLINK_PARAM_CMODE_RUNTIME)), -}; - -static int sja1105_setup_devlink_params(struct dsa_switch *ds) -{ - return dsa_devlink_params_register(ds, sja1105_devlink_params, - ARRAY_SIZE(sja1105_devlink_params)); -} - -static void sja1105_teardown_devlink_params(struct dsa_switch *ds) -{ - dsa_devlink_params_unregister(ds, sja1105_devlink_params, - ARRAY_SIZE(sja1105_devlink_params)); -} - /* The programming model for the SJA1105 switch is "all-at-once" via static * configuration tables. Some of these can be dynamically modified at runtime, * but not the xMII mode parameters table. @@ -3030,7 +2931,7 @@ static int sja1105_setup(struct dsa_switch *ds) ds->configure_vlan_while_not_filtering = true; - rc = sja1105_setup_devlink_params(ds); + rc = sja1105_devlink_setup(ds); if (rc < 0) return rc; @@ -3061,7 +2962,7 @@ static void sja1105_teardown(struct dsa_switch *ds) kthread_destroy_worker(sp->xmit_worker); } - sja1105_teardown_devlink_params(ds); + sja1105_devlink_teardown(ds); sja1105_flower_teardown(ds); sja1105_tas_teardown(ds); sja1105_ptp_clock_unregister(ds); From patchwork Fri Sep 25 23:04:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1371647 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=YctCcHIt; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BynYS25p3z9sRf for ; Sat, 26 Sep 2020 09:04:44 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729272AbgIYXEn (ORCPT ); Fri, 25 Sep 2020 19:04:43 -0400 Received: from mail-eopbgr80051.outbound.protection.outlook.com ([40.107.8.51]:28545 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729041AbgIYXEl (ORCPT ); Fri, 25 Sep 2020 19:04:41 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mmQD6gMmRGpLkuzwcJC5NuW4pE3dp0mrh1oOGY3h2zRWHeInNkW7NKOK+hYMIUZCIXqdmWWZoumBR+Dh95Yxo1zUoQSYupTIG+ziez84WzvwIpn+F6KRKd1jkbhsyzCHyhDR6w1GLMenvtlSlz9SGKXDGoYRdt8rtdmV7J1Yfbu0NO4kqQaVSxUvweR5SgMNVML08qmYsybWoFRaXSBw/JQjWm0nE2WcKU3DROMV03WxK3PR3uudfH6OSFLpBPkNh/EBOdP6pwbmZ7drN2e9dMO7WU9ujVsWinyZOKO2gEEcx66YZT2aDmujWNv4qzPUOaB2rb/bC0Xq0hu/ma/FeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sJpB5dKI/Wr3seU9Zhm5kK7xYA2mT73bluT6Ttr75YM=; b=n4irUb0V989/mo+cZBqr+UPJ16sdeByFQ+jsYUXPlle6eG4APT6sV0hWca+8UftHXs+FhBAOo1hu5W2O9PP+he1PGIfY8+B3m0reuVsoPizxPgFUrRFUQ6Wmju/6GrvjulRZ56fP6OPJWmhcX9wqCXg5q1NhZHmoQZOQ9MEYjt3oDBkU2ZTA5hhtL9JXbjVODTiEDEKnBvN3r6DMwrTOYn5s1CELuaSAVpIBdF9aJAGGbyzYafPoEbhx8jugd0Vrfm3xsdG7cALatiEO+rbNSqGKQ8gwd7My5JlHn1MgkUkuL6T/WuhcaI2LfYu7hk2lPe0jkdNl+hpArfLXLMJykw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sJpB5dKI/Wr3seU9Zhm5kK7xYA2mT73bluT6Ttr75YM=; b=YctCcHItMmsb4gPVPsTHCIzOorGwzUK9MvI9ugDgu2zk7uw6v69Vfp5ZfYKlZOKe8djv0NdY+LxTIkITnudrXJnISTHeKmzFpE0HE+dX51jPGNNdfIJ2cm3ZYgspMi12cdWzkCzcd1A0idmB44KTSMST4tM55TJHrI58CYxz1MU= Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) by VI1PR04MB3968.eurprd04.prod.outlook.com (2603:10a6:803:3d::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22; Fri, 25 Sep 2020 23:04:35 +0000 Received: from VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d]) by VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d%3]) with mapi id 15.20.3412.024; Fri, 25 Sep 2020 23:04:35 +0000 From: Vladimir Oltean To: davem@davemloft.net, netdev@vger.kernel.org Cc: andrew@lunn.ch, vivien.didelot@gmail.com, f.fainelli@gmail.com, kuba@kernel.org, cphealy@gmail.com, jiri@nvidia.com Subject: [PATCH v2 net-next 2/3] net: dsa: sja1105: expose static config as devlink region Date: Sat, 26 Sep 2020 02:04:20 +0300 Message-Id: <20200925230421.711991-3-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200925230421.711991-1-vladimir.oltean@nxp.com> References: <20200925230421.711991-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: VI1PR06CA0169.eurprd06.prod.outlook.com (2603:10a6:803:c8::26) To VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (188.25.217.212) by VI1PR06CA0169.eurprd06.prod.outlook.com (2603:10a6:803:c8::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22 via Frontend Transport; Fri, 25 Sep 2020 23:04:35 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [188.25.217.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 734220e5-9007-42fd-9350-08d861a75f1e X-MS-TrafficTypeDiagnostic: VI1PR04MB3968: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PXuZa2HuyL3891hEsPhtf1k/LJEpGxVhKNbhEm9VzL1dOfOv49qkot9IDZOSsx9im4WEgOaEifGQJom5I96Z1r6mnrGKdXXl2BfdnrvVSzrSxQfNn8iAnQKRzXo8hkC7uq4tQN9q3Kn/y19DfP3A0g/SLr52g2W6FrFyoDDuDD59Ulz57by099F/AXvQLnUOWPWVJR2MItjP6TEz/Nc842/iU4wiN5cN22X5aScLIk/ZavL+FANoIKIt2O7PSKhlzmllKh+mA5oDOQS5o3dwTADhFcYmLYuleKmYqqpTIY6sGqdXzFnkGm+c+uDnS21HE4BbksNzZz48J7bBF9bCKTEzlninIY2VMTGyaKcFw1Zx+si1nVvkF48NeUPFAph+u1bNSxfJQMu7K2a+z6WgMI5cRO5Vx0MENI7nKKo6xm4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5696.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(39850400004)(396003)(346002)(366004)(136003)(478600001)(5660300002)(83380400001)(86362001)(66946007)(69590400008)(1076003)(316002)(6506007)(52116002)(16526019)(6512007)(36756003)(66476007)(66556008)(2906002)(44832011)(6666004)(8936002)(8676002)(26005)(4326008)(2616005)(956004)(6486002)(186003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 06rpRpZ2rAFrzTgOYAVQt3PPPImFM686ljrrD2YrNAAAyfxJ0k4NahA0ie3DrnC0YyPBl7Idmwp8RkuMLrK5V0qgosdyKjg5s7NBmLOi5Qi2I0jmulDFDbDQB4G0WbX9ltQU4ogKofDYm/favBMnyOBwcJMSduIW/7i/MPJI5iduwNKV8oOp/vrUOrN6KqjIQhQm3HYOoRPLvwonmV8Hl2QmX5VEGtnrLEZRlOsiUQABUf+E/rixuJOzTNfSpNn/LSkP/r1k8hFjHDBpeOPau/cIotYU0fxl0feuc6OHKccLuS+U9UIRyhEeXMxfUsbtHZ/Tzln22DyZO/5HCS0t2ANPPPg+O7CiR++VAoC1RpCBZT6M9RmMKxCkDijxEGfnhzm48fucWcj2HKfyaMPJcEGV1gfT8BCjjb6MR5NPW0l3Ooqb/FNNaWyCIGCwHUGOOAW7ZdigpKyBjFRF+xH0WRHRuU5NUbc7rQ9HeGGFIBhgErIj8GE7L151dJeervwzLNAOzFdllSmKONYJT3dyfby+jLcprFVJFuz3HLy6xnbLmapMJk18Xqhp9En4Zhb1iurYZOdeadKB63TPaAtOjBWvd4QrC2NXNtXjjVtK0YMiHM+sJ8KXqEO3gyCl5AkadBnRZmZsYacVN+KcfWNRhw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 734220e5-9007-42fd-9350-08d861a75f1e X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5696.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2020 23:04:35.8435 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tPbUvXG9z7uF04KUyJvQkdnvuDk+JZ1w7X9t7yl2wfL0rpTPUQ/h3aoYhCWXaDe/r/C5Wt8+79Nz25dFi8B5IQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3968 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org As explained in Documentation/networking/dsa/sja1105.rst, this switch has a static config held in the driver's memory and re-uploaded from time to time into the device (after any major change). The format of this static config is in fact described in UM10944.pdf and it contains all the switch's settings (it also contains device ID, table CRCs, etc, just like in the manual). So it is a useful and universal devlink region to expose to user space, for debugging purposes. Signed-off-by: Vladimir Oltean --- Changes in v2: Tear down devlink params on initialization failure. drivers/net/dsa/sja1105/sja1105.h | 3 + drivers/net/dsa/sja1105/sja1105_devlink.c | 119 ++++++++++++++++++++++ drivers/net/dsa/sja1105/sja1105_spi.c | 5 +- 3 files changed, 124 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/sja1105/sja1105.h b/drivers/net/dsa/sja1105/sja1105.h index d043332cbc02..4af70f619d8e 100644 --- a/drivers/net/dsa/sja1105/sja1105.h +++ b/drivers/net/dsa/sja1105/sja1105.h @@ -218,6 +218,7 @@ struct sja1105_private { struct mutex mgmt_lock; struct dsa_8021q_context *dsa_8021q_ctx; enum sja1105_vlan_state vlan_state; + struct devlink_region **regions; struct sja1105_cbs_entry *cbs; struct sja1105_tagger_data tagger_data; struct sja1105_ptp_data ptp_data; @@ -265,6 +266,8 @@ int sja1105_xfer_u32(const struct sja1105_private *priv, int sja1105_xfer_u64(const struct sja1105_private *priv, sja1105_spi_rw_mode_t rw, u64 reg_addr, u64 *value, struct ptp_system_timestamp *ptp_sts); +int static_config_buf_prepare_for_upload(struct sja1105_private *priv, + void *config_buf, int buf_len); int sja1105_static_config_upload(struct sja1105_private *priv); int sja1105_inhibit_tx(const struct sja1105_private *priv, unsigned long port_bitmap, bool tx_inhibited); diff --git a/drivers/net/dsa/sja1105/sja1105_devlink.c b/drivers/net/dsa/sja1105/sja1105_devlink.c index 03454638c5a8..07ae6913d188 100644 --- a/drivers/net/dsa/sja1105/sja1105_devlink.c +++ b/drivers/net/dsa/sja1105/sja1105_devlink.c @@ -1,8 +1,120 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2018-2019, Vladimir Oltean + * Copyright 2020 NXP Semiconductors */ #include "sja1105.h" +/* Since devlink regions have a fixed size and the static config has a variable + * size, we need to calculate the maximum possible static config size by + * creating a dummy config with all table entries populated to the max, and get + * its packed length. This is done dynamically as opposed to simply hardcoding + * a number, since currently not all static config tables are implemented, so + * we are avoiding a possible code desynchronization. + */ +static size_t sja1105_static_config_get_max_size(struct sja1105_private *priv) +{ + struct sja1105_static_config config; + enum sja1105_blk_idx blk_idx; + int rc; + + rc = sja1105_static_config_init(&config, + priv->info->static_ops, + priv->info->device_id); + if (rc) + return 0; + + for (blk_idx = 0; blk_idx < BLK_IDX_MAX; blk_idx++) { + struct sja1105_table *table = &config.tables[blk_idx]; + + table->entry_count = table->ops->max_entry_count; + } + + return sja1105_static_config_get_length(&config); +} + +static int +sja1105_region_static_config_snapshot(struct devlink *dl, + const struct devlink_region_ops *ops, + struct netlink_ext_ack *extack, + u8 **data) +{ + struct dsa_switch *ds = dsa_devlink_to_ds(dl); + struct sja1105_private *priv = ds->priv; + size_t max_len, len; + + len = sja1105_static_config_get_length(&priv->static_config); + max_len = sja1105_static_config_get_max_size(priv); + + *data = kcalloc(max_len, sizeof(u8), GFP_KERNEL); + if (!*data) + return -ENOMEM; + + return static_config_buf_prepare_for_upload(priv, *data, len); +} + +static struct devlink_region_ops sja1105_region_static_config_ops = { + .name = "static-config", + .snapshot = sja1105_region_static_config_snapshot, + .destructor = kfree, +}; + +enum sja1105_region_id { + SJA1105_REGION_STATIC_CONFIG = 0, +}; + +struct sja1105_region { + const struct devlink_region_ops *ops; + size_t (*get_size)(struct sja1105_private *priv); +}; + +static struct sja1105_region sja1105_regions[] = { + [SJA1105_REGION_STATIC_CONFIG] = { + .ops = &sja1105_region_static_config_ops, + .get_size = sja1105_static_config_get_max_size, + }, +}; + +static int sja1105_setup_devlink_regions(struct dsa_switch *ds) +{ + int i, num_regions = ARRAY_SIZE(sja1105_regions); + struct sja1105_private *priv = ds->priv; + const struct devlink_region_ops *ops; + struct devlink_region *region; + u64 size; + + priv->regions = kcalloc(num_regions, sizeof(struct devlink_region *), + GFP_KERNEL); + if (!priv->regions) + return -ENOMEM; + + for (i = 0; i < num_regions; i++) { + size = sja1105_regions[i].get_size(priv); + ops = sja1105_regions[i].ops; + + region = dsa_devlink_region_create(ds, ops, 1, size); + if (IS_ERR(region)) { + while (i-- >= 0) + dsa_devlink_region_destroy(priv->regions[i]); + return PTR_ERR(region); + } + + priv->regions[i] = region; + } + + return 0; +} + +static void sja1105_teardown_devlink_regions(struct dsa_switch *ds) +{ + int i, num_regions = ARRAY_SIZE(sja1105_regions); + struct sja1105_private *priv = ds->priv; + + for (i = 0; i < num_regions; i++) + dsa_devlink_region_destroy(priv->regions[i]); + + kfree(priv->regions); +} + static int sja1105_best_effort_vlan_filtering_get(struct sja1105_private *priv, bool *be_vlan) { @@ -110,10 +222,17 @@ int sja1105_devlink_setup(struct dsa_switch *ds) if (rc) return rc; + rc = sja1105_setup_devlink_regions(ds); + if (rc < 0) { + sja1105_teardown_devlink_params(ds); + return rc; + } + return 0; } void sja1105_devlink_teardown(struct dsa_switch *ds) { sja1105_teardown_devlink_params(ds); + sja1105_teardown_devlink_regions(ds); } diff --git a/drivers/net/dsa/sja1105/sja1105_spi.c b/drivers/net/dsa/sja1105/sja1105_spi.c index 704dcf1d1c01..591c5734747d 100644 --- a/drivers/net/dsa/sja1105/sja1105_spi.c +++ b/drivers/net/dsa/sja1105/sja1105_spi.c @@ -302,9 +302,8 @@ static int sja1105_status_get(struct sja1105_private *priv, * for upload requires the recalculation of table CRCs and updating the * structures with these. */ -static int -static_config_buf_prepare_for_upload(struct sja1105_private *priv, - void *config_buf, int buf_len) +int static_config_buf_prepare_for_upload(struct sja1105_private *priv, + void *config_buf, int buf_len) { struct sja1105_static_config *config = &priv->static_config; struct sja1105_table_header final_header; From patchwork Fri Sep 25 23:04:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1371648 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=lAdQi5db; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BynYX2sXCz9sRf for ; Sat, 26 Sep 2020 09:04:48 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729286AbgIYXEr (ORCPT ); Fri, 25 Sep 2020 19:04:47 -0400 Received: from mail-eopbgr80051.outbound.protection.outlook.com ([40.107.8.51]:28545 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726694AbgIYXEp (ORCPT ); Fri, 25 Sep 2020 19:04:45 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D+R24nCPifV0/KyHL9Uw1wDzYQlZPjAt1lOzWL0/W830a6OdiW6sQ/te1I7BW0QprOxOnoTiyjJU07qRXagrOpBCvqC/flMK8HHBGiiqvrTPNtR2G/Zzv39Pag/zCCTmx38bxVsgLG+24jsyZ7ZmbvalfVIQjm3WIKUJhkNb/9xTWnG/Qy67DZSM289s6qik/AkXMlfIuXkkPmze//e4FFYrdHAVw6itIR4vOgRE/yfHL0wmo1IJyiffkOJ9VBH0GQd45fp6o+DxW+dqyhKydpXIxhGSSiKqtI1XjkKFk0xuFcR+d/8wZ5N2/g4OueZnSaZNVTS5feRGvBkwsE64gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cU5mvOsDUh3Gj8Zcj2DfbcjfgBlNp/K94elCFWI8/o0=; b=R+Jn9i+rtCDi6zQ2IOiK8jaVy+X2SzANGrfBwFEgs02QVT4xJQYC/jxAN2gCOOcwEzGpPgGbbyi2BjjgMsHMWPizx0Dv/XJhPbjqg9288plAO0pR0dLf7RxyRucZfa2E2I23wSOsKMu2f705RNwdqKVcGTrkPeULpdjHlkkkM2vyGSLmcMKQtRE2E7YQGRD4YTv9eUVsEuVEpq/eZkNEd9BkPPONei0vtLaDvooi0/rB4b+/V+moI6Y0a9V/Ea1wjii18pGccJLlLBIipCc0CnHNRViccm5vcSCTBSJHdTYTOdSjh0dSWrpFJGhDreXBnqF66WTUnJOVvzLhjBO3Mg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cU5mvOsDUh3Gj8Zcj2DfbcjfgBlNp/K94elCFWI8/o0=; b=lAdQi5dbLT6vnhH6HZUssD1WLOKsbCTnAdkTU1IFkR984DfYUTwE5KdtB6VIrgmO27lX+tSil9P+7mE196jkZSdIC2fn/N8bEg5LuZnmZSMPHZ48VPlwMNAoUI6lDhCvnqDgYo8O+bgA9sQqx0ECf8MTAXWxGYMY308g7hjtQrg= Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) by VI1PR04MB3968.eurprd04.prod.outlook.com (2603:10a6:803:3d::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22; Fri, 25 Sep 2020 23:04:37 +0000 Received: from VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d]) by VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d%3]) with mapi id 15.20.3412.024; Fri, 25 Sep 2020 23:04:37 +0000 From: Vladimir Oltean To: davem@davemloft.net, netdev@vger.kernel.org Cc: andrew@lunn.ch, vivien.didelot@gmail.com, f.fainelli@gmail.com, kuba@kernel.org, cphealy@gmail.com, jiri@nvidia.com Subject: [PATCH v2 net-next 3/3] net: dsa: sja1105: implement .devlink_info_get Date: Sat, 26 Sep 2020 02:04:21 +0300 Message-Id: <20200925230421.711991-4-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200925230421.711991-1-vladimir.oltean@nxp.com> References: <20200925230421.711991-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: VI1PR06CA0169.eurprd06.prod.outlook.com (2603:10a6:803:c8::26) To VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (188.25.217.212) by VI1PR06CA0169.eurprd06.prod.outlook.com (2603:10a6:803:c8::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22 via Frontend Transport; Fri, 25 Sep 2020 23:04:36 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [188.25.217.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a385b0ab-37d2-44e3-a3db-08d861a75fab X-MS-TrafficTypeDiagnostic: VI1PR04MB3968: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eIj2OHeYAyIFdJ7665+G0ADt0+bGBa6RvF82t4RX5rIGNPTCC0Uz/AZPdFs3CAMYTK4T3B7jGRIhvisUSPeBhUv1sAp8In5Z+TpcL0OcdXMwsFj+xoRfbOlGDO3B/3Dveyet51xf58rXwNu0lBPscwicfZfAE33kPN4BIgwLOJ8t9BVwqIFyr1CTl54wyEBBkj+bwZR2RKye0A8RSJ43q2j7mZc3xNWqDpffQjkreOtBBLlKJ/pETLBzHNDyFL85153S/jihum/7Jl8eK1HGZ49i6IIuQTcDTnYyF4IS7JEBUR8O9MObj0uYG0pzaljqR3GgweXQNWAtPYLYJdx866SaZVqLO7q84Iqs/Ea3PTCvOo+LGmWNYkzpTziZ12BRyhM1+jB+v6WVzx/JucD4xgLbW0QGxZGEKjxv217skMR7YgiYLJg0zQq5HmZEY21KLWR9Slz5r1FR/nemPMwktw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5696.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(39850400004)(396003)(346002)(366004)(136003)(478600001)(5660300002)(86362001)(66946007)(69590400008)(1076003)(316002)(6506007)(52116002)(16526019)(6512007)(36756003)(66476007)(66556008)(2906002)(44832011)(6666004)(8936002)(8676002)(26005)(4326008)(2616005)(956004)(6486002)(186003)(142923001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: FbUVB6cL5AA9HnrmM97yaOqQZmgqsIwXIXjxoc67XYm40kRL5QUfiY6sH5+UFvbRAZrtG2iAT4GoYU5dhMmp5JBJvo7FjvWqFmE37nsXOky1CAVcNxcMwYGuvDuqhJPOeLWPoS6dlUIM//qCPT+dOPFS5sLqbiOQe20hkTfzFRXyQEFx043NMW1oaPsI1AHv1OZzGHSpd+Z5astCq9X4hkSRnNaTmAX3dSDVHRIc3VFqUZu4MtI4oKhkj/4GGDaC/NHDXyD2qiG9nCglKOXqXQnJMq8vZ0IU3N1B3v9xF5UDEjAqPVbBVtO14H8HYwsAmGpH4MLA61zm6pWEDfuhA2OutWjnblDSz32RrqK82Ml3q8BpnoSFyGEWU50bkPQl38QVz+XWvXe5DmtErhzFZKyw9c+bhicdGKnbgndwY8hlXNsqjBhNVlSZj9QWspzSqx0XTkkFoxc3jBTXIFDBVZ/X/4yAtDUhrj2tgGZ4S6URvmG+02vKRKAd2KEBmBGVnTOy51ZaNewIKRrwlWfxbcNBnGZ3Fogw5KBCBSFuLWV3/7AxKkUPaPnARUR3TdVKYqcaJ77h0oYDx5p/hed8Ili1betIGmX4c+6CEnlbGG6YrkflbBCgcNCV6GnFWXwMPLxpu+BvekqEdEdLNGi6mw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a385b0ab-37d2-44e3-a3db-08d861a75fab X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5696.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2020 23:04:37.0968 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ujWe7AsP8cxcJffthh66V00HZ2zZAf7bRLLmPC6n2UViPZQ0uSoxWhXPfmySGPYyQRTtJR/t2j0gsUbrmQwYRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3968 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Return the driver name and ASIC ID so that generic user space application are able to know they're looking at sja1105 devlink regions when pretty-printing them. Signed-off-by: Vladimir Oltean --- Changes in v2: Patch is new. drivers/net/dsa/sja1105/sja1105.h | 3 +++ drivers/net/dsa/sja1105/sja1105_devlink.c | 17 +++++++++++++++++ drivers/net/dsa/sja1105/sja1105_main.c | 1 + 3 files changed, 21 insertions(+) diff --git a/drivers/net/dsa/sja1105/sja1105.h b/drivers/net/dsa/sja1105/sja1105.h index 4af70f619d8e..d582308c2401 100644 --- a/drivers/net/dsa/sja1105/sja1105.h +++ b/drivers/net/dsa/sja1105/sja1105.h @@ -255,6 +255,9 @@ int sja1105_devlink_param_get(struct dsa_switch *ds, u32 id, struct devlink_param_gset_ctx *ctx); int sja1105_devlink_param_set(struct dsa_switch *ds, u32 id, struct devlink_param_gset_ctx *ctx); +int sja1105_devlink_info_get(struct dsa_switch *ds, + struct devlink_info_req *req, + struct netlink_ext_ack *extack); /* From sja1105_spi.c */ int sja1105_xfer_buf(const struct sja1105_private *priv, diff --git a/drivers/net/dsa/sja1105/sja1105_devlink.c b/drivers/net/dsa/sja1105/sja1105_devlink.c index 07ae6913d188..b4bf1b10e66c 100644 --- a/drivers/net/dsa/sja1105/sja1105_devlink.c +++ b/drivers/net/dsa/sja1105/sja1105_devlink.c @@ -214,6 +214,23 @@ static void sja1105_teardown_devlink_params(struct dsa_switch *ds) ARRAY_SIZE(sja1105_devlink_params)); } +int sja1105_devlink_info_get(struct dsa_switch *ds, + struct devlink_info_req *req, + struct netlink_ext_ack *extack) +{ + struct sja1105_private *priv = ds->priv; + int rc; + + rc = devlink_info_driver_name_put(req, "sja1105"); + if (rc) + return rc; + + rc = devlink_info_version_fixed_put(req, + DEVLINK_INFO_VERSION_GENERIC_ASIC_ID, + priv->info->name); + return rc; +} + int sja1105_devlink_setup(struct dsa_switch *ds) { int rc; diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c index de4773e99549..547487c535df 100644 --- a/drivers/net/dsa/sja1105/sja1105_main.c +++ b/drivers/net/dsa/sja1105/sja1105_main.c @@ -3316,6 +3316,7 @@ static const struct dsa_switch_ops sja1105_switch_ops = { .crosschip_bridge_leave = sja1105_crosschip_bridge_leave, .devlink_param_get = sja1105_devlink_param_get, .devlink_param_set = sja1105_devlink_param_set, + .devlink_info_get = sja1105_devlink_info_get, }; static const struct of_device_id sja1105_dt_ids[];