From nobody Mon May 11 07:05:07 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D80F5C433EF for ; Tue, 12 Apr 2022 17:37:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358427AbiDLRjU (ORCPT ); Tue, 12 Apr 2022 13:39:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55354 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347117AbiDLRjI (ORCPT ); Tue, 12 Apr 2022 13:39:08 -0400 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [IPv6:2a00:1450:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FB6960DA0; Tue, 12 Apr 2022 10:36:50 -0700 (PDT) Received: by mail-ej1-x632.google.com with SMTP id lc2so18180482ejb.12; Tue, 12 Apr 2022 10:36:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3EM2w6CwmLOZ4E5PJhncFf+YcaaRZ3+rN6g0iyD9jns=; b=Kodbv0J9jTgxZltlP//7l0RwDy7tzDlqszVyMK8gnmgthMQhLX59MVR1ihg9RR9bhy gJl2p93yEQOZDqB5P0+oQJLfiKygxZ+Izm51yomA5s4plabw3BI7KDqIkgmZuwbr94Yf yAOMGE3hpsNtL/RYXPC8eVMxsXLwOEikxv95BHkTQm2VPBNtoHh3ttwe7sqNZ1SJpDRP S6ruGkAGT7hL5tyNXg+4Vwj5GKHm6hKgwUlPOrXSHoQBxAd3FnDFEy7IhlcDKK5b6bwd rxSFUMpeJoXovocFvpxZYWMQMdadwts02y5EueRr6d9f3bi5SyWfP501UYezRNPFlNSC k8TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3EM2w6CwmLOZ4E5PJhncFf+YcaaRZ3+rN6g0iyD9jns=; b=1N4+yyW6CB5CGGNy74misSoHEui3JgqUCCYgadhYl/kr9gkKI9KT5pWPZqMLzwol2v PvZZ6k6f1Gx7jLANEZ4Vvpb0CCMa0pyE/Qb5vsGU0IW4KLZZCnDlwHuvxrhKy9V99bYK Irpfzayml1xTPECK5THLGD7reHWpAttizHmScpj2spEFyP6MHlmCmxpdfOP8th5WUNnb a8AKE5/3tBLE9lPy9yYp5ArdoPxKdSzVPM6asLDvkrrsS7hmTGj67i2hkTzfBVzqv3Ne vLdC3B0XklfUVooUVK+km/Ntu+lMueo6cqPkkf4SnBm/Kz+fmg9zInSgLjsEW7cnbnPT l0rA== X-Gm-Message-State: AOAM531NWgrLlKDweWPodIZ4bLGJyPdXZQoaQ7M/apV3vCs6IEH2Rf3S 34I6+w8IMyPl3W5eGGdHhuM= X-Google-Smtp-Source: ABdhPJz9pfxJ6t7Y8jURxRvf5VIc0BP9OS7wYTX+sAwXg5R6A5qjUU5wk9uQK33I+NMOTUfPj2PGUA== X-Received: by 2002:a17:907:3d01:b0:6e0:c63b:1992 with SMTP id gm1-20020a1709073d0100b006e0c63b1992mr37035450ejc.422.1649785009008; Tue, 12 Apr 2022 10:36:49 -0700 (PDT) Received: from localhost.localdomain ([5.171.105.8]) by smtp.googlemail.com with ESMTPSA id n11-20020a50cc4b000000b0041d8bc4f076sm48959edi.79.2022.04.12.10.36.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 10:36:48 -0700 (PDT) From: Ansuel Smith To: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Ansuel Smith Subject: [net-next PATCH v2 1/4] drivers: net: dsa: qca8k: drop MTU tracking from qca8k_priv Date: Tue, 12 Apr 2022 19:30:16 +0200 Message-Id: <20220412173019.4189-2-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220412173019.4189-1-ansuelsmth@gmail.com> References: <20220412173019.4189-1-ansuelsmth@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" DSA set the CPU port based on the largest MTU of all the slave ports. Based on this we can drop the MTU array from qca8k_priv and set the port_change_mtu logic on DSA changing MTU of the CPU port as the switch have a global MTU settingfor each port. Signed-off-by: Ansuel Smith Reviewed-by: Florian Fainelli Reviewed-by: Vladimir Oltean --- drivers/net/dsa/qca8k.c | 25 ++++++++----------------- drivers/net/dsa/qca8k.h | 1 - 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index d3ed0a7f8077..820eeab19873 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c @@ -2367,16 +2367,17 @@ static int qca8k_port_change_mtu(struct dsa_switch *ds, int port, int new_mtu) { struct qca8k_priv *priv =3D ds->priv; - int i, mtu =3D 0; =20 - priv->port_mtu[port] =3D new_mtu; - - for (i =3D 0; i < QCA8K_NUM_PORTS; i++) - if (priv->port_mtu[i] > mtu) - mtu =3D priv->port_mtu[i]; + /* We have only have a general MTU setting. + * DSA always set the CPU port's MTU to the largest MTU of the salve port= s. + * Setting MTU just for the CPU port is sufficient to correctly set a + * value for every port. + */ + if (!dsa_is_cpu_port(ds, port)) + return 0; =20 /* Include L2 header / FCS length */ - return qca8k_write(priv, QCA8K_MAX_FRAME_SIZE, mtu + ETH_HLEN + ETH_FCS_L= EN); + return qca8k_write(priv, QCA8K_MAX_FRAME_SIZE, new_mtu + ETH_HLEN + ETH_F= CS_LEN); } =20 static int @@ -3033,16 +3034,6 @@ qca8k_setup(struct dsa_switch *ds) QCA8K_PORT_HOL_CTRL1_WRED_EN, mask); } - - /* Set initial MTU for every port. - * We have only have a general MTU setting. So track - * every port and set the max across all port. - * Set per port MTU to 1500 as the MTU change function - * will add the overhead and if its set to 1518 then it - * will apply the overhead again and we will end up with - * MTU of 1536 instead of 1518 - */ - priv->port_mtu[i] =3D ETH_DATA_LEN; } =20 /* Special GLOBAL_FC_THRESH value are needed for ar8327 switch */ diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h index f375627174c8..562d75997e55 100644 --- a/drivers/net/dsa/qca8k.h +++ b/drivers/net/dsa/qca8k.h @@ -398,7 +398,6 @@ struct qca8k_priv { struct device *dev; struct dsa_switch_ops ops; struct gpio_desc *reset_gpio; - unsigned int port_mtu[QCA8K_NUM_PORTS]; struct net_device *mgmt_master; /* Track if mdio/mib Ethernet is availabl= e */ struct qca8k_mgmt_eth_data mgmt_eth_data; struct qca8k_mib_eth_data mib_eth_data; --=20 2.34.1 From nobody Mon May 11 07:05:07 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52563C433F5 for ; Tue, 12 Apr 2022 17:37:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358460AbiDLRjY (ORCPT ); Tue, 12 Apr 2022 13:39:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1358425AbiDLRjR (ORCPT ); Tue, 12 Apr 2022 13:39:17 -0400 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8131461A33; Tue, 12 Apr 2022 10:36:52 -0700 (PDT) Received: by mail-ej1-x62e.google.com with SMTP id p15so38745247ejc.7; Tue, 12 Apr 2022 10:36:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BoJnx9jWECbEjAnZSa13BlCrzfnPk12ci4iBhXRs5SY=; b=P0zvGRCBpqsmXzSP6cK6TpMZbKHrh4pYdwFfCgr9dcbwI+MQQHj84TviZ7uq7FaaeQ x9JWYGKP/EjQJXITFbqLqdspB+ExH3uRySmm9aDlDTl469CgjvprX7nGGvy2bT2SNk/3 rSxAWhh59WxJbXzTIyHJ62kDQNTPHkl54G0vM+0iZYIqzJPDEwvd+/d7468PEYqsiOTf TxNYMjkO84TMqF+rQ/VfhStK0EKB0RJnBvs3hOJdhBCRgIwb3ILye4FGyrOOTbS1NgDN Rz5iyE0XATdx8Iczn8F4D+C7qk36YVGpELGPCegrZ2DE9JWns+4FEu/B2RF+KaNGAwg2 uxlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BoJnx9jWECbEjAnZSa13BlCrzfnPk12ci4iBhXRs5SY=; b=Mk/176/LB9E6ywjFKvudmTNoHTCYznJGtJaKiN/t3AcpFgA2slq1xwdnoR7EZfiBca 9V/N+gbmCsSYw9m91aZIlcQOl8q9omoe497cggM3Jw7JbF8H953incpYj8hJ8B6Lx4S5 tj0ozL7Z4GCG49OXqEsprOk2d3VLmE51UVAVONNdFXuyzlfpGHlWHxOOL7W8X5mk9Kmt pDfYiIdaca1hMyRPGTXJBr63wWr4ASZtbIIGs+ItCoFFsOvS+juDlBmYAPKSm26gCfgZ Bn/dVWTbC79kxkmtsfQTSCsqRMkli6ySZy7IlkNH1ZOaR4GP/LxVE1xrfH7qBySTCdjL sTXw== X-Gm-Message-State: AOAM530FV0684WmaQpk8Y4cU9ekwPhQFy6L/7Dwau50YGZznXlOZgwcp 2Fxp7AgJdNUXT/C7+XJA4vx4XM3LueY= X-Google-Smtp-Source: ABdhPJx0t5iHxFTfYF+f90nBzCNnd6QUHqseqq0sLl4sYSVOTKFjpOqQhmg9Vw1gUb8WbIXg9XSPOw== X-Received: by 2002:a17:907:6093:b0:6e0:dabf:1a9f with SMTP id ht19-20020a170907609300b006e0dabf1a9fmr35900675ejc.424.1649785010831; Tue, 12 Apr 2022 10:36:50 -0700 (PDT) Received: from localhost.localdomain ([5.171.105.8]) by smtp.googlemail.com with ESMTPSA id n11-20020a50cc4b000000b0041d8bc4f076sm48959edi.79.2022.04.12.10.36.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 10:36:50 -0700 (PDT) From: Ansuel Smith To: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Ansuel Smith Subject: [net-next PATCH v2 2/4] drivers: net: dsa: qca8k: drop port_sts from qca8k_priv Date: Tue, 12 Apr 2022 19:30:17 +0200 Message-Id: <20220412173019.4189-3-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220412173019.4189-1-ansuelsmth@gmail.com> References: <20220412173019.4189-1-ansuelsmth@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Port_sts is a thing of the past for this driver. It was something present on the initial implementation of this driver and parts of the original struct were dropped over time. Using an array of int to store if a port is enabled or not to handle PM operation seems overkill. Switch and use a simple u8 to store the port status where each bit correspond to a port. (bit is set port is enabled, bit is not set, port is disabled) Also add some comments to better describe why we need to track port status. Signed-off-by: Ansuel Smith Reviewed-by: Florian Fainelli Reviewed-by: Vladimir Oltean --- drivers/net/dsa/qca8k.c | 15 +++++++++------ drivers/net/dsa/qca8k.h | 9 ++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index 820eeab19873..5f447b586cfa 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c @@ -2346,7 +2346,7 @@ qca8k_port_enable(struct dsa_switch *ds, int port, struct qca8k_priv *priv =3D (struct qca8k_priv *)ds->priv; =20 qca8k_port_set_status(priv, port, 1); - priv->port_sts[port].enabled =3D 1; + priv->port_enabled_map |=3D BIT(port); =20 if (dsa_is_user_port(ds, port)) phy_support_asym_pause(phy); @@ -2360,7 +2360,7 @@ qca8k_port_disable(struct dsa_switch *ds, int port) struct qca8k_priv *priv =3D (struct qca8k_priv *)ds->priv; =20 qca8k_port_set_status(priv, port, 0); - priv->port_sts[port].enabled =3D 0; + priv->port_enabled_map &=3D ~BIT(port); } =20 static int @@ -3234,13 +3234,16 @@ static void qca8k_sw_shutdown(struct mdio_device *m= diodev) static void qca8k_set_pm(struct qca8k_priv *priv, int enable) { - int i; + int port; =20 - for (i =3D 0; i < QCA8K_NUM_PORTS; i++) { - if (!priv->port_sts[i].enabled) + for (port =3D 0; port < QCA8K_NUM_PORTS; port++) { + /* Do not enable on resume if the port was + * disabled before. + */ + if (!(priv->port_enabled_map & BIT(port))) continue; =20 - qca8k_port_set_status(priv, i, enable); + qca8k_port_set_status(priv, port, enable); } } =20 diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h index 562d75997e55..12d8d090298b 100644 --- a/drivers/net/dsa/qca8k.h +++ b/drivers/net/dsa/qca8k.h @@ -324,10 +324,6 @@ enum qca8k_mid_cmd { QCA8K_MIB_CAST =3D 3, }; =20 -struct ar8xxx_port_status { - int enabled; -}; - struct qca8k_match_data { u8 id; bool reduced_package; @@ -388,11 +384,14 @@ struct qca8k_priv { u8 mirror_rx; u8 mirror_tx; u8 lag_hash_mode; + /* Each bit correspond to a port. This switch can support a max of 7 port. + * Bit 1: port enabled. Bit 0: port disabled. + */ + u8 port_enabled_map; bool legacy_phy_port_mapping; struct qca8k_ports_config ports_config; struct regmap *regmap; struct mii_bus *bus; - struct ar8xxx_port_status port_sts[QCA8K_NUM_PORTS]; struct dsa_switch *ds; struct mutex reg_mutex; struct device *dev; --=20 2.34.1 From nobody Mon May 11 07:05:07 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89F65C433F5 for ; Tue, 12 Apr 2022 17:37:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358434AbiDLRj2 (ORCPT ); Tue, 12 Apr 2022 13:39:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351686AbiDLRjS (ORCPT ); Tue, 12 Apr 2022 13:39:18 -0400 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C76B62133; Tue, 12 Apr 2022 10:36:54 -0700 (PDT) Received: by mail-ej1-x634.google.com with SMTP id p15so38745448ejc.7; Tue, 12 Apr 2022 10:36:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BTPgW2n9sf+20ModHaYtKLOVMmWh29ezrmm/S2xE800=; b=mvLURYCtwj5+cvgf3AXN4d+Ozqm804p4BiZ8YnrRHm8qN2f89RaShSm+wnfiHpnKaf 4xQey8Miss5tuRgNbkWPJHwY7cQBi8AoA04vU5gsL+7PsvxJjrsZl0CvAAbapJ1UifZk bPQj18l+XzJbPuS52aJreVSUnEeW7mc9sNKAI9267bWfjeZ5IhFk69s7NPuUX1zAk3bh tzkfNWcv8Oz3YqdYAJTIRc8LX1NW8/TKbqnqFcMSftR8WnYFlD77+0yHf638MqZ2yCs7 M6tqIVhqzQV1N41TM7TM4BHh+qY/HqxXFPNKzI1tzpXd5lKtgQzJGkUzq8y0VpMPygpv rmsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BTPgW2n9sf+20ModHaYtKLOVMmWh29ezrmm/S2xE800=; b=OEmFjXFy6Ox+6SVBzka/yuI5xV82C85UUDpfBqRTLjY+RGlexWUOMgsDonDAQWe5Ez 7mZjXXOgLjDpBuIF7XyHDxufv9mbEBwfil0h/W7/K3X8YGiv/K0PXEQowZP6JtVZ37ii fFj0+6yDprk9WUhJwHRJRIfg/vKqXRnxjdcdnutDWydK6ka+RzNT3sLiEZeFQ0f7vK6j 4TiHr8ogH9IAOnJni0L5lPLWzhRlxX52t/Hno19etwj2vrfUPch2XLRE1oWHdIKwCCXN jUC7/X9MS7vbCC8PF1FJ/lyb//puy4PC5aYO3YFZ9rsO+kFirPTeoFYPsVO8aQl9yO/8 HuhQ== X-Gm-Message-State: AOAM532ZbMUZg2mQMU4FroJcBZDt9jR8Oah3UO/bYWVfEIolYt3kEc9m JWp59lHHTGerDrdAcG4lhlc= X-Google-Smtp-Source: ABdhPJxPWGLES0RgMU8bPM2nfkq8a026Lgl6rBOGDO6Q2BViGc2/VmpvNqkTl7LWfWYGpHNKQk57wA== X-Received: by 2002:a17:906:b155:b0:6c9:ea2d:3363 with SMTP id bt21-20020a170906b15500b006c9ea2d3363mr35159153ejb.729.1649785013021; Tue, 12 Apr 2022 10:36:53 -0700 (PDT) Received: from localhost.localdomain ([5.171.105.8]) by smtp.googlemail.com with ESMTPSA id n11-20020a50cc4b000000b0041d8bc4f076sm48959edi.79.2022.04.12.10.36.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 10:36:52 -0700 (PDT) From: Ansuel Smith To: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Ansuel Smith Subject: [net-next PATCH v2 3/4] drivers: net: dsa: qca8k: rework and simplify mdiobus logic Date: Tue, 12 Apr 2022 19:30:18 +0200 Message-Id: <20220412173019.4189-4-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220412173019.4189-1-ansuelsmth@gmail.com> References: <20220412173019.4189-1-ansuelsmth@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" In an attempt to reduce qca8k_priv space, rework and simplify mdiobus logic. We now declare a mdiobus instead of relying on DSA phy_read/write even if a mdio node is not present. This is all to make the qca8k ops static and not switch specific. With a legacy implementation where port doesn't have a phy map declared in the dts with a mdio node, we declare a 'qca8k-legacy' mdiobus. The conversion logic is used as legacy read and write ops are used instead of the internal one. While at it also improve the bus id to support multiple switch. Also drop the legacy_phy_port_mapping as we now declare mdiobus with ops that already address the workaround. Signed-off-by: Ansuel Smith --- drivers/net/dsa/qca8k.c | 101 ++++++++++++++-------------------------- drivers/net/dsa/qca8k.h | 1 - 2 files changed, 34 insertions(+), 68 deletions(-) diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index 5f447b586cfa..9c4c5af79f9a 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c @@ -1287,87 +1287,71 @@ qca8k_internal_mdio_read(struct mii_bus *slave_bus,= int phy, int regnum) if (ret >=3D 0) return ret; =20 - return qca8k_mdio_read(priv, phy, regnum); + ret =3D qca8k_mdio_read(priv, phy, regnum); + + if (ret < 0) + return 0xffff; + + return ret; } =20 static int -qca8k_phy_write(struct dsa_switch *ds, int port, int regnum, u16 data) +qca8k_legacy_mdio_write(struct mii_bus *slave_bus, int port, int regnum, u= 16 data) { - struct qca8k_priv *priv =3D ds->priv; - int ret; - - /* Check if the legacy mapping should be used and the - * port is not correctly mapped to the right PHY in the - * devicetree - */ - if (priv->legacy_phy_port_mapping) - port =3D qca8k_port_to_phy(port) % PHY_MAX_ADDR; - - /* Use mdio Ethernet when available, fallback to legacy one on error */ - ret =3D qca8k_phy_eth_command(priv, false, port, regnum, 0); - if (!ret) - return ret; + port =3D qca8k_port_to_phy(port) % PHY_MAX_ADDR; =20 - return qca8k_mdio_write(priv, port, regnum, data); + return qca8k_internal_mdio_write(slave_bus, port, regnum, data); } =20 static int -qca8k_phy_read(struct dsa_switch *ds, int port, int regnum) +qca8k_legacy_mdio_read(struct mii_bus *slave_bus, int port, int regnum) { - struct qca8k_priv *priv =3D ds->priv; - int ret; - - /* Check if the legacy mapping should be used and the - * port is not correctly mapped to the right PHY in the - * devicetree - */ - if (priv->legacy_phy_port_mapping) - port =3D qca8k_port_to_phy(port) % PHY_MAX_ADDR; - - /* Use mdio Ethernet when available, fallback to legacy one on error */ - ret =3D qca8k_phy_eth_command(priv, true, port, regnum, 0); - if (ret >=3D 0) - return ret; - - ret =3D qca8k_mdio_read(priv, port, regnum); - - if (ret < 0) - return 0xffff; + port =3D qca8k_port_to_phy(port) % PHY_MAX_ADDR; =20 - return ret; + return qca8k_internal_mdio_read(slave_bus, port, regnum); } =20 static int -qca8k_mdio_register(struct qca8k_priv *priv, struct device_node *mdio) +qca8k_mdio_register(struct qca8k_priv *priv) { struct dsa_switch *ds =3D priv->ds; + struct device_node *mdio; struct mii_bus *bus; =20 bus =3D devm_mdiobus_alloc(ds->dev); - if (!bus) return -ENOMEM; =20 bus->priv =3D (void *)priv; - bus->name =3D "qca8k slave mii"; - bus->read =3D qca8k_internal_mdio_read; - bus->write =3D qca8k_internal_mdio_write; - snprintf(bus->id, MII_BUS_ID_SIZE, "qca8k-%d", - ds->index); - + snprintf(bus->id, MII_BUS_ID_SIZE, "qca8k-%d.%d", + ds->dst->index, ds->index); bus->parent =3D ds->dev; bus->phy_mask =3D ~ds->phys_mii_mask; - ds->slave_mii_bus =3D bus; =20 - return devm_of_mdiobus_register(priv->dev, bus, mdio); + /* Check if the devicetree declare the port:phy mapping */ + mdio =3D of_get_child_by_name(priv->dev->of_node, "mdio"); + if (of_device_is_available(mdio)) { + bus->name =3D "qca8k slave mii"; + bus->read =3D qca8k_internal_mdio_read; + bus->write =3D qca8k_internal_mdio_write; + return devm_of_mdiobus_register(priv->dev, bus, mdio); + } + + /* If a mapping can't be found the legacy mapping is used, + * using the qca8k_port_to_phy function + */ + bus->name =3D "qca8k-legacy slave mii"; + bus->read =3D qca8k_legacy_mdio_read; + bus->write =3D qca8k_legacy_mdio_write; + return devm_mdiobus_register(priv->dev, bus); } =20 static int qca8k_setup_mdio_bus(struct qca8k_priv *priv) { u32 internal_mdio_mask =3D 0, external_mdio_mask =3D 0, reg; - struct device_node *ports, *port, *mdio; + struct device_node *ports, *port; phy_interface_t mode; int err; =20 @@ -1429,24 +1413,7 @@ qca8k_setup_mdio_bus(struct qca8k_priv *priv) QCA8K_MDIO_MASTER_EN); } =20 - /* Check if the devicetree declare the port:phy mapping */ - mdio =3D of_get_child_by_name(priv->dev->of_node, "mdio"); - if (of_device_is_available(mdio)) { - err =3D qca8k_mdio_register(priv, mdio); - if (err) - of_node_put(mdio); - - return err; - } - - /* If a mapping can't be found the legacy mapping is used, - * using the qca8k_port_to_phy function - */ - priv->legacy_phy_port_mapping =3D true; - priv->ops.phy_read =3D qca8k_phy_read; - priv->ops.phy_write =3D qca8k_phy_write; - - return 0; + return qca8k_mdio_register(priv); } =20 static int diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h index 12d8d090298b..8bbe36f135b5 100644 --- a/drivers/net/dsa/qca8k.h +++ b/drivers/net/dsa/qca8k.h @@ -388,7 +388,6 @@ struct qca8k_priv { * Bit 1: port enabled. Bit 0: port disabled. */ u8 port_enabled_map; - bool legacy_phy_port_mapping; struct qca8k_ports_config ports_config; struct regmap *regmap; struct mii_bus *bus; --=20 2.34.1 From nobody Mon May 11 07:05:07 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1A66C433EF for ; Tue, 12 Apr 2022 17:37:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358473AbiDLRjc (ORCPT ); Tue, 12 Apr 2022 13:39:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1358453AbiDLRjS (ORCPT ); Tue, 12 Apr 2022 13:39:18 -0400 Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28A9562A0A; Tue, 12 Apr 2022 10:36:57 -0700 (PDT) Received: by mail-ej1-x62b.google.com with SMTP id bg10so38779451ejb.4; Tue, 12 Apr 2022 10:36:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LtZCMAaqO/VG5YpfRuO+UKadnxV+qlzoG2jHc4egOys=; b=BhFlfM7WlDWeQoL2oBPd1wdD5+QfBwB3o37cqrfIeRYLcN8LhGUW/3FRIoXiw2zssZ pMsBvqP2XmGk1/t/lPq9UaKDY/NCVEsbejHkvAk1f6/2gt5/3Nfh+WPV+MAJZrLdnwIT R1rudQaoZpMYYTmisjTx4dDSWnQ+VsE6ocgY4be+JodlEy+1crl9xhXHjRWs7SXehYzt KUMXhT5/Cdxa9RvZm6TgYYmgbb5e7H43zsbv7myXFz1ZHDpiiQ/k6VcN1aeOcpgJOcn7 /0px6ND5ozbN0MGiLpw3mmxU0aJaF0P7CHeCftw8udgjbcRgb7eeE6k6cBuUPbzZBcqH rKfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LtZCMAaqO/VG5YpfRuO+UKadnxV+qlzoG2jHc4egOys=; b=FT0U5qPc7ConXgRf4vG/C0hxV6+pVDtM26qmBvII6F9qFMmvk+I0JtDGWJqN+tYeLs bF3/4542z+aR8cKWKSDR0fyRLJWxOtD2+y9S8MSRmZ3+4Nx21Wr9Rls3FKH7Euw448J4 JGc3kwNrK6tXXtnkbSbY1bug65ZZZVu4FUpgZiIAdISZAhvkteaKkJPRuXVpZR+eVXye Pl8LiuPrHeNp3FEr9Eo2AQRILmCc1QuSVQhv/E/8p0BDZADwS/HFrbmrv6+KaByVX47O yQna9lJWDSkYaoiacJrcbBdI1xjB2WZNzv9CHcb3JxpZp7SWfF3c3QdOqVaxHSgZPag6 Q75g== X-Gm-Message-State: AOAM5306rhH/yPAZsiMuEiYexyT/3zQoTaI9QsuL7BE8n99CmHniu1CP PwWUuSYxFx9r6uMBlAKGc0M= X-Google-Smtp-Source: ABdhPJwBpvYMW9Rop2D/kRLqtKhVc9292ewqg60QqdMXSB5mXpLFNudGe4Aea/oqfX56vmp9ucWXIw== X-Received: by 2002:a17:907:6289:b0:6e0:eb0c:8ee7 with SMTP id nd9-20020a170907628900b006e0eb0c8ee7mr33978446ejc.245.1649785015404; Tue, 12 Apr 2022 10:36:55 -0700 (PDT) Received: from localhost.localdomain ([5.171.105.8]) by smtp.googlemail.com with ESMTPSA id n11-20020a50cc4b000000b0041d8bc4f076sm48959edi.79.2022.04.12.10.36.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 10:36:55 -0700 (PDT) From: Ansuel Smith To: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Ansuel Smith Subject: [net-next PATCH v2 4/4] drivers: net: dsa: qca8k: drop dsa_switch_ops from qca8k_priv Date: Tue, 12 Apr 2022 19:30:19 +0200 Message-Id: <20220412173019.4189-5-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220412173019.4189-1-ansuelsmth@gmail.com> References: <20220412173019.4189-1-ansuelsmth@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Now that dsa_switch_ops is not switch specific anymore, we can drop it from qca8k_priv and use the static ops directly for the dsa_switch pointer. Signed-off-by: Ansuel Smith Reviewed-by: Florian Fainelli Reviewed-by: Vladimir Oltean --- drivers/net/dsa/qca8k.c | 3 +-- drivers/net/dsa/qca8k.h | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index 9c4c5af79f9a..48a71d85b4ff 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c @@ -3160,8 +3160,7 @@ qca8k_sw_probe(struct mdio_device *mdiodev) priv->ds->dev =3D &mdiodev->dev; priv->ds->num_ports =3D QCA8K_NUM_PORTS; priv->ds->priv =3D priv; - priv->ops =3D qca8k_switch_ops; - priv->ds->ops =3D &priv->ops; + priv->ds->ops =3D &qca8k_switch_ops; mutex_init(&priv->reg_mutex); dev_set_drvdata(&mdiodev->dev, priv); =20 diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h index 8bbe36f135b5..04408e11402a 100644 --- a/drivers/net/dsa/qca8k.h +++ b/drivers/net/dsa/qca8k.h @@ -394,7 +394,6 @@ struct qca8k_priv { struct dsa_switch *ds; struct mutex reg_mutex; struct device *dev; - struct dsa_switch_ops ops; struct gpio_desc *reset_gpio; struct net_device *mgmt_master; /* Track if mdio/mib Ethernet is availabl= e */ struct qca8k_mgmt_eth_data mgmt_eth_data; --=20 2.34.1