From patchwork Wed Feb 1 14:58:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51376 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325534wrn; Wed, 1 Feb 2023 07:01:39 -0800 (PST) X-Google-Smtp-Source: AK7set8tgk9YDrnrXFdZ6xA7/M0ONBf3H4F6FFWeCLNaNNQDCBbyxTfrMee4bl409zvwwrJl7B2u X-Received: by 2002:a17:903:3014:b0:196:7f9d:7009 with SMTP id o20-20020a170903301400b001967f9d7009mr2497425pla.7.1675263698714; Wed, 01 Feb 2023 07:01:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263698; cv=none; d=google.com; s=arc-20160816; b=WGTPieLen5HpNiNOXQEE73zmmZC5Ton9o4T+t03k56VgVeHb52pxqefifg0pZxl6is rnycAZIR9V46mCdv2rpRn6BIY9WLyUZ55cR6zjOSWCI8LQSFAPofmfg7Dr0OGXXrAOmh N4gXaOSvLq26jQGJ2BOabUrwL06aBghZ1WGKSgz/XI0TCKw5Jl6v4Lll2NTRGdYcdYCJ uNhL/ZCFbspXqRtdNndPqlbYsNwk0IxVtluGoAtCWNCJlgJ7vSj44eIPJZswdntA+Dz3 bVFcorUDp9o7h1YSKdsHuKbC7zd0PdwwVLMH0Yt1LqQHyABDZrQ6M7YsTfrNRpksRyZT vuJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=m1PTXonx+Tar1S183ah3GnMI1cNF2qlYFfQJvwwcBhk=; b=S2bMbiNgXup5iXWwQi+gvV40NNT7m/c7Ku9hPMdpPKv7vnwzatIjmTaJMjuQInLT2Q Mb7IBz1BaF54fVCw1tgxXbkcblfke+S4f1HDMk3vEKV+Y7h1vwsdz7streWCHtTXvXc2 SuhjkSXZExvb7i2xUYMdx2LTHx7b312tDh5JeTnj7R9WQqrRGi6EhgL2OmtKDw1bOdN7 ug+MBbIlqI6cCzGyn0nTNVqYTG/whNGcSIcYrhszmUZ+mv1Q3sc9sRkcTMLnF4hvig83 7q1B3j0G2t8vqNgzyOWsMkGTGtSD3ISkWY8R26oD2kfWb8T/AQq5oeoKHtW01XK3ON23 rhSQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t2-20020a170902e84200b00189891763f3si3543316plg.600.2023.02.01.07.01.25; Wed, 01 Feb 2023 07:01:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232700AbjBAO7r (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33656 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232303AbjBAO7F (ORCPT ); Wed, 1 Feb 2023 09:59:05 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E60666ACA7 for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rd-0A; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZW-001w1O-Ty; Wed, 01 Feb 2023 15:58:50 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hUh-81; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 01/23] net: dsa: microchip: enable EEE support Date: Wed, 1 Feb 2023 15:58:23 +0100 Message-Id: <20230201145845.2312060-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641308092155178?= X-GMAIL-MSGID: =?utf-8?q?1756641308092155178?= Some of KSZ9477 family switches provides EEE support. To enable it, we just need to register set_mac_eee/set_mac_eee handlers and validate supported chip version and port. Signed-off-by: Oleksij Rempel --- drivers/net/dsa/microchip/ksz_common.c | 66 ++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 46becc0382d6..5ecd74248eee 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -2673,6 +2673,70 @@ static int ksz_max_mtu(struct dsa_switch *ds, int port) return -EOPNOTSUPP; } +static int ksz_validate_eee(struct dsa_switch *ds, int port) +{ + struct ksz_device *dev = ds->priv; + + if (!dev->info->internal_phy[port]) + return -EOPNOTSUPP; + + switch (dev->chip_id) { + case KSZ8563_CHIP_ID: + case KSZ9477_CHIP_ID: + case KSZ9563_CHIP_ID: + case KSZ9567_CHIP_ID: + case KSZ9893_CHIP_ID: + case KSZ9896_CHIP_ID: + case KSZ9897_CHIP_ID: + return 0; + } + + return -EOPNOTSUPP; +} + +static int ksz_get_mac_eee(struct dsa_switch *ds, int port, + struct ethtool_eee *e) +{ + int ret; + + ret = ksz_validate_eee(ds, port); + if (ret) + return ret; + + /* There is no documented control of Tx LPI configuration. + */ + e->tx_lpi_enabled = true; + /* There is no documented control of Tx LPI timer. According to testes + * Tx LPI timer seems to be set by default to minimal value. + */ + e->tx_lpi_timer = 0; + + return 0; +} + +static int ksz_set_mac_eee(struct dsa_switch *ds, int port, + struct ethtool_eee *e) +{ + struct ksz_device *dev = ds->priv; + int ret; + + ret = ksz_validate_eee(ds, port); + if (ret) + return ret; + + if (!e->tx_lpi_enabled) { + dev_err(dev->dev, "Disabling EEE Tx LPI is not supported\n"); + return -EINVAL; + } + + if (e->tx_lpi_timer) { + dev_err(dev->dev, "Setting EEE Tx LPI timer is not supported\n"); + return -EINVAL; + } + + return 0; +} + static void ksz_set_xmii(struct ksz_device *dev, int port, phy_interface_t interface) { @@ -3130,6 +3194,8 @@ static const struct dsa_switch_ops ksz_switch_ops = { .port_txtstamp = ksz_port_txtstamp, .port_rxtstamp = ksz_port_rxtstamp, .port_setup_tc = ksz_setup_tc, + .get_mac_eee = ksz_get_mac_eee, + .set_mac_eee = ksz_set_mac_eee, }; struct ksz_device *ksz_switch_alloc(struct device *base, void *priv) From patchwork Wed Feb 1 14:58:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51384 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326343wrn; Wed, 1 Feb 2023 07:02:41 -0800 (PST) X-Google-Smtp-Source: AK7set8j1sYn9LivFqcLeRDDL5SRHxbNvACTgd22o1QnpJnFPyNqCgPg6S/db/Vq9kZyUnTesigW X-Received: by 2002:a05:6a20:840a:b0:bc:a4d2:9820 with SMTP id c10-20020a056a20840a00b000bca4d29820mr3371953pzd.37.1675263760442; Wed, 01 Feb 2023 07:02:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263760; cv=none; d=google.com; s=arc-20160816; b=HdoPThQyeRhFtgVJe0k1gXLIjVIwVcFO1K+lpo8YhVEW/8EbICHnc57JUr6K4s0rkH iCPodapz3VuFHWraKO1NcVqDgv7u63ipcC/Ta3U/v0UnowxEa6VYGakKggntafaKFgIG yxxAl1+fqcRCt8S9oWKlQPfzWQcvNRFj0ncWi5H+gBuC7MsEAGPWFOeTyal6RexvYmYR SlLfFQk7k8ZYjknqnP1lcrXOvmksGmAiGFj/fzP1THYKs3j9jCRQORx1zhW8Gn2FPQsI G/nd+fiMneTgFUkhju+ShzlHguISE8asXmK5Kfl8SqzJBx2yly5OPdKJVSYSdIbp1BIa b1lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=q8WtCUmUCKbjHtqLS7VDcg3n403v/oTECF/BGn3rVcc=; b=K+6ydFvujw5tyb20Lh5hrK/oR9LR8Itk1IjSGqJGrmyxWuC9LB6qL0eIZfzJa6A2oW UcjVXqfr+ewri5qWh6lFhFx7gLA5Jq8sts2FU0mvzwnzbYGLEW1rpX9Co34l574FlIEr MzpyOwJCHSk9upCq6D4QQgKox9anVHFPuRiGX52sKrUAaaJMstlcDyT60E+uEk53Tq06 NjCXkwZKlkrHRvUiHuc4i4/n//QtKaqJDjynF8s2pMEMcvUlY43TrTH9hb949Vjd9TnZ cGdB3tWIGaEvJKB6JGu7/k4wKUum9+QL0XwTZkNNRrSxhbwhSAx1rrMvujR/5Q2eC7SO GLkw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u13-20020a17090341cd00b00194ca747aa5si22437843ple.169.2023.02.01.07.02.28; Wed, 01 Feb 2023 07:02:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232752AbjBAPAV (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232532AbjBAO7G (ORCPT ); Wed, 1 Feb 2023 09:59:06 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 671866ACB3 for ; Wed, 1 Feb 2023 06:59:04 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rq-Be; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w25-HE; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hUq-95; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 02/23] net: phy: add genphy_c45_read_eee_abilities() function Date: Wed, 1 Feb 2023 15:58:24 +0100 Message-Id: <20230201145845.2312060-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641373047713496?= X-GMAIL-MSGID: =?utf-8?q?1756641373047713496?= Add generic function for EEE abilities defined by IEEE 802.3 specification. For now following registers are supported: - IEEE 802.3-2018 45.2.3.10 EEE control and capability 1 (Register 3.20) - IEEE 802.3cg-2019 45.2.1.186b 10BASE-T1L PMA status register (Register 1.2295) Since I was not able to find any flag signaling support of this registers, we should detect link mode abilities first and then based on this abilities doing EEE link modes detection. Results of EEE ability detection will be stored in to new variable phydev->supported_eee. Signed-off-by: Oleksij Rempel --- drivers/net/phy/phy-c45.c | 49 ++++++++++++++++++++++++++++++++++++ drivers/net/phy/phy_device.c | 16 ++++++++++++ include/linux/mdio.h | 17 +++++++++++++ include/linux/phy.h | 5 ++++ 4 files changed, 87 insertions(+) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index 9f9565a4819d..ae87f5856650 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -661,6 +661,55 @@ int genphy_c45_read_mdix(struct phy_device *phydev) } EXPORT_SYMBOL_GPL(genphy_c45_read_mdix); +/** + * genphy_c45_read_eee_abilities - read supported EEE link modes + * @phydev: target phy_device struct + * + * Read supported EEE link modes. + */ +int genphy_c45_read_eee_abilities(struct phy_device *phydev) +{ + __ETHTOOL_DECLARE_LINK_MODE_MASK(common); + int val; + + linkmode_and(common, phydev->supported, PHY_EEE_100_10000_FEATURES); + /* There is not indicator if optional register + * "EEE control and capability 1" (3.20) is supported. Read it only + * on devices with appropriate linkmodes. + */ + if (!linkmode_empty(common)) { + /* IEEE 802.3-2018 45.2.3.10 EEE control and capability 1 + * (Register 3.20) + */ + val = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); + if (val < 0) + return val; + + mii_eee_100_10000_adv_mod_linkmode_t(phydev->supported_eee, val); + + /* Some buggy devices claim not supported EEE link modes */ + linkmode_and(phydev->supported_eee, phydev->supported_eee, + phydev->supported); + } + + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT, + phydev->supported)) { + /* IEEE 802.3cg-2019 45.2.1.186b 10BASE-T1L PMA status register + * (Register 1.2295) + */ + val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PMA_10T1L_STAT); + if (val < 0) + return val; + + linkmode_mod_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT, + phydev->supported_eee, + val & MDIO_PMA_10T1L_STAT_EEE); + } + + return 0; +} +EXPORT_SYMBOL_GPL(genphy_c45_read_eee_abilities); + /** * genphy_c45_pma_read_abilities - read supported link modes from PMA * @phydev: target phy_device struct diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 9ba8f973f26f..3651f1fd8fc9 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -132,6 +132,18 @@ static const int phy_10gbit_full_features_array[] = { ETHTOOL_LINK_MODE_10000baseT_Full_BIT, }; +static const int phy_eee_100_10000_features_array[6] = { + ETHTOOL_LINK_MODE_100baseT_Full_BIT, + ETHTOOL_LINK_MODE_1000baseT_Full_BIT, + ETHTOOL_LINK_MODE_10000baseT_Full_BIT, + ETHTOOL_LINK_MODE_1000baseKX_Full_BIT, + ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT, + ETHTOOL_LINK_MODE_10000baseKR_Full_BIT, +}; + +__ETHTOOL_DECLARE_LINK_MODE_MASK(phy_eee_100_10000_features) __ro_after_init; +EXPORT_SYMBOL_GPL(phy_eee_100_10000_features); + static void features_init(void) { /* 10/100 half/full*/ @@ -213,6 +225,10 @@ static void features_init(void) linkmode_set_bit_array(phy_10gbit_fec_features_array, ARRAY_SIZE(phy_10gbit_fec_features_array), phy_10gbit_fec_features); + linkmode_set_bit_array(phy_eee_100_10000_features_array, + ARRAY_SIZE(phy_eee_100_10000_features_array), + phy_eee_100_10000_features); + } void phy_device_free(struct phy_device *phydev) diff --git a/include/linux/mdio.h b/include/linux/mdio.h index c0da30d63b1d..77c324f89b66 100644 --- a/include/linux/mdio.h +++ b/include/linux/mdio.h @@ -402,6 +402,23 @@ static inline u32 linkmode_adv_to_mii_t1_adv_m_t(unsigned long *advertising) return result; } +static inline void mii_eee_100_10000_adv_mod_linkmode_t(unsigned long *adv, + u32 val) +{ + linkmode_mod_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, + adv, val & MDIO_EEE_100TX); + linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, + adv, val & MDIO_EEE_1000T); + linkmode_mod_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT, + adv, val & MDIO_EEE_10GT); + linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseKX_Full_BIT, + adv, val & MDIO_EEE_1000KX); + linkmode_mod_bit(ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT, + adv, val & MDIO_EEE_10GKX4); + linkmode_mod_bit(ETHTOOL_LINK_MODE_10000baseKR_Full_BIT, + adv, val & MDIO_EEE_10GKR); +} + int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum); int __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val); int __mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum, diff --git a/include/linux/phy.h b/include/linux/phy.h index fbeba4fee8d4..567810f71fb6 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -52,6 +52,7 @@ extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_all_ports_features) __ro_after_ extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_fec_features) __ro_after_init; extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_init; +extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_eee_100_10000_features) __ro_after_init; #define PHY_BASIC_FEATURES ((unsigned long *)&phy_basic_features) #define PHY_BASIC_T1_FEATURES ((unsigned long *)&phy_basic_t1_features) @@ -62,6 +63,7 @@ extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_ini #define PHY_10GBIT_FEATURES ((unsigned long *)&phy_10gbit_features) #define PHY_10GBIT_FEC_FEATURES ((unsigned long *)&phy_10gbit_fec_features) #define PHY_10GBIT_FULL_FEATURES ((unsigned long *)&phy_10gbit_full_features) +#define PHY_EEE_100_10000_FEATURES ((unsigned long *)&phy_eee_100_10000_features) extern const int phy_basic_ports_array[3]; extern const int phy_fibre_port_array[1]; @@ -676,6 +678,8 @@ struct phy_device { __ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising); /* used with phy_speed_down */ __ETHTOOL_DECLARE_LINK_MODE_MASK(adv_old); + /* used for eee validation */ + __ETHTOOL_DECLARE_LINK_MODE_MASK(supported_eee); /* Host supported PHY interface types. Should be ignored if empty. */ DECLARE_PHY_INTERFACE_MASK(host_interfaces); @@ -1737,6 +1741,7 @@ int genphy_c45_an_config_aneg(struct phy_device *phydev); int genphy_c45_an_disable_aneg(struct phy_device *phydev); int genphy_c45_read_mdix(struct phy_device *phydev); int genphy_c45_pma_read_abilities(struct phy_device *phydev); +int genphy_c45_read_eee_abilities(struct phy_device *phydev); int genphy_c45_pma_baset1_read_master_slave(struct phy_device *phydev); int genphy_c45_read_status(struct phy_device *phydev); int genphy_c45_baset1_read_status(struct phy_device *phydev); From patchwork Wed Feb 1 14:58:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51391 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp327220wrn; Wed, 1 Feb 2023 07:03:51 -0800 (PST) X-Google-Smtp-Source: AK7set+5W+S0VMcuHHElboNEZIdqfeqEWPP9rm67Q6Y4SiiM8Gsl9Q7sV9q3NGlqHessj/81DGmu X-Received: by 2002:a17:90b:4b91:b0:22c:b70d:45fb with SMTP id lr17-20020a17090b4b9100b0022cb70d45fbmr2669767pjb.23.1675263830881; Wed, 01 Feb 2023 07:03:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263830; cv=none; d=google.com; s=arc-20160816; b=JDNflWlvvpy+hOge4I5gKZeqqkydBCSrMzcGtPgb/lG2o/xQAkwpJKQVUDhliGr5eN ykwpv0/sP79e8quPS2FIj0wMxpsijPkQuoMl97MFVa42Rr5tsbFfambjWadMHR85K1zL BujZzMtUmW5NAHO4dADEdR6cthsJ0oeIVc//01vLBwMXJqhfqECijSGHsFNolKayT370 qfcYXD7JYpDL8Ujf4ySQ/+JqvHXcNJ9l/y/lTDErHFESjSc/xOV6TB4KgjuY8RY3V0FE 6JSZ0BhuN6NWhjqhuPqNbcSYncy6jaRAikehRD+Uk5mldV7xDh8Mjbpobwkym9MerLkK l6rA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=ONbKyVG12Ym74wZevUXtQLSq63uIod12uEkaw4IFet8=; b=EJ46KFRslopurUG3m+bmXIVCwfGoPNSTMrBm5neCjZY7hpwosEQel0Ji+5tQd8g/j9 3g5mnRl+9itZNb01+qr70ZXgBEDgbS2UBZiYQ/PczKcNCHYJxiTkk0lzxsyJJhRfmStq sSmqc2UccivGY0AS9ztU7TAdxio5rBO0VPPUEl90ZVRxIINaFYQQAjDIUqsMj0pNlw0n vqG9VqGsreDO4A/72iJGzxBn1WAg/wjyWbfzAIzKJGW84izOe6u4Tgiy89Oy7tWVAycI 4hnZLFMRh4hJxyjccfAISebLm542WglgjigNyaX7kO4RWKJSn0XLlsarRJvmdAlkkRA1 6TPg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h6-20020a17090a580600b00218f5df5ce8si1787570pji.64.2023.02.01.07.03.37; Wed, 01 Feb 2023 07:03:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232390AbjBAPAf (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232760AbjBAO7Q (ORCPT ); Wed, 1 Feb 2023 09:59:16 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB44F6B9AB for ; Wed, 1 Feb 2023 06:59:07 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZc-0002rm-Vc; Wed, 01 Feb 2023 15:58:57 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w1r-5c; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hUz-9u; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 03/23] net: phy: micrel: add ksz9477_get_features() Date: Wed, 1 Feb 2023 15:58:25 +0100 Message-Id: <20230201145845.2312060-4-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641446413832892?= X-GMAIL-MSGID: =?utf-8?q?1756641446413832892?= KSZ8563R, which has same PHYID as KSZ9477 family, will change "EEE control and capability 1" (Register 3.20) content depending on configuration of "EEE advertisement 1" (Register 7.60). Changes on the 7.60 will affect 3.20 register. So, instead of depending on register 3.20 driver should set supported_eee. Proper supported_eee configuration is needed to make use of generic PHY c45 set/get_eee functions provided by next patches. Signed-off-by: Oleksij Rempel --- drivers/net/phy/micrel.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index d5b80c31ab91..767c4111cb18 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1370,6 +1370,26 @@ static int ksz9131_config_aneg(struct phy_device *phydev) return genphy_config_aneg(phydev); } +static int ksz9477_get_features(struct phy_device *phydev) +{ + int ret; + + ret = genphy_read_abilities(phydev); + if (ret) + return ret; + + /* The "EEE control and capability 1" (Register 3.20) seems to be + * influenced by the "EEE advertisement 1" (Register 7.60). Changes + * on the 7.60 will affect 3.20. So, we need to construct our own list + * of caps. + * KSZ8563R should have 100BaseTX/Full only. + */ + linkmode_and(phydev->supported_eee, phydev->supported, + PHY_EEE_100_10000_FEATURES); + + return 0; +} + #define KSZ8873MLL_GLOBAL_CONTROL_4 0x06 #define KSZ8873MLL_GLOBAL_CONTROL_4_DUPLEX BIT(6) #define KSZ8873MLL_GLOBAL_CONTROL_4_SPEED BIT(4) @@ -3422,6 +3442,7 @@ static struct phy_driver ksphy_driver[] = { .handle_interrupt = kszphy_handle_interrupt, .suspend = genphy_suspend, .resume = genphy_resume, + .get_features = ksz9477_get_features, } }; module_phy_driver(ksphy_driver); From patchwork Wed Feb 1 14:58:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51383 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326250wrn; Wed, 1 Feb 2023 07:02:35 -0800 (PST) X-Google-Smtp-Source: AK7set8TC+IGIf7p8IDxnMrVEtOtbt75CriTwnfXBeUhwslXq7RvEpo2tl/e6TfFPfIs1afVQdcq X-Received: by 2002:a17:903:1247:b0:195:e92e:c4d3 with SMTP id u7-20020a170903124700b00195e92ec4d3mr3305676plh.46.1675263755407; Wed, 01 Feb 2023 07:02:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263755; cv=none; d=google.com; s=arc-20160816; b=RrFoVeUWuwn4E7N+EQe3qCjlzRP8vkQS/gpmkiaM15OdUKTacf8JIw9m+LhCK+dsWJ LP4FWZm9GNbUoN0vVrbv5uMy+bJuNAXuAeDmfUTsunbBMboZ3jLXILU/t6v3OO5BmhP9 jHGuQ0ohM90QgxS03NfVKdPEXll3zIjJajLpE++oCMKC13X+o7xE1OUB7Bgm2N1g6eHk USgq081knpJ+OB7L195DFYJbp/SMhl4jaxR0H8ggToO9c8B2untiWtJOSMoSTbQhmqwx Rr3GfAJL+Ri2BR7+MvMlN2IQ9qiQvBBMDlmc8hgm1B370vPFQ1yEa1WUaYfHMyzPyqGh Wnsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=rHp+xAmmwyDZCNFbOUuddxHbqaiOHM/KLRY7qC5B8WM=; b=SDWpYFVBNRi0UNJXLCBi7osvHrRjo0K/MujlyP4QxkQRR/Ai7tEbK5KTSj9nPpMJuK SB6OzlKk3YAix9AwO+VvGQjE1OwRHJK2Lby9u6gsys2iHxRMf1+guTDaRAahKPzU0Z53 OaZRbYq2vRXOME7MTF1Oyv0rXPkltKnWqPbBmM5PZ+OVqTltt533PXETvsCUrTQVXUII VBGtuGAXiUQIbXhadca548cUfP9DLBEgXtIf8DQEpSDPQ6ktwjvz8Xa+AXIsxwvYWllN SSv+sJWmte3OVjD1fnsZSogyYsJYMQLgQqGyMnP6vq8dKaDW0cUj1CLiRo3IhFe8KLHx fJkw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q5-20020a170902a3c500b00176e4ac448esi19096136plb.224.2023.02.01.07.02.22; Wed, 01 Feb 2023 07:02:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232724AbjBAPAN (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232562AbjBAO7G (ORCPT ); Wed, 1 Feb 2023 09:59:06 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D9806ACB8 for ; Wed, 1 Feb 2023 06:59:04 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rX-0A; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZW-001w18-3B; Wed, 01 Feb 2023 15:58:49 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hV8-AV; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 04/23] net: phy: export phy_check_valid() function Date: Wed, 1 Feb 2023 15:58:26 +0100 Message-Id: <20230201145845.2312060-5-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641367923496201?= X-GMAIL-MSGID: =?utf-8?q?1756641367923496201?= This function will be needed for genphy_c45_ethtool_get_eee() provided by next patch. Signed-off-by: Oleksij Rempel Reviewed-by: Andrew Lunn --- drivers/net/phy/phy.c | 4 ++-- include/linux/phy.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 3378ca4f49b6..41cfb24c48c1 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -242,11 +242,11 @@ unsigned int phy_supported_speeds(struct phy_device *phy, * * Description: Returns true if there is a valid setting, false otherwise. */ -static inline bool phy_check_valid(int speed, int duplex, - unsigned long *features) +bool phy_check_valid(int speed, int duplex, unsigned long *features) { return !!phy_lookup_setting(speed, duplex, features, true); } +EXPORT_SYMBOL(phy_check_valid); /** * phy_sanitize_settings - make sure the PHY is set to supported speed and duplex diff --git a/include/linux/phy.h b/include/linux/phy.h index 567810f71fb6..fa8453c48ad1 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1618,6 +1618,7 @@ int phy_start_aneg(struct phy_device *phydev); int phy_aneg_done(struct phy_device *phydev); int phy_speed_down(struct phy_device *phydev, bool sync); int phy_speed_up(struct phy_device *phydev); +bool phy_check_valid(int speed, int duplex, unsigned long *features); int phy_restart_aneg(struct phy_device *phydev); int phy_reset_after_clk_enable(struct phy_device *phydev); From patchwork Wed Feb 1 14:58:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51386 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326588wrn; Wed, 1 Feb 2023 07:02:59 -0800 (PST) X-Google-Smtp-Source: AK7set9efXJ5Vrx1f4oPYVT29LSfUwC3aLcNmdvl5lUGhr1Ihp/VV712aITFaG63TibuRfGEDKEX X-Received: by 2002:a17:906:684c:b0:877:a2d1:7560 with SMTP id a12-20020a170906684c00b00877a2d17560mr2218846ejs.27.1675263779437; Wed, 01 Feb 2023 07:02:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263779; cv=none; d=google.com; s=arc-20160816; b=AzotyE36Co0M/QatThba+060LzT2KpR4FpVAtRRQcAu5RAvSmA+1zuTmybl/SLKFsS ttnNOGakIckJG8fLI8Ds0sqwlljSetAXggV524z5ToDTa3bo+nac6m8TBI2L4/NX/Hq1 qyITLRXy5U9eCTX0UUp0VrUvu0qvLNUpOoSMi6o4kJ2uPKA8+s9Q2ijfDnl1sYJ5y1/I XhxbTJu06clSaJlgR2srYkquFtY+Br+GIVsHwImz1iH0q0emQSMbQmZjVmwko2t2qUQ5 OufX2spTD6W41gZbVGPbCH0PlsSzcybJ+eCAtf4ZPsmsovCJNgwgXR8YtbK78KC5GnBq vmMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=l/G1HmNXf5NhEyjcTZq7Kh+gS8h4vg8WEtqLf9pUC/g=; b=bCmB+fA5aO8HG+Emb6J6qQhNsNm+DW5fnC5S5uORKPreJUnFsrSFP/JFgv2Q5+wIh3 whdDbqvbd8xDvc4mvExYUm6A2Kdp9R1sFb+peTC/yLaE/Paoj2tZLLgRhKv7VqAzLl67 fdM2qtsykQ6UtlUFJeWss53Bh719lmop02zRLdG77YatYUqoH3/fvJIhzKTeZDpb+s7A M48fbW3G1VA5HYqogLynZCaK0K7AJQKnq/QK/f8SyHokJBLp3toXpmgL2BbcXZ+blMUC ytRsghbgsOO3UBJ9DJ9PRLE0swigR6Bv+akbOAAI/P88Z40uJbMBaa1V9oD4pbvIo9kZ N5IA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 16-20020a170906015000b0087bdb8e120fsi21106000ejh.369.2023.02.01.07.02.35; Wed, 01 Feb 2023 07:02:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231129AbjBAPAA (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232477AbjBAO7G (ORCPT ); Wed, 1 Feb 2023 09:59:06 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A1AB6AC8F for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rb-0F; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZW-001w1K-QB; Wed, 01 Feb 2023 15:58:49 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hVH-B6; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 05/23] net: phy: add genphy_c45_ethtool_get/set_eee() support Date: Wed, 1 Feb 2023 15:58:27 +0100 Message-Id: <20230201145845.2312060-6-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641392896804680?= X-GMAIL-MSGID: =?utf-8?q?1756641392896804680?= Add replacement for phy_ethtool_get/set_eee() functions. Current phy_ethtool_get/set_eee() implementation is great and it is possible to make it even better: - this functionality is for devices implementing parts of IEEE 802.3 specification beyond Clause 22. The better place for this code is phy-c45.c - currently it is able to do read/write operations on PHYs with different abilities to not existing registers. It is better to use stored supported_eee abilities to avoid false read/write operations. - the eee_active detection will provide wrong results on not supported link modes. It is better to validate speed/duplex properties against supported EEE link modes. - it is able to support only limited amount of link modes. We have more EEE link modes... By refactoring this code I address most of this point except of the last one. Adding additional EEE link modes will need more work. Signed-off-by: Oleksij Rempel --- drivers/net/phy/phy-c45.c | 238 ++++++++++++++++++++++++++++++++++++++ include/linux/mdio.h | 36 ++++++ include/linux/phy.h | 7 ++ include/uapi/linux/mdio.h | 8 ++ 4 files changed, 289 insertions(+) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index ae87f5856650..9582c8bf74ec 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -661,6 +661,132 @@ int genphy_c45_read_mdix(struct phy_device *phydev) } EXPORT_SYMBOL_GPL(genphy_c45_read_mdix); +/** + * genphy_c45_write_eee_adv - write advertised EEE link modes + * @phydev: target phy_device struct + */ +int genphy_c45_write_eee_adv(struct phy_device *phydev, unsigned long *adv) +{ + __ETHTOOL_DECLARE_LINK_MODE_MASK(common); + int val, changed; + + linkmode_and(common, phydev->supported_eee, PHY_EEE_100_10000_FEATURES); + if (!linkmode_empty(common)) { + val = linkmode_adv_to_mii_eee_100_10000_adv_t(adv); + + /* In eee_broken_modes are stored MDIO_AN_EEE_ADV specific raw + * register values. + */ + val &= ~phydev->eee_broken_modes; + + /* IEEE 802.3-2018 45.2.7.13 EEE advertisement 1 + * (Register 7.60) + */ + val = phy_modify_mmd_changed(phydev, MDIO_MMD_AN, + MDIO_AN_EEE_ADV, + MDIO_EEE_100TX | MDIO_EEE_1000T | + MDIO_EEE_10GT | MDIO_EEE_1000KX | + MDIO_EEE_10GKX4 | MDIO_EEE_10GKR, + val); + if (val < 0) + return val; + if (val > 0) + changed = 1; + } + + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT, + phydev->supported_eee)) { + val = linkmode_adv_to_mii_10base_t1_t(adv); + /* IEEE 802.3cg-2019 45.2.7.25 10BASE-T1 AN control register + * (Register 7.526) + */ + val = phy_modify_mmd_changed(phydev, MDIO_MMD_AN, + MDIO_AN_10BT1_AN_CTRL, + MDIO_AN_10BT1_AN_CTRL_ADV_EEE_T1L, + val); + if (val < 0) + return val; + if (val > 0) + changed = 1; + } + + return changed; +} + +/** + * genphy_c45_read_eee_adv - read advertised EEE link modes + * @phydev: target phy_device struct + */ +static int genphy_c45_read_eee_adv(struct phy_device *phydev, + unsigned long *adv) +{ + __ETHTOOL_DECLARE_LINK_MODE_MASK(common); + int val; + + linkmode_and(common, phydev->supported_eee, PHY_EEE_100_10000_FEATURES); + if (!linkmode_empty(common)) { + /* IEEE 802.3-2018 45.2.7.13 EEE advertisement 1 + * (Register 7.60) + */ + val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV); + if (val < 0) + return val; + + mii_eee_100_10000_adv_mod_linkmode_t(adv, val); + } + + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT, + phydev->supported_eee)) { + /* IEEE 802.3cg-2019 45.2.7.25 10BASE-T1 AN control register + * (Register 7.526) + */ + val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_10BT1_AN_CTRL); + if (val < 0) + return val; + + mii_10base_t1_adv_mod_linkmode_t(adv, val); + } + + return 0; +} + +/** + * genphy_c45_read_eee_lpa - read advertised LP EEE link modes + * @phydev: target phy_device struct + */ +static int genphy_c45_read_eee_lpa(struct phy_device *phydev, + unsigned long *lpa) +{ + __ETHTOOL_DECLARE_LINK_MODE_MASK(common); + int val; + + linkmode_and(common, phydev->supported_eee, PHY_EEE_100_10000_FEATURES); + if (!linkmode_empty(common)) { + /* IEEE 802.3-2018 45.2.7.14 EEE link partner ability 1 + * (Register 7.61) + */ + val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE); + if (val < 0) + return val; + + mii_eee_100_10000_adv_mod_linkmode_t(lpa, val); + } + + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT, + phydev->supported_eee)) { + /* IEEE 802.3cg-2019 45.2.7.26 10BASE-T1 AN status register + * (Register 7.527) + */ + val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_10BT1_AN_STAT); + if (val < 0) + return val; + + mii_10base_t1_adv_mod_linkmode_t(lpa, val); + } + + return 0; +} + /** * genphy_c45_read_eee_abilities - read supported EEE link modes * @phydev: target phy_device struct @@ -1173,6 +1299,118 @@ int genphy_c45_plca_get_status(struct phy_device *phydev, } EXPORT_SYMBOL_GPL(genphy_c45_plca_get_status); +/** + * genphy_c45_eee_is_active - get EEE supported and status + * @phydev: target phy_device struct + * @data: ethtool_eee data + * + * Description: it reports the possible state of EEE functionality. + */ +int genphy_c45_eee_is_active(struct phy_device *phydev, unsigned long *adv, + unsigned long *lp, bool *is_enabled) +{ + __ETHTOOL_DECLARE_LINK_MODE_MASK(tmp_adv) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(tmp_lp) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(common); + bool eee_enabled, eee_active; + int ret; + + ret = genphy_c45_read_eee_adv(phydev, tmp_adv); + if (ret) + return ret; + + ret = genphy_c45_read_eee_lpa(phydev, tmp_lp); + if (ret) + return ret; + + eee_enabled = !linkmode_empty(tmp_adv); + linkmode_and(common, tmp_adv, tmp_lp); + if (eee_enabled && !linkmode_empty(common)) + eee_active = phy_check_valid(phydev->speed, phydev->duplex, + common); + else + eee_active = false; + + if (adv) + linkmode_copy(adv, tmp_adv); + if (lp) + linkmode_copy(lp, tmp_lp); + if (is_enabled) + *is_enabled = eee_enabled; + + return eee_active; +} +EXPORT_SYMBOL(genphy_c45_eee_is_active); + +/** + * genphy_c45_ethtool_get_eee - get EEE supported and status + * @phydev: target phy_device struct + * @data: ethtool_eee data + * + * Description: it reports the Supported/Advertisement/LP Advertisement + * capabilities. + */ +int genphy_c45_ethtool_get_eee(struct phy_device *phydev, + struct ethtool_eee *data) +{ + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lp) = {}; + bool overflow = false, is_enabled; + int ret; + + ret = genphy_c45_eee_is_active(phydev, adv, lp, &is_enabled); + if (ret < 0) + return ret; + + data->eee_enabled = is_enabled; + data->eee_active = ret; + + if (!ethtool_convert_link_mode_to_legacy_u32(&data->supported, + phydev->supported_eee)) + overflow = true; + if (!ethtool_convert_link_mode_to_legacy_u32(&data->advertised, adv)) + overflow = true; + if (!ethtool_convert_link_mode_to_legacy_u32(&data->lp_advertised, lp)) + overflow = true; + + if (overflow) + phydev_warn(phydev, "Not all supported or advertised EEE link modes was passed to the user space\n"); + + return 0; +} +EXPORT_SYMBOL(genphy_c45_ethtool_get_eee); + +/** + * genphy_c45_ethtool_set_eee - get EEE supported and status + * @phydev: target phy_device struct + * @data: ethtool_eee data + * + * Description: it reportes the Supported/Advertisement/LP Advertisement + * capabilities. + */ +int genphy_c45_ethtool_set_eee(struct phy_device *phydev, + struct ethtool_eee *data) +{ + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; + int ret; + + if (data->eee_enabled) { + if (data->advertised) + adv[0] = data->advertised; + else + linkmode_copy(adv, phydev->supported_eee); + } + + ret = genphy_c45_write_eee_adv(phydev, adv); + if (ret < 0) + return ret; + if (ret > 0) + return phy_restart_aneg(phydev); + + return 0; +} +EXPORT_SYMBOL(genphy_c45_ethtool_set_eee); + struct phy_driver genphy_c45_driver = { .phy_id = 0xffffffff, .phy_id_mask = 0xffffffff, diff --git a/include/linux/mdio.h b/include/linux/mdio.h index 77c324f89b66..fcd5492e4993 100644 --- a/include/linux/mdio.h +++ b/include/linux/mdio.h @@ -419,6 +419,42 @@ static inline void mii_eee_100_10000_adv_mod_linkmode_t(unsigned long *adv, adv, val & MDIO_EEE_10GKR); } +static inline u32 linkmode_adv_to_mii_eee_100_10000_adv_t(unsigned long *adv) +{ + u32 result = 0; + + if (linkmode_test_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, adv)) + result |= MDIO_EEE_100TX; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, adv)) + result |= MDIO_EEE_1000T; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT, adv)) + result |= MDIO_EEE_10GT; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseKX_Full_BIT, adv)) + result |= MDIO_EEE_1000KX; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT, adv)) + result |= MDIO_EEE_10GKX4; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10000baseKR_Full_BIT, adv)) + result |= MDIO_EEE_10GKR; + + return result; +} + +static inline void mii_10base_t1_adv_mod_linkmode_t(unsigned long *adv, u16 val) +{ + linkmode_mod_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT, + adv, val & MDIO_AN_10BT1_AN_CTRL_ADV_EEE_T1L); +} + +static inline u32 linkmode_adv_to_mii_10base_t1_t(unsigned long *adv) +{ + u32 result = 0; + + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT, adv)) + result |= MDIO_AN_10BT1_AN_CTRL_ADV_EEE_T1L; + + return result; +} + int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum); int __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val); int __mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum, diff --git a/include/linux/phy.h b/include/linux/phy.h index fa8453c48ad1..f8fbbf137ece 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1757,6 +1757,13 @@ int genphy_c45_plca_set_cfg(struct phy_device *phydev, const struct phy_plca_cfg *plca_cfg); int genphy_c45_plca_get_status(struct phy_device *phydev, struct phy_plca_status *plca_st); +int genphy_c45_eee_is_active(struct phy_device *phydev, unsigned long *adv, + unsigned long *lp, bool *is_enabled); +int genphy_c45_ethtool_get_eee(struct phy_device *phydev, + struct ethtool_eee *data); +int genphy_c45_ethtool_set_eee(struct phy_device *phydev, + struct ethtool_eee *data); +int genphy_c45_write_eee_adv(struct phy_device *phydev, unsigned long *adv); /* Generic C45 PHY driver */ extern struct phy_driver genphy_c45_driver; diff --git a/include/uapi/linux/mdio.h b/include/uapi/linux/mdio.h index 75b7257a51e1..256b463e47a6 100644 --- a/include/uapi/linux/mdio.h +++ b/include/uapi/linux/mdio.h @@ -79,6 +79,8 @@ #define MDIO_AN_T1_LP_L 517 /* BASE-T1 AN LP Base Page ability register [15:0] */ #define MDIO_AN_T1_LP_M 518 /* BASE-T1 AN LP Base Page ability register [31:16] */ #define MDIO_AN_T1_LP_H 519 /* BASE-T1 AN LP Base Page ability register [47:32] */ +#define MDIO_AN_10BT1_AN_CTRL 526 /* 10BASE-T1 AN control register */ +#define MDIO_AN_10BT1_AN_STAT 527 /* 10BASE-T1 AN status register */ #define MDIO_PMA_PMD_BT1_CTRL 2100 /* BASE-T1 PMA/PMD control register */ /* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */ @@ -340,6 +342,12 @@ #define MDIO_AN_T1_LP_H_10L_TX_HI_REQ 0x1000 /* 10BASE-T1L High Level LP Transmit Request */ #define MDIO_AN_T1_LP_H_10L_TX_HI 0x2000 /* 10BASE-T1L High Level LP Transmit Ability */ +/* 10BASE-T1 AN control register */ +#define MDIO_AN_10BT1_AN_CTRL_ADV_EEE_T1L 0x4000 /* 10BASE-T1L EEE ability advertisement */ + +/* 10BASE-T1 AN status register */ +#define MDIO_AN_10BT1_AN_STAT_LPA_EEE_T1L 0x4000 /* 10BASE-T1L LP EEE ability advertisement */ + /* BASE-T1 PMA/PMD control register */ #define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000 /* MASTER-SLAVE config value */ From patchwork Wed Feb 1 14:58:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51392 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp327255wrn; Wed, 1 Feb 2023 07:03:54 -0800 (PST) X-Google-Smtp-Source: AK7set8YDOuLj5u8uMZS1HgWk6SYkZ/Gve+V0ATIKjKiTVL0LfQUb4zKp9nD6PSOA7F8e5byh/cr X-Received: by 2002:a17:903:1246:b0:196:19af:a7f3 with SMTP id u6-20020a170903124600b0019619afa7f3mr3899750plh.39.1675263833991; Wed, 01 Feb 2023 07:03:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263833; cv=none; d=google.com; s=arc-20160816; b=zpnEWpvGniy+o3cKj8TyZzLro3MTgX2Sa+tUYsV00CKXjBRJ9SVDhTUOeAie10OhOV Ic/JpNxYJtmRQjZG1owU2KmpBqkUW5ndtlLKxcURSapxf6i2UIxObE4RMpg8iGnbeXEn oAYMRnStZwzk88S+pgDhjqxIxFX/iFpD5DqKCcpgv8WReeQ2M/Jd99cia//mcP/BgfBA UnxMH1ru8GK20YaJeakMubJAR4+qfWdLlqLzz4YDBOsK4V4pUaT+956YGCv6xrZFiSKH pnbAAccQx10hnlBvm0es1X2u9YCrQ8d2QQ+V6vgQZ2jAdA3PQnfXLp99eNaQQ7YmEfDR 5s/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=nB5tjboHQI7de6gymIcCzARf4OaaG4tXe9B3qWoNXCE=; b=GAxOIiz5D8YOwKdCKZn/APVp8u660PPJGfbYOhBJ4iGvV48+RiG56f52UF3EQaqdw1 fmmZwlEIUMbTv3LHSXx7T64mS17RheAPO1WO8y8t/ta/SIxtM5LhDTFH9sx1wIjQFpRS dC5GKrNVtjbDJNvUOShz/fVssOu+6cp7twAfYq4zpzf70Qya+dcZUMO9fJ29GgBzPfjp 2EvY9LP8Bd6ae7m+4uu4IRHkkOdi97PLiKHG5vNIm8CdscKvfQ2mUETeVBAHADTv4YoV 7yKuqTL9P2jW38VckwXlUt1cxVtIQ9/XGcAbAWBKGhsSdxMMDnGEa+Rr12TVIIgNJWjG 1cXQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j5-20020a170903024500b00194c7603bb9si22376341plh.104.2023.02.01.07.03.41; Wed, 01 Feb 2023 07:03:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232916AbjBAPAm (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35046 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232806AbjBAO7i (ORCPT ); Wed, 1 Feb 2023 09:59:38 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 289936ACAA for ; Wed, 1 Feb 2023 06:59:08 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rZ-0E; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZW-001w1E-Hn; Wed, 01 Feb 2023 15:58:49 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hVQ-Bo; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 06/23] net: phy: c22: migrate to genphy_c45_write_eee_adv() Date: Wed, 1 Feb 2023 15:58:28 +0100 Message-Id: <20230201145845.2312060-7-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641449947153169?= X-GMAIL-MSGID: =?utf-8?q?1756641449947153169?= Migrate from genphy_config_eee_advert() to genphy_c45_write_eee_adv(). It should work as before except write operation to the EEE adv registers will be done only if some EEE abilities was detected. If some driver will have a regression, related driver should provide own .get_features callback. See micrel.c:ksz9477_get_features() as example. Signed-off-by: Oleksij Rempel --- drivers/net/phy/phy_device.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 3651f1fd8fc9..0c47fa765b69 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -2231,7 +2231,10 @@ int __genphy_config_aneg(struct phy_device *phydev, bool changed) { int err; - if (genphy_config_eee_advert(phydev)) + err = genphy_c45_write_eee_adv(phydev, phydev->supported_eee); + if (err < 0) + return err; + else if (err) changed = true; err = genphy_setup_master_slave(phydev); @@ -2653,6 +2656,11 @@ int genphy_read_abilities(struct phy_device *phydev) phydev->supported, val & ESTATUS_1000_XFULL); } + /* This is optional functionality. If not supported, we may get an error + * which should be ignored. + */ + genphy_c45_read_eee_abilities(phydev); + return 0; } EXPORT_SYMBOL(genphy_read_abilities); From patchwork Wed Feb 1 14:58:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51373 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325394wrn; Wed, 1 Feb 2023 07:01:30 -0800 (PST) X-Google-Smtp-Source: AK7set+0/INS6kw98wORdd9yjFcaBY+bawXvtfYe9iito9Da++AyASxObCo3DVCebFi5Zbn3V9N5 X-Received: by 2002:a17:90b:4c47:b0:22c:7e2a:efc5 with SMTP id np7-20020a17090b4c4700b0022c7e2aefc5mr2486128pjb.37.1675263690226; Wed, 01 Feb 2023 07:01:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263690; cv=none; d=google.com; s=arc-20160816; b=vyv63FzOTW3eAd6qCok9fZdZY768R9gdaC1JJXaC6Fa5OlBIwO94Vg756lxtjhXcXP tD52hKnfzFEu4224E2EiJ3G9ot13fqbHHddNsa+vXYf5eBJTvzn1IdPYW+23dQyzirgX KqEIQuN3oGsgs+K7ZytEXZdLUADg6xw0LlpVl1mTVBwN7/o2KnVGn2aledrqtPD5nrlV qm1dXNfXWZdjYvRCyztNgFQPWirRn2JxON/P5ZIe0cfOrCce8Qq3SbCdUXrLGBfuQ0Nw fbK95zhLlB8zIK0jT21UoHSfDjF823rqPIGeZGGnxHeNF+h9A1+I5uIRSNRbIwtjLXE4 /2vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=SLk4uSBFotmnc+dasetRUvH0sOidjQR5xYHHp0XtVyo=; b=m9KQ2q+r7vK1y20hs3WgN2hy2WluTDFfKJsvQsnWq3j2CfKBSORlRuItFAlmcJlU+B 47J+NpOkQMDDP4juDbFrt76sopBarIyQF27wutzQD5+8ylVdD9/Vr818o5I4nmjdVutE RyJEPdCQ8MN+WQNxGEALVeuOg4quo5100zp/zKGx3+VdmdqSzPbkFBy9iYzPHsAP5cEo CpEou7JJLNBaPd5wzKbkJ6+k6ZS/A1+778tpJh3UtMuglOq1qeV+wffv6gaBVZEpL3A1 a9vHanqLfVGtD9SJ8I5uK1EhEvvCBZXTbZMKzMpN0kRWhOz1r7M6m91/TkPdafHE3mpN Dfjw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id pi13-20020a17090b1e4d00b0022bac52ab07si2196740pjb.16.2023.02.01.07.01.17; Wed, 01 Feb 2023 07:01:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231501AbjBAO7f (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33634 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231956AbjBAO7F (ORCPT ); Wed, 1 Feb 2023 09:59:05 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8208C6AC96 for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rV-0D; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZV-001w14-Pv; Wed, 01 Feb 2023 15:58:48 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hVZ-CN; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 07/23] net: phy: c45: migrate to genphy_c45_write_eee_adv() Date: Wed, 1 Feb 2023 15:58:29 +0100 Message-Id: <20230201145845.2312060-8-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641299081510053?= X-GMAIL-MSGID: =?utf-8?q?1756641299081510053?= Migrate from genphy_config_eee_advert() to genphy_c45_write_eee_adv(). It should work as before except write operation to the EEE adv registers will be done only if some EEE abilities was detected. If some driver will have a regression, related driver should provide own .get_features callback. See micrel.c:ksz9477_get_features() as example. Signed-off-by: Oleksij Rempel --- drivers/net/phy/phy-c45.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index 9582c8bf74ec..6149e8c3243f 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -262,7 +262,11 @@ int genphy_c45_an_config_aneg(struct phy_device *phydev) linkmode_and(phydev->advertising, phydev->advertising, phydev->supported); - changed = genphy_config_eee_advert(phydev); + ret = genphy_c45_write_eee_adv(phydev, phydev->supported_eee); + if (ret < 0) + return ret; + else if (ret) + changed = true; if (genphy_c45_baset1_able(phydev)) return genphy_c45_baset1_an_config_aneg(phydev); @@ -950,6 +954,11 @@ int genphy_c45_pma_read_abilities(struct phy_device *phydev) } } + /* This is optional functionality. If not supported, we may get an error + * which should be ignored. + */ + genphy_c45_read_eee_abilities(phydev); + return 0; } EXPORT_SYMBOL_GPL(genphy_c45_pma_read_abilities); From patchwork Wed Feb 1 14:58:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51390 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp327212wrn; Wed, 1 Feb 2023 07:03:50 -0800 (PST) X-Google-Smtp-Source: AK7set8E2pqNXh+kCa2n6hMQvv7zo44e2hSFybtXOLJO5KgG8nrMRiK7WCBNT+l2JGaQPwyhdfz1 X-Received: by 2002:a17:903:24f:b0:196:3db5:c08b with SMTP id j15-20020a170903024f00b001963db5c08bmr3435779plh.69.1675263830198; Wed, 01 Feb 2023 07:03:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263830; cv=none; d=google.com; s=arc-20160816; b=t2b3tkEPQqZlUZLCrDuek+fwkrCIcpmggyzXBGivImM0UZ9osYoVPdC/iaevVqEGJv rgvUao/llgDVZNLJkMpmLwmGrcCUGCgDrPKo2rQGO+SYZZQymFvsq9Kj+v3vftZktxYV 2cvmLzAnaH0wmLp43vY2RsO7YV2cJiz+CwJA+swkjqDvV7/BKbmX2dYFp6JWQ+MU923R bAPajrF2EcnsVfhWl+LCUh6dX4cuQj0aJax8KKFULjaMy3IX/cGrdhwif57FQXi9r5qH AGEpLFIuqEa0/77p9nW9ERPwpM+5Qq2k73gBIk4JTjXV8Dekn47/6KTc8P/ZAcWXJSge 3eFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=4uWMOXtZp3YXsV7ikAe/j5MPTuk0TWcLz4iGteYqL10=; b=ua7FNi8hon9ncvl+CW3/T6AVHHrYrpuL84vYn8GJ8l4wT3oteGNPtBIAQhx2SoJo8Q BbyDi6kp02I2F2EMIf5tcgK+5PJbZVhedoLOYejCQp5qWgcUTUtoKuYltLkz37xq5cbi 6syxNp/WCYvniB6Mnn0uw7aKghJ9sV6rDVMCGb2+xuhSNR1Mxpo+Atd2Hth6qE/vnJrv NlwRibJsTlqw7U2XZDMLsKseJNlZJ5TrLj6x1rHqx3wLVH/87DaMouGTTZptveEg3jNL 3GhlYZWPRetZYOzGHaoXZouFCu/L9uj6Y9D/ZhO05RCZ/1rIOe8uuOhOMkc2EIn4kQzm D23A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o9-20020a170902778900b001867d0e4307si18820839pll.372.2023.02.01.07.03.37; Wed, 01 Feb 2023 07:03:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232909AbjBAPAh (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33776 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232784AbjBAO7T (ORCPT ); Wed, 1 Feb 2023 09:59:19 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E9FB6ACA1 for ; Wed, 1 Feb 2023 06:59:08 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rW-0C; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZV-001w15-Se; Wed, 01 Feb 2023 15:58:48 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hVi-Ct; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 08/23] net: phy: migrate phy_init_eee() to genphy_c45_eee_is_active() Date: Wed, 1 Feb 2023 15:58:30 +0100 Message-Id: <20230201145845.2312060-9-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641445853223181?= X-GMAIL-MSGID: =?utf-8?q?1756641445853223181?= Reduce code duplicated by migrating phy_init_eee() to genphy_c45_eee_is_active(). Signed-off-by: Oleksij Rempel --- drivers/net/phy/phy.c | 89 +++++++------------------------------------ 1 file changed, 14 insertions(+), 75 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 41cfb24c48c1..36533746630e 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1457,30 +1457,6 @@ void phy_mac_interrupt(struct phy_device *phydev) } EXPORT_SYMBOL(phy_mac_interrupt); -static void mmd_eee_adv_to_linkmode(unsigned long *advertising, u16 eee_adv) -{ - linkmode_zero(advertising); - - if (eee_adv & MDIO_EEE_100TX) - linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, - advertising); - if (eee_adv & MDIO_EEE_1000T) - linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, - advertising); - if (eee_adv & MDIO_EEE_10GT) - linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT, - advertising); - if (eee_adv & MDIO_EEE_1000KX) - linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseKX_Full_BIT, - advertising); - if (eee_adv & MDIO_EEE_10GKX4) - linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT, - advertising); - if (eee_adv & MDIO_EEE_10GKR) - linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseKR_Full_BIT, - advertising); -} - /** * phy_init_eee - init and check the EEE feature * @phydev: target phy_device struct @@ -1493,62 +1469,25 @@ static void mmd_eee_adv_to_linkmode(unsigned long *advertising, u16 eee_adv) */ int phy_init_eee(struct phy_device *phydev, bool clk_stop_enable) { + int ret; + if (!phydev->drv) return -EIO; - /* According to 802.3az,the EEE is supported only in full duplex-mode. - */ - if (phydev->duplex == DUPLEX_FULL) { - __ETHTOOL_DECLARE_LINK_MODE_MASK(common); - __ETHTOOL_DECLARE_LINK_MODE_MASK(lp); - __ETHTOOL_DECLARE_LINK_MODE_MASK(adv); - int eee_lp, eee_cap, eee_adv; - int status; - u32 cap; - - /* Read phy status to properly get the right settings */ - status = phy_read_status(phydev); - if (status) - return status; - - /* First check if the EEE ability is supported */ - eee_cap = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); - if (eee_cap <= 0) - goto eee_exit_err; - - cap = mmd_eee_cap_to_ethtool_sup_t(eee_cap); - if (!cap) - goto eee_exit_err; - - /* Check which link settings negotiated and verify it in - * the EEE advertising registers. - */ - eee_lp = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE); - if (eee_lp <= 0) - goto eee_exit_err; - - eee_adv = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV); - if (eee_adv <= 0) - goto eee_exit_err; - - mmd_eee_adv_to_linkmode(adv, eee_adv); - mmd_eee_adv_to_linkmode(lp, eee_lp); - linkmode_and(common, adv, lp); - - if (!phy_check_valid(phydev->speed, phydev->duplex, common)) - goto eee_exit_err; + ret = genphy_c45_eee_is_active(phydev, NULL, NULL, NULL); + if (ret < 0) + return ret; + if (!ret) + return -EPROTONOSUPPORT; - if (clk_stop_enable) - /* Configure the PHY to stop receiving xMII - * clock while it is signaling LPI. - */ - phy_set_bits_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1, - MDIO_PCS_CTRL1_CLKSTOP_EN); + if (clk_stop_enable) + /* Configure the PHY to stop receiving xMII + * clock while it is signaling LPI. + */ + ret = phy_set_bits_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1, + MDIO_PCS_CTRL1_CLKSTOP_EN); - return 0; /* EEE supported */ - } -eee_exit_err: - return -EPROTONOSUPPORT; + return ret < 0 ? ret : 0; } EXPORT_SYMBOL(phy_init_eee); From patchwork Wed Feb 1 14:58:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51382 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326019wrn; Wed, 1 Feb 2023 07:02:16 -0800 (PST) X-Google-Smtp-Source: AK7set+AI+vywhX+2FI4hO3g26Mt+dFcw+1Im7ihD/CsKyVJ6BCWq95Q9EoUbHmjT/GOeVAc3daQ X-Received: by 2002:a17:90a:19d1:b0:22b:f608:2aa6 with SMTP id 17-20020a17090a19d100b0022bf6082aa6mr2531463pjj.18.1675263736332; Wed, 01 Feb 2023 07:02:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263736; cv=none; d=google.com; s=arc-20160816; b=LENKmvfhjnyDSouXn8RHEmPTQPzOqtAtz4oQm9JXhllN7Pqk/xizJF7RpzEaFRQu3P O9A1EGVa45bduo7S6tnTlx/aTEPZsEzJamEdKiYMGHGn9rZf0QJ+LpKnHrku4wUYjcjH ywIDCYEu8X3+80ntRa1/80WY2bp5Oza3YPwUWQc7UkFN8groYjiy4iN/vgJeOfeTQI99 5Kjf8cCm0gsyBDFuQTDWkhaLeqGAXg3/aBj6D7ie8S35T8o/H3CAUDUeDHH0zQGvfSmY welh35EPXtRjbv7Ei/4l3rmNjdH2Fz49BDraBpVSCA7tNMsVXSkzv7fXZaSEiyZIiCQN LzKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=phV+Agshp4TrP55TCTo3tganvNWYhjYZjxw08VMJ9rM=; b=wnV1CuQybVorZm+RigEW2U4XxLN/tw+nt/QBSk2ag89Ed+ooTnGwzvNItIf8dn82VH BSzXAZIbKInfZdONtK61B/08PE9gZrtjWuat/Aw2A6oGwnPA/NNnxpiLO2IYmrbbTlwj wSNcGUQ88knOpnVAJ7462qpLil3kdWR+xUcGrs3rmIFuldff5RVN3mmqZpT+mdlVgIXz FKLkm0xNnAJuKGj4DvlYn9idPVTypoXGOCr/rCDm9ndDp6DZgwmLyUYfhPlhma59DbW9 PI/pwlNoBUKd9XagWlTtpAqDISVDdEfmp4ZTl6+lSpax1woyFIBCstvnA2xeMRSk75K3 VDIA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id pg7-20020a17090b1e0700b002290c209ccdsi2076198pjb.150.2023.02.01.07.02.02; Wed, 01 Feb 2023 07:02:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229761AbjBAO7j (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232090AbjBAO7F (ORCPT ); Wed, 1 Feb 2023 09:59:05 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 847C26AC97 for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rg-0A; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZX-001w1b-An; Wed, 01 Feb 2023 15:58:50 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hVr-DQ; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 09/23] net: phy: start using genphy_c45_ethtool_get/set_eee() Date: Wed, 1 Feb 2023 15:58:31 +0100 Message-Id: <20230201145845.2312060-10-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641347337929535?= X-GMAIL-MSGID: =?utf-8?q?1756641347337929535?= All preparations are done. Now we can start using new functions and remove the old code. Signed-off-by: Oleksij Rempel --- drivers/net/phy/phy.c | 60 ++----------------------------------------- 1 file changed, 2 insertions(+), 58 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 36533746630e..2f1041a7211e 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1517,33 +1517,10 @@ EXPORT_SYMBOL(phy_get_eee_err); */ int phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_eee *data) { - int val; - if (!phydev->drv) return -EIO; - /* Get Supported EEE */ - val = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); - if (val < 0) - return val; - data->supported = mmd_eee_cap_to_ethtool_sup_t(val); - - /* Get advertisement EEE */ - val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV); - if (val < 0) - return val; - data->advertised = mmd_eee_adv_to_ethtool_adv_t(val); - data->eee_enabled = !!data->advertised; - - /* Get LP advertisement EEE */ - val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE); - if (val < 0) - return val; - data->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(val); - - data->eee_active = !!(data->advertised & data->lp_advertised); - - return 0; + return genphy_c45_ethtool_get_eee(phydev, data); } EXPORT_SYMBOL(phy_ethtool_get_eee); @@ -1556,43 +1533,10 @@ EXPORT_SYMBOL(phy_ethtool_get_eee); */ int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data) { - int cap, old_adv, adv = 0, ret; - if (!phydev->drv) return -EIO; - /* Get Supported EEE */ - cap = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); - if (cap < 0) - return cap; - - old_adv = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV); - if (old_adv < 0) - return old_adv; - - if (data->eee_enabled) { - adv = !data->advertised ? cap : - ethtool_adv_to_mmd_eee_adv_t(data->advertised) & cap; - /* Mask prohibited EEE modes */ - adv &= ~phydev->eee_broken_modes; - } - - if (old_adv != adv) { - ret = phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, adv); - if (ret < 0) - return ret; - - /* Restart autonegotiation so the new modes get sent to the - * link partner. - */ - if (phydev->autoneg == AUTONEG_ENABLE) { - ret = phy_restart_aneg(phydev); - if (ret < 0) - return ret; - } - } - - return 0; + return genphy_c45_ethtool_set_eee(phydev, data); } EXPORT_SYMBOL(phy_ethtool_set_eee); From patchwork Wed Feb 1 14:58:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51389 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp327099wrn; Wed, 1 Feb 2023 07:03:40 -0800 (PST) X-Google-Smtp-Source: AK7set82z9ev45lhAg+JlDqiMPP55v2eKTInJFLR0HxILoVmjZoKsCSVfLnsWLjPq6Wlw9TRzcMT X-Received: by 2002:a17:90b:3a90:b0:22c:19e4:a66f with SMTP id om16-20020a17090b3a9000b0022c19e4a66fmr2715635pjb.12.1675263820252; Wed, 01 Feb 2023 07:03:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263820; cv=none; d=google.com; s=arc-20160816; b=oEBaJ7soeYp+0eulUXf/CeI3mgurAV68HGp5hbwWQZ/OhFPlfaNLpgZfZykdnAdvJX 5Ox91IDfcSpKu36uWToWC1c4BpmJLz9+PmSPcorMcrNWV/AtnrkTvpkDXDfKZck66RZK Fc97/LE8lGF+bd3lnXDJ2flhQHk9EQbeDVK/dQUbbERsfZ22xmExn5SWmHgm7Eh0V6kg Hc3MtCZVdyU8byozWwF4DWCrUvGVFsPWoONw0twIsNFqHkddoQu98lW0e9g3kYADZq6J DSoqhL15pFlgBa9mfKIsh/ornmOTMU14oLeMpA67F7QPvoNkzR3Pzf0mJiQAfC+NML37 8Cfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=cd6x4I+b+OtTaUvMxzHi2PTVCYz6HWQJH0cr93xjJvk=; b=XZJI+8xl1t3KCGNfiaql4Sj+cqjd07H8e+DPMjon1sc5jvChcWSndYvSVBgIzGcgC6 wmT3egeThnOhflg/Me9o+0EzEoNDg4f1G6CWSdfZtw0an/GNxCsillduv8lEf0sEI/ra YnEmfH8ebLPz5x8io65CUdx0wLkvBRpfXYSc28cjo/pzdk3GrbUSyt90aCwRWERWj88d 2cVBP/VYb8SYzI3meiVXxxNB+S6LNXv1PJFUCFS7PCG0KDjWCzPnwXXoSsUCozqoop68 cxr+qm9EP/EB3eOSJkf2QkEHj+qRoGA6y+ccnmZq4uw665VNhLcW/ymZBr/95WaZhs0c mlFg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h12-20020a17090a9c0c00b0022c1c376f57si1814750pjp.33.2023.02.01.07.03.28; Wed, 01 Feb 2023 07:03:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232129AbjBAPAS (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232520AbjBAO7G (ORCPT ); Wed, 1 Feb 2023 09:59:06 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 55C0265EE9 for ; Wed, 1 Feb 2023 06:59:04 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002ri-0K; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZX-001w1h-QP; Wed, 01 Feb 2023 15:58:50 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hW0-Dx; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 10/23] net: phy: add driver specific get/set_eee support Date: Wed, 1 Feb 2023 15:58:32 +0100 Message-Id: <20230201145845.2312060-11-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641435205433840?= X-GMAIL-MSGID: =?utf-8?q?1756641435205433840?= Not all PHYs can be handled by generic phy_ethtool_get/set_eee() functions. So, add driver specific get/set_eee support. Signed-off-by: Oleksij Rempel --- drivers/net/phy/phy.c | 6 ++++++ include/linux/phy.h | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 2f1041a7211e..c42df62df302 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1520,6 +1520,9 @@ int phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_eee *data) if (!phydev->drv) return -EIO; + if (phydev->drv->get_eee) + return phydev->drv->get_eee(phydev, data); + return genphy_c45_ethtool_get_eee(phydev, data); } EXPORT_SYMBOL(phy_ethtool_get_eee); @@ -1536,6 +1539,9 @@ int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data) if (!phydev->drv) return -EIO; + if (phydev->drv->set_eee) + return phydev->drv->set_eee(phydev, data); + return genphy_c45_ethtool_set_eee(phydev, data); } EXPORT_SYMBOL(phy_ethtool_set_eee); diff --git a/include/linux/phy.h b/include/linux/phy.h index f8fbbf137ece..89556cb2c555 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1051,6 +1051,11 @@ struct phy_driver { /** @get_plca_status: Return the current PLCA status info */ int (*get_plca_status)(struct phy_device *dev, struct phy_plca_status *plca_st); + + /** @get_eee: Return the current EEE configuration */ + int (*get_eee)(struct phy_device *phydev, struct ethtool_eee *e); + /** @set_eee: Set the EEE configuration */ + int (*set_eee)(struct phy_device *phydev, struct ethtool_eee *e); }; #define to_phy_driver(d) container_of(to_mdio_common_driver(d), \ struct phy_driver, mdiodrv) From patchwork Wed Feb 1 14:58:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51393 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp327549wrn; Wed, 1 Feb 2023 07:04:19 -0800 (PST) X-Google-Smtp-Source: AK7set+KWgAU+avM7DJ9Aa3FYapX9kpme9XiefEifUECgOOTlGqcjWJz/AOHWK2Bh+UhbvnhRB3t X-Received: by 2002:a17:906:6d54:b0:85c:e3fd:d39 with SMTP id a20-20020a1709066d5400b0085ce3fd0d39mr6153248ejt.37.1675263859230; Wed, 01 Feb 2023 07:04:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263859; cv=none; d=google.com; s=arc-20160816; b=TWejpJjatqJxTW9lmAQvvkMeKm5kizAD2OSbWj5RPOB/W6d7DIgPP8CNdZuzh0huvt NpseKC7nYF/0lNeH/58H2mlHBEqGCUFD5GhpUAhcZLPOP4FXaqzxlFjk/EM4yGVQ9VZu +u/bldt0eeY24xiBVmTTn87T7/bCXEt+cNhmY3Djwad4hIq+t+mQahkCBHm6qy3lgVCl xt0WEx+fcWbWlrraKqG4jVH260UpIVjP0jltgKP+2/a2jqzhsMArwE0+lIMg/Q6gMcVU O0pBE6yCzIjwD3S1k/GuYAZDmPAe9bfwlTjR3Pe+ugwlEGsE83K+JVxOFpibOVX5kljI Ev/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Eyu7OGmS0PeH6ZMYI0PnhNjTAC4G2r5GmaoqV5VIhlA=; b=ZaBdIYLQu0Dtw7OjEfT2GlEF2cxC/XR/1Q4KCA+K4EZMvBYUcn6UCM17Re1e4O+McR 7hVtTn5yLs/52Xl5PIXGcCsrIeLmloSlYEWfU4c5oV2ffH5dI9ZB52XZm3nGkPiNTPeO j/dLol7GoTmPiIYG6DgnSzGbc2NH9IIk2u/4xaDKXuc0wO4ybrhm0+jR6UAY3gF3CZIq 8LW6b76iWNPMIkk+O48iuVinufNtNeysWgAQqvlVpUDL19+Y9bKhn+ZcO6l8CfL9qR78 i0mdLbP3QCW0WuHQF0pQEoWUgBAErw3w+WsI1mjeTIeZbbDUxPS53Q9VleS2/ZF1dPUB CH7g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c28-20020a1709063f1c00b0087ff004430dsi17543616ejj.371.2023.02.01.07.03.54; Wed, 01 Feb 2023 07:04:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232277AbjBAPA2 (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33678 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230094AbjBAO7I (ORCPT ); Wed, 1 Feb 2023 09:59:08 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A8AF96B988 for ; Wed, 1 Feb 2023 06:59:05 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZc-0002re-1H; Wed, 01 Feb 2023 15:58:56 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZX-001w1S-1S; Wed, 01 Feb 2023 15:58:50 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hW9-EV; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 11/23] net: phy: at803x: implement ethtool access to SmartEEE functionality Date: Wed, 1 Feb 2023 15:58:33 +0100 Message-Id: <20230201145845.2312060-12-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641476662996684?= X-GMAIL-MSGID: =?utf-8?q?1756641476662996684?= If AR8035 PHY is used with a MAC without EEE support (iMX6, etc), then we need to process ethtool_eee::tx_lpi_timer and tx_lpi_enabled by the PHY driver. So, add get/set_eee support for this functionality. Signed-off-by: Oleksij Rempel --- drivers/net/phy/at803x.c | 109 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 104 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index 22f4458274aa..9eb4439b0afc 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -166,8 +166,18 @@ #define AT803X_MMD3_SMARTEEE_CTL1 0x805b #define AT803X_MMD3_SMARTEEE_CTL2 0x805c +#define AT803X_MMD3_SMARTEEE_LPI_TIME_LOW GENMASK(15, 0) +#define AT803X_MMD3_SMARTEEE_LPI_TIME_15_0 GENMASK(15, 0) #define AT803X_MMD3_SMARTEEE_CTL3 0x805d #define AT803X_MMD3_SMARTEEE_CTL3_LPI_EN BIT(8) +#define AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH GENMASK(7, 0) +#define AT803X_MMD3_SMARTEEE_LPI_TIME_23_16 GENMASK(23, 16) +/* Tx LPI timer resolution */ +#define AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS 163840 +#define AT803X_MMD3_SMARTEEE_LPI_TIME_MAX_US \ + ((GENMASK(23, 0) * AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS) / \ + NSEC_PER_USEC) +#define AT803X_MMD3_SMARTEEE_LPI_TIME_DEF_US 335544 #define ATH9331_PHY_ID 0x004dd041 #define ATH8030_PHY_ID 0x004dd076 @@ -951,17 +961,26 @@ static int at803x_get_features(struct phy_device *phydev) return 0; } -static int at803x_smarteee_config(struct phy_device *phydev) +static int at803x_smarteee_config(struct phy_device *phydev, bool enable, + u32 tx_lpi_timer_us) { struct at803x_priv *priv = phydev->priv; + u64 tx_lpi_timer_raw; + u64 tx_lpi_timer_ns; u16 mask = 0, val = 0; int ret; - if (priv->flags & AT803X_DISABLE_SMARTEEE) + if (priv->flags & AT803X_DISABLE_SMARTEEE || !enable) return phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL3, AT803X_MMD3_SMARTEEE_CTL3_LPI_EN, 0); + if (tx_lpi_timer_us > AT803X_MMD3_SMARTEEE_LPI_TIME_MAX_US) { + phydev_err(phydev, "Max LPI timer is %lu microsecs\n", + AT803X_MMD3_SMARTEEE_LPI_TIME_MAX_US); + return -EINVAL; + } + if (priv->smarteee_lpi_tw_1g) { mask |= 0xff00; val |= priv->smarteee_lpi_tw_1g << 8; @@ -978,9 +997,27 @@ static int at803x_smarteee_config(struct phy_device *phydev) if (ret) return ret; + tx_lpi_timer_ns = tx_lpi_timer_us * NSEC_PER_USEC; + tx_lpi_timer_raw = + DIV_ROUND_CLOSEST_ULL(tx_lpi_timer_ns, + AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS); + val = FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_LOW, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_15_0, + tx_lpi_timer_raw)); + + ret = phy_write_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL2, + val); + if (ret) + return ret; + + val = AT803X_MMD3_SMARTEEE_CTL3_LPI_EN | + FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_23_16, + tx_lpi_timer_raw)); + return phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL3, - AT803X_MMD3_SMARTEEE_CTL3_LPI_EN, - AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + AT803X_MMD3_SMARTEEE_CTL3_LPI_EN | + AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, val); } static int at803x_clk_out_config(struct phy_device *phydev) @@ -1067,7 +1104,8 @@ static int at803x_config_init(struct phy_device *phydev) if (ret < 0) return ret; - ret = at803x_smarteee_config(phydev); + ret = at803x_smarteee_config(phydev, true, + AT803X_MMD3_SMARTEEE_LPI_TIME_DEF_US); if (ret < 0) return ret; @@ -1612,6 +1650,65 @@ static int at803x_cable_test_start(struct phy_device *phydev) return 0; } +static int at803x_get_eee(struct phy_device *phydev, struct ethtool_eee *data) +{ + struct at803x_priv *priv = phydev->priv; + u32 tx_timer_raw; + u64 tx_timer_ns; + int ret; + + /* If SmartEEE is not enabled, it is expected that tx_lpi_* fields + * are processed by the MAC driver. + */ + if (priv->flags & AT803X_DISABLE_SMARTEEE) + return genphy_c45_ethtool_get_eee(phydev, data); + + ret = phy_read_mmd(phydev, MDIO_MMD_PCS, + AT803X_MMD3_SMARTEEE_CTL2); + tx_timer_raw = FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_15_0, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_LOW, + ret)); + if (ret < 0) + return ret; + + ret = phy_read_mmd(phydev, MDIO_MMD_PCS, + AT803X_MMD3_SMARTEEE_CTL3); + if (ret < 0) + return ret; + + tx_timer_raw |= FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_23_16, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, + ret)); + tx_timer_ns = tx_timer_raw * AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS; + data->tx_lpi_timer = DIV_ROUND_CLOSEST_ULL(tx_timer_ns, NSEC_PER_USEC); + + data->tx_lpi_enabled = !!(ret & AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + + return genphy_c45_ethtool_get_eee(phydev, data); +} + +static int at803x_set_eee(struct phy_device *phydev, struct ethtool_eee *data) +{ + struct at803x_priv *priv = phydev->priv; + int ret; + + /* If SmartEEE is not enabled, it is expected that tx_lpi_* fields + * are processed by the MAC driver. + */ + if (priv->flags & AT803X_DISABLE_SMARTEEE) + return genphy_c45_ethtool_set_eee(phydev, data); + + /* Changing Tx LPI on/off or Tx LPI timer settings + * do not require link reset. + */ + ret = at803x_smarteee_config(phydev, data->tx_lpi_enabled, + data->tx_lpi_timer); + if (ret) + return ret; + + return genphy_c45_ethtool_set_eee(phydev, data); +} + static int qca83xx_config_init(struct phy_device *phydev) { u8 switch_revision; @@ -2038,6 +2135,8 @@ static struct phy_driver at803x_driver[] = { .set_tunable = at803x_set_tunable, .cable_test_start = at803x_cable_test_start, .cable_test_get_status = at803x_cable_test_get_status, + .get_eee = at803x_get_eee, + .set_eee = at803x_set_eee, }, { /* Qualcomm Atheros AR8030 */ .phy_id = ATH8030_PHY_ID, From patchwork Wed Feb 1 14:58:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51375 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325467wrn; Wed, 1 Feb 2023 07:01:35 -0800 (PST) X-Google-Smtp-Source: AK7set+nhD6XO7i86htQJsG0qCatetouZFvQvvlCN7U/P7YxhB6Xv9cnWGBaqytxjbd2UNjnLcrD X-Received: by 2002:aa7:9e87:0:b0:593:d21d:2ee0 with SMTP id p7-20020aa79e87000000b00593d21d2ee0mr2645650pfq.4.1675263694850; Wed, 01 Feb 2023 07:01:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263694; cv=none; d=google.com; s=arc-20160816; b=uA85+nEXpTxVHwM+6w9ODsIP+fJLQYAZTTjklVadtKUS2gJimLs2yClnL4NXH27dDk fsovh9FnY2rFyGCI/O3fm0l5HmMOzqAY6ohrDvfAqev0CwEeDh6tYUcQ1kRVwzXWKsgR EWSDLQunN+Q1FOWCn/AWKkxsWdb4eq4oTY4kbArkRSl3fAEwH9jFzMFGRG2sC2+lZfef OsVydM5YfxTZ3/Boih9ipN2pd1lw8aP51HY+lv49smGhWy4lQgn5bXfKZ4pb4SMZCpyl wV/mSxLa05UvUygIL1ZnpHLKQAPx4tWApNTU7+tRM67IyQLtA40g1/sVV0M1mrQqQdiO RFLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9A9q68CmeqX00HQvfonrrrALSzi0aF0dH3x0T2q/kZY=; b=aBU6CHyJLi8VcH1XpsvsCHfuYkBxn7YvBxmRH2B44q94fEcO+JilS4tWBPuMnOZ6YY jD+CCay4vfhi9voQV5cesqZ01ajzaNYa3+EPd7EBBMXbsZkPM5aiNVNAPqpad32DrngA MEZOezXaKJny+GwHy7g4hUemqoNxhBPfu+KGfXHmVreQDZLGjDVVysTsldzO+m3OxbPr FrAE+8KhbuFmfjd4y+13qRcH0/6WPl6Lyb6bmH/uH7ZgIvmnK79kRjITdhKB2txE2DB9 JD+MmF4l/lp9op+c5KnYhT73sxywujflZ5x4qVcXtSTv3ZV/KSks58kDE4fzSoDbjCzk ST6g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c21-20020aa78e15000000b0058e16d32d1fsi17885645pfr.103.2023.02.01.07.01.21; Wed, 01 Feb 2023 07:01:34 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232822AbjBAO7n (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232166AbjBAO7F (ORCPT ); Wed, 1 Feb 2023 09:59:05 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D99C56AC99 for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rY-0C; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZW-001w1D-CR; Wed, 01 Feb 2023 15:58:49 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hWI-F4; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 12/23] net: phy: at803x: ar8035: fix EEE support for half duplex links Date: Wed, 1 Feb 2023 15:58:34 +0100 Message-Id: <20230201145845.2312060-13-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641303894312042?= X-GMAIL-MSGID: =?utf-8?q?1756641303894312042?= If AR8035 is running with enabled EEE and LPI, it will not be able to establish an 100BaseTX/Half or 1000BaseT/Half link. Similar issue we will have with 100BaseTX/Full and LPI TX timer configured to less then 80msec. To avoid this issue, we need to keep LPI disabled before link is establish and enable it only we detected supported link configuration. Signed-off-by: Oleksij Rempel --- drivers/net/phy/at803x.c | 41 +++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index 9eb4439b0afc..5ab43eb63581 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -313,6 +313,7 @@ struct at803x_priv { u8 smarteee_lpi_tw_100m; bool is_fiber; bool is_1000basex; + bool tx_lpi_on; struct regulator_dev *vddio_rdev; struct regulator_dev *vddh_rdev; struct regulator *vddio; @@ -970,6 +971,8 @@ static int at803x_smarteee_config(struct phy_device *phydev, bool enable, u16 mask = 0, val = 0; int ret; + priv->tx_lpi_on = enable; + if (priv->flags & AT803X_DISABLE_SMARTEEE || !enable) return phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL3, @@ -1010,10 +1013,15 @@ static int at803x_smarteee_config(struct phy_device *phydev, bool enable, if (ret) return ret; - val = AT803X_MMD3_SMARTEEE_CTL3_LPI_EN | - FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, - FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_23_16, - tx_lpi_timer_raw)); + val = FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_23_16, + tx_lpi_timer_raw)); + + if (phydev->state == PHY_RUNNING && + phy_check_valid(phydev->speed, phydev->duplex, + phydev->supported_eee)) { + val |= AT803X_MMD3_SMARTEEE_CTL3_LPI_EN; + } return phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL3, AT803X_MMD3_SMARTEEE_CTL3_LPI_EN | @@ -1682,7 +1690,7 @@ static int at803x_get_eee(struct phy_device *phydev, struct ethtool_eee *data) tx_timer_ns = tx_timer_raw * AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS; data->tx_lpi_timer = DIV_ROUND_CLOSEST_ULL(tx_timer_ns, NSEC_PER_USEC); - data->tx_lpi_enabled = !!(ret & AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + data->tx_lpi_enabled = priv->tx_lpi_on; return genphy_c45_ethtool_get_eee(phydev, data); } @@ -1709,6 +1717,28 @@ static int at803x_set_eee(struct phy_device *phydev, struct ethtool_eee *data) return genphy_c45_ethtool_set_eee(phydev, data); } +static void at8035_link_change_notify(struct phy_device *phydev) +{ + struct at803x_priv *priv = phydev->priv; + + if (priv->flags & AT803X_DISABLE_SMARTEEE) + return; + + if (phydev->state == PHY_RUNNING) { + if (priv->tx_lpi_on && phy_check_valid(phydev->speed, + phydev->duplex, + phydev->supported_eee)) + phy_set_bits_mmd(phydev, MDIO_MMD_PCS, + AT803X_MMD3_SMARTEEE_CTL3, + AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + } else { + if (priv->tx_lpi_on) + phy_clear_bits_mmd(phydev, MDIO_MMD_PCS, + AT803X_MMD3_SMARTEEE_CTL3, + AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + } +} + static int qca83xx_config_init(struct phy_device *phydev) { u8 switch_revision; @@ -2137,6 +2167,7 @@ static struct phy_driver at803x_driver[] = { .cable_test_get_status = at803x_cable_test_get_status, .get_eee = at803x_get_eee, .set_eee = at803x_set_eee, + .link_change_notify = at8035_link_change_notify, }, { /* Qualcomm Atheros AR8030 */ .phy_id = ATH8030_PHY_ID, From patchwork Wed Feb 1 14:58:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51387 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326702wrn; Wed, 1 Feb 2023 07:03:07 -0800 (PST) X-Google-Smtp-Source: AK7set+ynxjD2vU6B+pyFhSc/n3Xtfkb6TFmRsuCf1TPDubGnMJJng30uzY8j5ut4ZSyyHCs3Wg8 X-Received: by 2002:a05:6a20:6921:b0:b8:6a9d:179b with SMTP id q33-20020a056a20692100b000b86a9d179bmr3152743pzj.11.1675263787607; Wed, 01 Feb 2023 07:03:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263787; cv=none; d=google.com; s=arc-20160816; b=B56pZQqB2eQGwwlbGndsndOVdLiU0oN2qQI3m7cfDCQIwweZKy6VZu/TQ3cO56G3LN B9ltbawoGXrnybJh3CEcBp8/z7DJvxqSKWnDgkrgPC7BmL76FU29hWmByg4evh5UtP1h KRxlDbrcYfb8OCDMEL7CRs83f546Vfl061BMNPZ577FExYrRAI+3X2ejyjeVdYnPQn7c Obrc6CSl1Wf6DTpTeEkMp/0q+493iXospfla4E5RlP9htQYhkj/7lvmSwwGfFDVXB4/P vH+MSQlL11NDbixPaKvCSk+GAUHv4jqfeqjrkfneS9fj2mguwgbo3at9EObTJ/rhQG42 w18g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=FLzjgwXBkwsSUMh+H3RH4+NBZJq1wwHKehFdMsz83FQ=; b=EtJBjJkjr93IKD3HcP+8ZJWF/Z8iVNokmsV5S5zV1yDXIcUoQHH/Y7sz24S6IxNWJC t1oSKapJjJz5t0LI3/oRNHdJYbTjkyDHMr1iaIq4BoD58Txczaox/8R0GDLbyYUSANXJ M4zoVQ519sK2bojy5SIlcTh2VDyabTeJmm3JbC1lBI7aQ1kOOt06jHUHphE7ul5hlAXt wgGHilR8+5VAk79WvjWO7hJC6qWM7rVgDMNDUIYWd0kEHkskmn/iaT2p9CAG2sdHxe+d /aYG+0jITJnA+yaI1O9dGF+fGtRzHKVjmwXSx8P/2BZAcG2bVovnSEDgukWgCADJKecf U1Hg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x22-20020a63b216000000b004bbfa29fb4asi18495754pge.563.2023.02.01.07.02.55; Wed, 01 Feb 2023 07:03:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232126AbjBAPAb (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33870 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232717AbjBAO7J (ORCPT ); Wed, 1 Feb 2023 09:59:09 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38B7A6B9A6 for ; Wed, 1 Feb 2023 06:59:07 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZd-0002rn-06; Wed, 01 Feb 2023 15:58:57 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w1w-8a; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hWR-Fc; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 13/23] net: phy: add PHY specifica flag to signal SmartEEE support Date: Wed, 1 Feb 2023 15:58:35 +0100 Message-Id: <20230201145845.2312060-14-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641401685287743?= X-GMAIL-MSGID: =?utf-8?q?1756641401685287743?= Typical EEE support need cooperation of MAC and PHY, so both parts should be able to do EEE. But, there also PHYs compatible with normal 802.3az standard working with legacy MAC without EEE ability, acting as a complete EEE power saving system. To identify this PHYs we need a PHY specific flag. Since the PHY specification implementing this functionality calls it SmartEEE, use the same flag name - PHY_SMART_EEE. Signed-off-by: Oleksij Rempel --- include/linux/phy.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/phy.h b/include/linux/phy.h index 89556cb2c555..6063b0c7a06e 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -85,6 +85,7 @@ extern const int phy_10gbit_features_array[1]; #define PHY_IS_INTERNAL 0x00000001 #define PHY_RST_AFTER_CLK_EN 0x00000002 #define PHY_POLL_CABLE_TEST 0x00000004 +#define PHY_SMART_EEE 0x00000008 /* EEE done by PHY without MAC */ #define MDIO_DEVICE_IS_PHY 0x80000000 /** From patchwork Wed Feb 1 14:58:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51379 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325693wrn; Wed, 1 Feb 2023 07:01:52 -0800 (PST) X-Google-Smtp-Source: AK7set8smXI4nQnrB6cNmiUdjOVunLbF2eMi2jXvcJrjjUtL8jcGMCPSVhZmuPYM8+TsJfeOXpoj X-Received: by 2002:a17:90a:194c:b0:22c:6769:4b28 with SMTP id 12-20020a17090a194c00b0022c67694b28mr2519496pjh.22.1675263712070; Wed, 01 Feb 2023 07:01:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263712; cv=none; d=google.com; s=arc-20160816; b=wxmq1WrNqyr1PFIrnr47VlDKEsWEnvj2Vm/igDjz3a1e9310WskHAGsIRXqacf4X2q cwOCcu6ES/hGblv2Kq/NnhYh0ONSJ9F7ye8566payTuJF7zKLMA1/sfqMAkTm8XRxotS IT+W3781HQFdzqzjnjQo7kUa0CFmLDHIE1KvsVdZAqFXrjjGHKlquqdj0fTujIl2c6Vw DC0jgRiCZIMMkPil2gluwL8Mq/u9FHIorEFb05OTUDl8DdCP1zdyKInAY+mrw2tDA1wh f7RLT/qfs8cvSZqwyNrdnIzzalqZgJbuHozjfsd9ajJ76T1V9bllMj+cWVVvG3rs2B17 8QgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9XX6vKpdObgLKPYfd2Lr+kntojCtJaW0ZviMtS1zFKE=; b=Gs769x6WrjuTNB7JWcUtxhAI9pwSdXP5RCfX3nolnvZPNl6Tn71Hruv2J3hUXuWJTK 64akGz47ytLfxykGJkgH6+6jJCxaJPy9XTGrA8t4NHaMJQzhr2gUvF7bPjD3H934j89r hD8XpocZ44aSv+f/MRYHnJNiCa3CAIsu3L3pA/LW8KU01QRrJLlgXJnOFWmuPSa+pVPX 2GPAK8D3+FToncBVbJHzNh4Urr9UmCtuw0A4BiB19HolPJJbcC/fcR/AuLvHpWMlqZ1E qIXSPP+hLmiJp8RmVDGK8KXHPctOYkDl9HRYWNyRoriL0fqKsQyISW0yBdzUDUzGmuev vNWw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d5-20020a63a705000000b004b484eb665bsi3802622pgf.16.2023.02.01.07.01.38; Wed, 01 Feb 2023 07:01:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232361AbjBAO7G (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33564 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230094AbjBAO7D (ORCPT ); Wed, 1 Feb 2023 09:59:03 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CE1B965EE9 for ; Wed, 1 Feb 2023 06:59:02 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rk-0A; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w1k-10; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hWa-G8; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 14/23] net: phy: at803x: add PHY_SMART_EEE flag to AR8035 Date: Wed, 1 Feb 2023 15:58:36 +0100 Message-Id: <20230201145845.2312060-15-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641321947851742?= X-GMAIL-MSGID: =?utf-8?q?1756641321947851742?= AR8035 is one of the PHYs with SmartEEE functionality. This flag will be used by one of next patches on the i.MX FEC driver. Signed-off-by: Oleksij Rempel --- drivers/net/phy/at803x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index 5ab43eb63581..94dbec0a992c 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -2147,7 +2147,7 @@ static struct phy_driver at803x_driver[] = { /* Qualcomm Atheros AR8035 */ PHY_ID_MATCH_EXACT(ATH8035_PHY_ID), .name = "Qualcomm Atheros AR8035", - .flags = PHY_POLL_CABLE_TEST, + .flags = PHY_POLL_CABLE_TEST | PHY_SMART_EEE, .probe = at803x_probe, .remove = at803x_remove, .config_aneg = at803x_config_aneg, From patchwork Wed Feb 1 14:58:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51377 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325636wrn; Wed, 1 Feb 2023 07:01:47 -0800 (PST) X-Google-Smtp-Source: AK7set8FguVCbWXbNkZbOXhUW4oJZ77MkeNOAhcgrwWTI0n7g/arn1GTv9PVjy6oZBwI6WAQjC9o X-Received: by 2002:aa7:9d92:0:b0:592:3dbd:7be8 with SMTP id f18-20020aa79d92000000b005923dbd7be8mr13655432pfq.31.1675263707541; Wed, 01 Feb 2023 07:01:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263707; cv=none; d=google.com; s=arc-20160816; b=enkoXLldt5HXeXbskdsWPRp6+Kp0K7V6trDd1WH5pT6tzGWYgC0q/D0GISAKZiqMX9 nuNimx/c9iHR9ywYOgmdqJtSYS5o64WT5eT6/rRh0WWwTgHYhms6IOA0W3pGmE9xhHHv pZdVqVEnA3lLH9WKYttRkComkJurWpLvZ1OsJrMjSCo/xtH3v7RUoN6G6cr6RYRwPWku /uMqDCs4bQl3D4XlrMJezGUHH6W2cHXk1/wvPbuDVflDZZeiP8lqGD8A9RVs4jtDRf3O Uibjj6CoJXfQ7D2Mm+gYbuxs+ySsMzGym4wtPtJYUSCjJyTnkZPjO0V9xSdIMYhkvB7h w0Jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=n5L+GZA7klPyM3wr5rqjbnE0tuFHl3lywNvlXSqOdKM=; b=lTF/7J+iEFhYMeiMWvOzmojiYZPwxnCQQ4tcirR7hcx1A6uzT4HFRoS+4rvinAo0Xq Dh70YgaeTNVzecczDaJLKzt2ZT1CeA85kxhyqCcncIQVKRI8/ltnB4O4mtEi5lbet180 gvjoFhJpXRSfx7szY8OGWaaFaDdPb+1qw0Mfxlixc25yCoBDz5cVc0vND5mQIAuwTZ4F md8F2eYqise83S3YfsupEU4I008YAuiqGPB9NujBqq2IpccpUaX3tUEDLBne5Psn/4Xy w23YPTJwVl2k2gKLM0q2h1amV9RBFLYpL6lxn95OFOAcqlBVPBIqS1emiOEiqksTpJEq YoLQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i66-20020a628745000000b00593d7e0f415si8095732pfe.257.2023.02.01.07.01.31; Wed, 01 Feb 2023 07:01:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232879AbjBAO74 (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33652 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232285AbjBAO7F (ORCPT ); Wed, 1 Feb 2023 09:59:05 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5E336ACA1 for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rl-0N; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w1q-5E; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hWj-Ge; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 15/23] net: phy: add phy_has_smarteee() helper Date: Wed, 1 Feb 2023 15:58:37 +0100 Message-Id: <20230201145845.2312060-16-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641317275785644?= X-GMAIL-MSGID: =?utf-8?q?1756641317275785644?= Add helper to identify PHYs with SmartEEE support. Signed-off-by: Oleksij Rempel --- include/linux/phy.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/linux/phy.h b/include/linux/phy.h index 6063b0c7a06e..c85187897115 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1407,6 +1407,15 @@ static inline bool phy_polling_mode(struct phy_device *phydev) return phydev->irq == PHY_POLL; } +/** + * phy_has_rxtstamp - Tests whether a PHY supports SmartEEE. + * @phydev: the phy_device struct + */ +static inline bool phy_has_smarteee(struct phy_device *phydev) +{ + return phydev && phydev->drv && !!(phydev->drv->flags & PHY_SMART_EEE); +} + /** * phy_has_hwtstamp - Tests whether a PHY time stamp configuration. * @phydev: the phy_device struct From patchwork Wed Feb 1 14:58:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51388 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326945wrn; Wed, 1 Feb 2023 07:03:29 -0800 (PST) X-Google-Smtp-Source: AK7set9Yuizu5Exr/lNM0sEjO0+DqI0lOuNzMSD6LxLFvat4t68wD6IacpKscpQLxNgxmbCyMzhd X-Received: by 2002:a17:903:120b:b0:196:89bc:7100 with SMTP id l11-20020a170903120b00b0019689bc7100mr3836281plh.16.1675263808893; Wed, 01 Feb 2023 07:03:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263808; cv=none; d=google.com; s=arc-20160816; b=fIlQ0weSIu0xLnZoDkm6wjRFI2emGfSE3TDSY+nSyo2+JMg+PNFmPqH8QTfHyVehjO Lp//3go8rFUKPc9toEm3yD/VxK/lOaCNmOWwQIeLC7GiUh2Hr9jfAtDo5T6uTGbtmmHN kJL5z4qKlCBt7DfuZOeUmeyO/Gi/UM9ApgNl6LyhXUzfC78M+dN3yRXe+vKIVbrC8e+p jv6JXEdG29pvI/tRoFLLsTLWVdbW5eJISgC9POcOzr/r+thpFEN/fVrp7sVixXeb/rL9 0Qm1z559eQvE4Ki3GK5DuDRY2KApPOi6ZIT1sctmu+HZYt5ZwYn+hmhoC20GwLiAkc37 SC/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=HzRjAxjvtLjE5NjLqHcDn3UniFJUZNLEAW/Ztzoe+x0=; b=WLtpyUahKjkf0EfzcV1lpOjwIEJIBrWbNxpvZGzoC4DQ7Njpfy/VxT5Rdrl/Xx1zrS NJn5BF58Q7sZXZk2L/iParOhzDzqnqiYL5qQvdVNsTY0gCf9uXefvRNX8QOl//Mc84vT Cj99nwpNDTVUMh7Bc2H3dCtOcbqR01zADhb3SSSiWkp5OCsYD5s8ARtdCcEqZzXMVTgG h9IsCH4n11oi3B4aRFWV+DOTklvEr4If4k+uVE+ZUcw+In28DWELQqQ/8q7IgB5xI988 eqIQL5zMzGvWnXCTReSR0qgjEjNCecIleU3TmLfUvulT3FSXMb9rCFq9Kt9EOlGjeD1S IJLg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l19-20020a170902e2d300b001947d6d10besi17562611plc.402.2023.02.01.07.03.16; Wed, 01 Feb 2023 07:03:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232422AbjBAPAF (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33634 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232320AbjBAO7F (ORCPT ); Wed, 1 Feb 2023 09:59:05 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2FA716ACAA for ; Wed, 1 Feb 2023 06:59:04 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rf-0D; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZX-001w1V-48; Wed, 01 Feb 2023 15:58:50 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hWs-H9; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 16/23] net: fec: add support for PHYs with SmartEEE support Date: Wed, 1 Feb 2023 15:58:38 +0100 Message-Id: <20230201145845.2312060-17-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641423508945952?= X-GMAIL-MSGID: =?utf-8?q?1756641423508945952?= Ethernet controller in i.MX6*/i.MX7* series do not provide EEE support. But this chips are used sometimes in combinations with SmartEEE capable PHYs. So, instead of aborting get/set_eee access on MACs without EEE support, ask PHY if it is able to do the EEE job by using SmartEEE. Signed-off-by: Oleksij Rempel --- drivers/net/ethernet/freescale/fec_main.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 5ff45b1a74a5..fb5c050f3fd3 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -3102,8 +3102,15 @@ fec_enet_get_eee(struct net_device *ndev, struct ethtool_eee *edata) struct fec_enet_private *fep = netdev_priv(ndev); struct ethtool_eee *p = &fep->eee; - if (!(fep->quirks & FEC_QUIRK_HAS_EEE)) - return -EOPNOTSUPP; + if (!(fep->quirks & FEC_QUIRK_HAS_EEE)) { + if (!netif_running(ndev)) + return -ENETDOWN; + + if (!phy_has_smarteee(ndev->phydev)) + return -EOPNOTSUPP; + + return phy_ethtool_get_eee(ndev->phydev, edata); + } if (!netif_running(ndev)) return -ENETDOWN; @@ -3123,8 +3130,15 @@ fec_enet_set_eee(struct net_device *ndev, struct ethtool_eee *edata) struct ethtool_eee *p = &fep->eee; int ret = 0; - if (!(fep->quirks & FEC_QUIRK_HAS_EEE)) - return -EOPNOTSUPP; + if (!(fep->quirks & FEC_QUIRK_HAS_EEE)) { + if (!netif_running(ndev)) + return -ENETDOWN; + + if (!phy_has_smarteee(ndev->phydev)) + return -EOPNOTSUPP; + + return phy_ethtool_set_eee(ndev->phydev, edata); + } if (!netif_running(ndev)) return -ENETDOWN; From patchwork Wed Feb 1 14:58:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51372 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325347wrn; Wed, 1 Feb 2023 07:01:27 -0800 (PST) X-Google-Smtp-Source: AK7set+G6oR99o3bPQlnOUbCK8uewkialTJuG1Qw01k4nJPmcbJz/KQqUm1Sb7DR7DzhGCaWh/4t X-Received: by 2002:a05:6a00:18a2:b0:590:7659:9c33 with SMTP id x34-20020a056a0018a200b0059076599c33mr3701035pfh.22.1675263687352; Wed, 01 Feb 2023 07:01:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263687; cv=none; d=google.com; s=arc-20160816; b=RAa0nF2EMCvb61a5odMUjGXxZ++XOZ2MKP+w/60+IuN37bQ3qiqxFZiACpZ0DnUIO3 M194ke764tXIm0dBeaxanLgf9Hf5BW+OGJ2KNfMtosHqPgSqz6mzXmdSiU1pmWVDwj1M xJN61XL1w5hNdreiDnmYu1iMifZbRJgpvdB1pt0gmJSMy8e/fpq9CUGiSYL8ZT6LiRRx rHVI9S17WW9FzYF4MBKzUgxSgfY/6hHTi75WTBQZuDKSJWd3bkcAmjGkftnrtJGN05wN Te6G2fT4nxQ2zM3pDIJwf50it6T3bQNlQK4vpJ+yXvxL3b2aO2qhO/PFBatbefSwCTHi hR2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=e+xS45Nv/EQ0Xnid6zqnyEFV0DeOuW7KsRH4bkejgDY=; b=KBoEaqYCI9SYNVdJWM5u+qQwUdApolf6AeW7vDvPhoZ4Y2B0L1gY2t4hO27ssshVsY pqtzlS0H0PRTidoT0x3snZQnwalxa/07D5cNz0t4fedzXoCcsWctp4pxwB2sLroRA16A +p8svMuUTo4CTAYJsPs+kEcxK+PLJnqOJk3cGqgY/l+QtIeK5TYuOXGLFPKAZcg87eq0 OVx6yCBcZhjNWGQ2Ha7R8OAbp5WVhHUck6M+j/WYEsCad95bUvRwA/srZgoxwJgJUuRL KfqQ/F2x9D8W6xTu6NnCZMJ5TvmItX+BiX9m9XOPfGQr8AwTfiY4QSoUqgrfHBeQE3Pl xeBg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a64-20020a624d43000000b0058d9b9c045asi19871670pfb.84.2023.02.01.07.01.15; Wed, 01 Feb 2023 07:01:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232678AbjBAO7a (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231903AbjBAO7F (ORCPT ); Wed, 1 Feb 2023 09:59:05 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 676CB6A71F for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rh-0E; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZX-001w1d-Fq; Wed, 01 Feb 2023 15:58:50 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hX1-Hg; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 17/23] e1000e: replace EEE ethtool helpers to linkmode variants Date: Wed, 1 Feb 2023 15:58:39 +0100 Message-Id: <20230201145845.2312060-18-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641296379049297?= X-GMAIL-MSGID: =?utf-8?q?1756641296379049297?= Replace EEE ethtool helpers with linkmode variants. This will reduce similar code snippets and prepare ethtool EEE interface to linkmode migration. Signed-off-by: Oleksij Rempel --- drivers/net/ethernet/intel/e1000e/ethtool.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c index 721f86fd5802..7285e93b34ce 100644 --- a/drivers/net/ethernet/intel/e1000e/ethtool.c +++ b/drivers/net/ethernet/intel/e1000e/ethtool.c @@ -2188,6 +2188,9 @@ static int e1000_get_rxnfc(struct net_device *netdev, static int e1000e_get_eee(struct net_device *netdev, struct ethtool_eee *edata) { struct e1000_adapter *adapter = netdev_priv(netdev); + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_able) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_adv) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_lp) = {}; struct e1000_hw *hw = &adapter->hw; u16 cap_addr, lpa_addr, pcs_stat_addr, phy_data; u32 ret_val; @@ -2222,16 +2225,19 @@ static int e1000e_get_eee(struct net_device *netdev, struct ethtool_eee *edata) ret_val = e1000_read_emi_reg_locked(hw, cap_addr, &phy_data); if (ret_val) goto release; - edata->supported = mmd_eee_cap_to_ethtool_sup_t(phy_data); + mii_eee_100_10000_adv_mod_linkmode_t(lm_able, phy_data); + ethtool_convert_link_mode_to_legacy_u32(&edata->supported, lm_able); /* EEE Advertised */ - edata->advertised = mmd_eee_adv_to_ethtool_adv_t(adapter->eee_advert); + mii_eee_100_10000_adv_mod_linkmode_t(lm_adv, adapter->eee_advert); + ethtool_convert_link_mode_to_legacy_u32(&edata->advertised, lm_adv); /* EEE Link Partner Advertised */ ret_val = e1000_read_emi_reg_locked(hw, lpa_addr, &phy_data); if (ret_val) goto release; - edata->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(phy_data); + mii_eee_100_10000_adv_mod_linkmode_t(lm_lp, phy_data); + ethtool_convert_link_mode_to_legacy_u32(&edata->lp_advertised, lm_lp); /* EEE PCS Status */ ret_val = e1000_read_emi_reg_locked(hw, pcs_stat_addr, &phy_data); @@ -2264,6 +2270,7 @@ static int e1000e_get_eee(struct net_device *netdev, struct ethtool_eee *edata) static int e1000e_set_eee(struct net_device *netdev, struct ethtool_eee *edata) { struct e1000_adapter *adapter = netdev_priv(netdev); + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; struct e1000_hw *hw = &adapter->hw; struct ethtool_eee eee_curr; s32 ret_val; @@ -2287,7 +2294,8 @@ static int e1000e_set_eee(struct net_device *netdev, struct ethtool_eee *edata) return -EINVAL; } - adapter->eee_advert = ethtool_adv_to_mmd_eee_adv_t(edata->advertised); + adv[0] = edata->advertised; + adapter->eee_advert = linkmode_adv_to_mii_eee_100_10000_adv_t(adv); hw->dev_spec.ich8lan.eee_disable = !edata->eee_enabled; From patchwork Wed Feb 1 14:58:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51371 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325233wrn; Wed, 1 Feb 2023 07:01:19 -0800 (PST) X-Google-Smtp-Source: AK7set+qcMb8sHalDAPN3PnU9sH+AKQ4bv/UraEOLOTT1N6T9mZbDh0ovfG8CxNGGKaixN9HL4ji X-Received: by 2002:a05:6a00:1991:b0:592:d9e4:1b83 with SMTP id d17-20020a056a00199100b00592d9e41b83mr2948507pfl.18.1675263679577; Wed, 01 Feb 2023 07:01:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263679; cv=none; d=google.com; s=arc-20160816; b=sBVnY03ETNlj0jgvYshZcl+QnqnTdxtU7mCWd95JXo5S7B+2hwEDqoxZb61yll7LGX y9BVPPwLEv7TlQwFESMs9nLycpy5owar3gN6NALHoTxaY+1eAVnO6gtoKyxxPaACK0GA jAK9H2U7TW+xTCEdwPElXRIEYR9RRpAUpLJ9Bk60yvJEvU0w0d/4r2cQNNHjBYGv3uzt HJwUbw4Az8R/y0eR/KuyFiw7ENi3PqyzD+Wua4syQIsPvUuxDmVhsC+fC4HQ7k2+7sBE 46w1K88KqeHKJBy++u9C94sV6Ai5JeCBR6lww8FM6cblm/t0k0BpqxZyor//gXG/vnhl WpJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=V2hxIMzhLsUmCmqE9/06HTmsX+T8p7i2YwQfnrZczag=; b=mmS3sq5HQ9nAzBQ8sytywPalPz2eifEZa2r/cqxjjm1NVaZmiXNUVW5iTpEsNCzjZ2 umfLnuNfAUHhRj6fXSgbBJMSxWxQhZYyw9XvRnHlBycktGsBMQ0EKzFlVl+Qlyuyxd5a m4At19ZVu2JJaghdRKTTiQGv23JpRrIIFvSIWGxDFzib3HudouFMEKeCOU5uN8I7GJ4q A6Et6TFCvzWiiC4lpLomOTrL2w5ZHG6O8OehxRZMvSL4PgADGuGwn2+LaoLz/rx/A/He 3G2qRI9iCsTzHpppcF+DDhT4nTkTjWIjsYb0JfSRaoow25mYvqR9kDtJaVab9CRGPKs+ CweA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o191-20020a62cdc8000000b00587df49bfa6si20717672pfg.75.2023.02.01.07.01.07; Wed, 01 Feb 2023 07:01:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232660AbjBAO70 (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231893AbjBAO7E (ORCPT ); Wed, 1 Feb 2023 09:59:04 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 682B96A73F for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rj-0F; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w1l-12; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hXA-ID; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 18/23] igb: replace EEE ethtool helpers to linkmode variants Date: Wed, 1 Feb 2023 15:58:40 +0100 Message-Id: <20230201145845.2312060-19-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641288247393186?= X-GMAIL-MSGID: =?utf-8?q?1756641288247393186?= Replace EEE ethtool helpers with linkmode variants. This will reduce similar code snippets and prepare ethtool EEE interface to linkmode migration. Signed-off-by: Oleksij Rempel --- drivers/net/ethernet/intel/igb/igb_ethtool.c | 23 +++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c index 7d60da1b7bf4..f7a633f0d6a6 100644 --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -3026,6 +3026,8 @@ static int igb_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd) static int igb_get_eee(struct net_device *netdev, struct ethtool_eee *edata) { struct igb_adapter *adapter = netdev_priv(netdev); + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lp) = {}; struct e1000_hw *hw = &adapter->hw; u32 ret_val; u16 phy_data; @@ -3036,9 +3038,12 @@ static int igb_get_eee(struct net_device *netdev, struct ethtool_eee *edata) edata->supported = (SUPPORTED_1000baseT_Full | SUPPORTED_100baseT_Full); - if (!hw->dev_spec._82575.eee_disable) - edata->advertised = - mmd_eee_adv_to_ethtool_adv_t(adapter->eee_advert); + + if (!hw->dev_spec._82575.eee_disable) { + mii_eee_100_10000_adv_mod_linkmode_t(adv, adapter->eee_advert); + ethtool_convert_link_mode_to_legacy_u32(&edata->advertised, + adv); + } /* The IPCNFG and EEER registers are not supported on I354. */ if (hw->mac.type == e1000_i354) { @@ -3064,7 +3069,9 @@ static int igb_get_eee(struct net_device *netdev, struct ethtool_eee *edata) if (ret_val) return -ENODATA; - edata->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(phy_data); + mii_eee_100_10000_adv_mod_linkmode_t(lp, phy_data); + ethtool_convert_link_mode_to_legacy_u32(&edata->lp_advertised, + lp); break; case e1000_i354: case e1000_i210: @@ -3075,7 +3082,9 @@ static int igb_get_eee(struct net_device *netdev, struct ethtool_eee *edata) if (ret_val) return -ENODATA; - edata->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(phy_data); + mii_eee_100_10000_adv_mod_linkmode_t(lp, phy_data); + ethtool_convert_link_mode_to_legacy_u32(&edata->lp_advertised, + lp); break; default: @@ -3105,6 +3114,7 @@ static int igb_set_eee(struct net_device *netdev, struct ethtool_eee *edata) { struct igb_adapter *adapter = netdev_priv(netdev); + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; struct e1000_hw *hw = &adapter->hw; struct ethtool_eee eee_curr; bool adv1g_eee = true, adv100m_eee = true; @@ -3149,7 +3159,8 @@ static int igb_set_eee(struct net_device *netdev, return -EINVAL; } - adapter->eee_advert = ethtool_adv_to_mmd_eee_adv_t(edata->advertised); + adv[0] = edata->advertised; + adapter->eee_advert = linkmode_adv_to_mii_eee_100_10000_adv_t(adv); if (hw->dev_spec._82575.eee_disable != !edata->eee_enabled) { hw->dev_spec._82575.eee_disable = !edata->eee_enabled; adapter->flags |= IGB_FLAG_EEE; From patchwork Wed Feb 1 14:58:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51385 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326579wrn; Wed, 1 Feb 2023 07:02:59 -0800 (PST) X-Google-Smtp-Source: AK7set/Qv4Z5rgjBg2L2SSmnd+egmdlfxhjj7JgjOmZm09/iSlHlCSmyaoevyIyNnl8NUUyK2Hsw X-Received: by 2002:a05:6a00:13a3:b0:577:d10d:6eab with SMTP id t35-20020a056a0013a300b00577d10d6eabmr3548246pfg.21.1675263778744; Wed, 01 Feb 2023 07:02:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263778; cv=none; d=google.com; s=arc-20160816; b=smCpA0ilu2Cac54dzwLOrKYV9hA5RAWYvhmQylYUtPaqK18cmlGj4Q/1fdH/+xo/Pb nwsozUYQVzDp5zzSxe948QMA4XzLcfrjAtpVQtRMyim4SCx682X5FhERM3uPrmv/ZW5A BABrxs924Q6RZsaE+kmKQDJofmc28eUICWuVQ3inGkgRoloRjNs0jujU1y0JpWvs80rZ dwxfoonGKzV0UeMywGjmsRhu89DA5ISfLD4SdPRFKlk5BxRutzcEDYRNZB4coSB1H1Du 8mHEYkvK1ST0pEuzgQ3vV1+kwq8wOU9RmZSnLrGTQ5bcXrbelzzKchkuAFsptdN0fsWI Nqnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=0AbkcqJ+qsakEFYNZe4u8RjC82MjxBmhxcBuW3J75Jg=; b=cere9clNtYb9yxT6Jh/oFkUVF3nGS4XateH8oqYN8oap+UqeYsE/sPzM+uoRPLCyi5 aVLIujgAQD2jn6iCxYx7vpvV3Qt9RYtdcgGFinQI3ItsMNLIwME5zX02NxRqN9fzvYiC AZLByuNHp7eCMMOo2TpeVD5hOYlW5NZcCdyCOlNO1vUM1RNRN7JcmjRlthzqPZnYTJ3m dhj5W3/3pPTnib6M2grLAwzo9VIHoOlAqgQJcfw22YJHkOzXxi3iExDxGTAbC+MQ+W4A gvDfa/8142AqzEAAjbzSgUUYu2CUKfdkFhpG2ToDY9URhaXeLE/VFxGgYN+aOqqou82a QiYw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i123-20020a62c181000000b00593fac3e8a1si3988582pfg.247.2023.02.01.07.02.46; Wed, 01 Feb 2023 07:02:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232889AbjBAPAY (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232636AbjBAO7H (ORCPT ); Wed, 1 Feb 2023 09:59:07 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6E33B6ACBB for ; Wed, 1 Feb 2023 06:59:04 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rc-0G; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZW-001w1N-SO; Wed, 01 Feb 2023 15:58:49 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hXJ-Ik; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 19/23] igc: replace EEE ethtool helpers to linkmode variants Date: Wed, 1 Feb 2023 15:58:41 +0100 Message-Id: <20230201145845.2312060-20-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641391970444301?= X-GMAIL-MSGID: =?utf-8?q?1756641391970444301?= Replace EEE ethtool helpers with linkmode variants. This will reduce similar code snippets and prepare ethtool EEE interface to linkmode migration. Signed-off-by: Oleksij Rempel --- drivers/net/ethernet/intel/igc/igc_ethtool.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/igc/igc_ethtool.c b/drivers/net/ethernet/intel/igc/igc_ethtool.c index 5a26a7805ef8..b23e904fc347 100644 --- a/drivers/net/ethernet/intel/igc/igc_ethtool.c +++ b/drivers/net/ethernet/intel/igc/igc_ethtool.c @@ -1582,12 +1582,14 @@ static int igc_ethtool_get_eee(struct net_device *netdev, struct ethtool_eee *edata) { struct igc_adapter *adapter = netdev_priv(netdev); + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; struct igc_hw *hw = &adapter->hw; u32 eeer; - if (hw->dev_spec._base.eee_enable) - edata->advertised = - mmd_eee_adv_to_ethtool_adv_t(adapter->eee_advert); + if (hw->dev_spec._base.eee_enable) { + mii_eee_100_10000_adv_mod_linkmode_t(adv, adapter->eee_advert); + ethtool_convert_link_mode_to_legacy_u32(&edata->advertised, adv); + } *edata = adapter->eee; edata->supported = SUPPORTED_Autoneg; @@ -1623,6 +1625,7 @@ static int igc_ethtool_set_eee(struct net_device *netdev, struct ethtool_eee *edata) { struct igc_adapter *adapter = netdev_priv(netdev); + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; struct igc_hw *hw = &adapter->hw; struct ethtool_eee eee_curr; s32 ret_val; @@ -1655,7 +1658,8 @@ static int igc_ethtool_set_eee(struct net_device *netdev, return -EINVAL; } - adapter->eee_advert = ethtool_adv_to_mmd_eee_adv_t(edata->advertised); + adv[0] = edata->advertised; + adapter->eee_advert = linkmode_adv_to_mii_eee_100_10000_adv_t(adv); if (hw->dev_spec._base.eee_enable != edata->eee_enabled) { hw->dev_spec._base.eee_enable = edata->eee_enabled; adapter->flags |= IGC_FLAG_EEE; From patchwork Wed Feb 1 14:58:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51378 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325647wrn; Wed, 1 Feb 2023 07:01:49 -0800 (PST) X-Google-Smtp-Source: AK7set9r7SHAz0hcuktNotmaFDPPCF0t4YqaK+v1miOxcDIamAbFaH7JGPzrwvnxgT3d5aPOC9n/ X-Received: by 2002:a17:903:22c8:b0:196:845f:e221 with SMTP id y8-20020a17090322c800b00196845fe221mr3688044plg.15.1675263709009; Wed, 01 Feb 2023 07:01:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263708; cv=none; d=google.com; s=arc-20160816; b=f9e4rY/Dn0asewrfOc0zF/a7RUWNOVlB+uatl0FahP9vmLDFIyDVGWYURPgPvYq82A IOaf8tfctiP4DWGpQfI9oBCe5eaPszXTQ68IQAN2LTsmiL1JF/AYl3KJqgvo6WOGIida 3TwtFa7XM+ODt2MGy60jd+hOVWY5oGBGK5+onKTrlr4SyOP5kLpCQisdCLPKZDbnsPci T0ftb6FUECgKlkPNMX80G+EyKZqhpu34xtPSbZ0dO/kRAlsKzP+jL9N79r6QN9DaALqm m2ZjFqwpZCdZ9h+0xiBzwojcl1Ux+R6MWmYk58vRcdvDLHo44CjqOPPQKI8ZAI2wa6w1 Gw/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=PJ+yDXKAxIZcKHoVZCKRdGFksDUSee81vRrcxRULg5s=; b=FbfVfbhIp9FvVygH1uc7c7NX9E7TDR03XEUW3U26kE9mxsA97N/Vea73x/EShKK9BF 2cydcYBoGQxqp0xmhPhgiZsKzEwgZdRx2tfGUexRQhmjtaM1PtqpaUBHkVVGGZxNsnVT vN9R7tEVKWKe2rdL5dqG2G1+o5TrxKpuDJZFBsB/q/wd0MwzNgeHaN1Koj956pH0BCql ZeOyWsTNdzwTJqkWnBq5vZhHNbqpPBosmbLFMDH0/coskYKQRsnELiE/SeHTnUKzjE9P KqI+qI73b78C6u8H188wFVoYkgaHBw04V03eCQUVzcjXxn0EvsMFuYT/TRmTAmENB7Fd TKmg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l19-20020a170902f69300b0019481337656si22117566plg.0.2023.02.01.07.01.33; Wed, 01 Feb 2023 07:01:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232736AbjBAO7L (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230046AbjBAO7D (ORCPT ); Wed, 1 Feb 2023 09:59:03 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D128769B1B for ; Wed, 1 Feb 2023 06:59:02 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002ro-6K; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w1z-CZ; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hXS-JG; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 20/23] tg3: replace EEE ethtool helpers to linkmode variants Date: Wed, 1 Feb 2023 15:58:42 +0100 Message-Id: <20230201145845.2312060-21-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641318791443963?= X-GMAIL-MSGID: =?utf-8?q?1756641318791443963?= Replace EEE ethtool helpers with linkmode variants. This will reduce similar code snippets and prepare ethtool EEE interface to linkmode migration. Signed-off-by: Oleksij Rempel --- drivers/net/ethernet/broadcom/tg3.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c index 58747292521d..a3764e360d23 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c @@ -2339,6 +2339,8 @@ static void tg3_phy_apply_otp(struct tg3 *tp) static void tg3_eee_pull_config(struct tg3 *tp, struct ethtool_eee *eee) { + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lp) = {}; u32 val; struct ethtool_eee *dest = &tp->eee; @@ -2361,13 +2363,16 @@ static void tg3_eee_pull_config(struct tg3 *tp, struct ethtool_eee *eee) /* Pull lp advertised settings */ if (tg3_phy_cl45_read(tp, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE, &val)) return; - dest->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lp, val); + ethtool_convert_link_mode_to_legacy_u32(&dest->lp_advertised, lp); + /* Pull advertised and eee_enabled settings */ if (tg3_phy_cl45_read(tp, MDIO_MMD_AN, MDIO_AN_EEE_ADV, &val)) return; dest->eee_enabled = !!val; - dest->advertised = mmd_eee_adv_to_ethtool_adv_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(adv, val); + ethtool_convert_link_mode_to_legacy_u32(&dest->advertised, adv); /* Pull tx_lpi_enabled */ val = tr32(TG3_CPMU_EEE_MODE); From patchwork Wed Feb 1 14:58:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51380 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325763wrn; Wed, 1 Feb 2023 07:01:58 -0800 (PST) X-Google-Smtp-Source: AK7set87LhTRyKIrRIoj7VFVPX6MeezMkuJAdhxzHlas8rfvVG4e11Jk59ocE+9crgskXT0HmPIn X-Received: by 2002:a05:6a20:3a87:b0:bd:3a3:98cb with SMTP id d7-20020a056a203a8700b000bd03a398cbmr2373565pzh.1.1675263717713; Wed, 01 Feb 2023 07:01:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263717; cv=none; d=google.com; s=arc-20160816; b=jYwe7B3rcqa2MqtIJBTJEHR7gDoXG4KC3b6uIHIqcnoIQuOp1BGN/P86DoUC3zSoXp 6ItwOuZj8lJBQlTR7hQ3zu5XHhtBgqy0qX9YM/E3nYTSSOo3YOEeBUufB7MoKKrOkt4m woc4J4H/c/lNvGziIE8iapclQu+kEbnvtn9YBFINZi7f8CqkMeR4D2CYALT+zjr0NCxd v9yDe0ZsWcLZuE+bCKZkEyDIuJqllHML/0iPmm4FSpHEiB2css1XiRFJXCB6geOo2hWy u4xW2VTcaTShkdQgRMW7sQbEciuEwExM+cmAwy0Hx5eo2dXBjNYJYshTTiFNnpMo16n5 DWKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=gAsP97CvowYa1cuFip/L5MMbEWV9vy9Axk2o33Lrrso=; b=Q1SXfXQy5BEcwXOd0orZKe7+M15BFysp9Y7A31liUDCQJSgtsL0X9duhIcz9mxQjlX crQ37xp4yMN5ni+58amo/jPZrrW+42QK4qHGZLyRla1wP4VcD3L3+GZHv0XIP5LcQGKh K6Y2Gdwzeoz+9MKYzAb9QlaBaYJTHzjWJh4U/KgWl0m0cmbyH7Mgbff2dEpu95b3mHYH p4yzZm9LK0ReG6HEs1bvRmLkO701Zrz+GqxfnaMswn+YxC5ujY+I3+qc7+X69NpKZYQK MU9yS8dkgNzRQMCoVGnHlDg5SfqqzDA+BOaaTacRp+Kg5TqUMaOeF6t9VEg+sXGOe1E1 1jkw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x22-20020a63b216000000b004bbfa29fb4asi18495754pge.563.2023.02.01.07.01.43; Wed, 01 Feb 2023 07:01:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232723AbjBAPAJ (ORCPT + 99 others); Wed, 1 Feb 2023 10:00:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33678 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232506AbjBAO7G (ORCPT ); Wed, 1 Feb 2023 09:59:06 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 63E9C69B1B for ; Wed, 1 Feb 2023 06:59:04 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rr-KZ; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w28-K2; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hXb-Jm; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 21/23] r8152: replace EEE ethtool helpers to linkmode variants Date: Wed, 1 Feb 2023 15:58:43 +0100 Message-Id: <20230201145845.2312060-22-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641328181091088?= X-GMAIL-MSGID: =?utf-8?q?1756641328181091088?= Replace EEE ethtool helpers with linkmode variants. This will reduce similar code snippets and prepare ethtool EEE interface to linkmode migration. Signed-off-by: Oleksij Rempel --- drivers/net/usb/r8152.c | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index decb5ba56a25..dbfde0aec003 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -8745,17 +8745,23 @@ static void rtl8152_get_strings(struct net_device *dev, u32 stringset, u8 *data) static int r8152_get_eee(struct r8152 *tp, struct ethtool_eee *eee) { - u32 lp, adv, supported = 0; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_able) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_adv) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_lp) = {}; + u32 lp, adv, supported; u16 val; val = r8152_mmd_read(tp, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); - supported = mmd_eee_cap_to_ethtool_sup_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_able, val); + ethtool_convert_link_mode_to_legacy_u32(&supported, lm_able); val = r8152_mmd_read(tp, MDIO_MMD_AN, MDIO_AN_EEE_ADV); - adv = mmd_eee_adv_to_ethtool_adv_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_adv, val); + ethtool_convert_link_mode_to_legacy_u32(&adv, lm_adv); val = r8152_mmd_read(tp, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE); - lp = mmd_eee_adv_to_ethtool_adv_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_lp, val); + ethtool_convert_link_mode_to_legacy_u32(&lp, lm_lp); eee->eee_enabled = tp->eee_en; eee->eee_active = !!(supported & adv & lp); @@ -8768,7 +8774,11 @@ static int r8152_get_eee(struct r8152 *tp, struct ethtool_eee *eee) static int r8152_set_eee(struct r8152 *tp, struct ethtool_eee *eee) { - u16 val = ethtool_adv_to_mmd_eee_adv_t(eee->advertised); + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; + u16 val; + + adv[0] = eee->advertised; + val = linkmode_adv_to_mii_eee_100_10000_adv_t(adv); tp->eee_en = eee->eee_enabled; tp->eee_adv = val; @@ -8780,17 +8790,23 @@ static int r8152_set_eee(struct r8152 *tp, struct ethtool_eee *eee) static int r8153_get_eee(struct r8152 *tp, struct ethtool_eee *eee) { - u32 lp, adv, supported = 0; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_able) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_adv) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_lp) = {}; + u32 lp, adv, supported; u16 val; val = ocp_reg_read(tp, OCP_EEE_ABLE); - supported = mmd_eee_cap_to_ethtool_sup_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_able, val); + ethtool_convert_link_mode_to_legacy_u32(&supported, lm_able); val = ocp_reg_read(tp, OCP_EEE_ADV); - adv = mmd_eee_adv_to_ethtool_adv_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_adv, val); + ethtool_convert_link_mode_to_legacy_u32(&adv, lm_adv); val = ocp_reg_read(tp, OCP_EEE_LPABLE); - lp = mmd_eee_adv_to_ethtool_adv_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_lp, val); + ethtool_convert_link_mode_to_legacy_u32(&lp, lm_lp); eee->eee_enabled = tp->eee_en; eee->eee_active = !!(supported & adv & lp); From patchwork Wed Feb 1 14:58:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51374 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325427wrn; Wed, 1 Feb 2023 07:01:32 -0800 (PST) X-Google-Smtp-Source: AK7set8jV/hKVACxII7G5Unt+VLmrKmKfFY0ebsaSZicUV3fTuLN/TwFu2mO3fJgaXAF8sU05xoH X-Received: by 2002:a17:90b:3a83:b0:22c:ad11:af3d with SMTP id om3-20020a17090b3a8300b0022cad11af3dmr2613218pjb.4.1675263691860; Wed, 01 Feb 2023 07:01:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263691; cv=none; d=google.com; s=arc-20160816; b=qrlzKx9aKpJEKXsHp30CzUAPwqw6J6wZP7h3yYNvqUpY+LU1zm5BwBKKK8jMN1Eo6e GoCzgAEIcRD8BWciz2MgpbeVwhh3xVG4ThaEsECg+LfdV+3Qzm0OEpuwaKfb9EVQCnE+ SmwPq/6nEzB5f2SMxtdegRotFr06UKjNkR15ExJ+g6HCuZea3rnifHi/L9VCVwKdLMDH 7vAc93E7Fq4YmYWtTU3EAPf02VmxLTmrVCM8LW2GbcdDs9XMrHBng3KKgGfOxuuq2Uce omLW3i0a673JOCaBryPtc5C3F1Lrk2/5qjXSDcmSn3yUE8LV7+6jti2GqYNNEOJARzfi fjqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=+AAhQmJUSkgj+SQGAnnuXyBNrJUBTlBZPHtG/OfCGiM=; b=YD4mVgi1PdJ6qN1sR3wDonj3Zm8xufxLpZ1rAO33Sx7sV3K7WANu6jBuekSTRAh/AU e4aU2WUTvX1Xt4yMf0xzqN5uRQWQUybNRSZrcpDu/nw7S8+31CJV+jeEApAGvRrVzR72 l6bOpgXdlXqT9438aQfeYq1QX+/wzY5OmpXLK3eJTipCzowbyh45yodzGsDNE4cCbW+P MXYOvwRlq7/8akdAD7AOdv3bXNqoNB08mjVyCX3/vN0/BDVE68AqcBHXwIKnAJJuZidX nXgR4Vrz/UHx5axJbRzR2ucWk4L1SaEd3Upw16qilc2gLvEIPGxLOmCHtnyNCDcuI87N nbAg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lb2-20020a17090b4a4200b0022bfa408e6fsi2416173pjb.44.2023.02.01.07.01.17; Wed, 01 Feb 2023 07:01:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232768AbjBAO7S (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230286AbjBAO7E (ORCPT ); Wed, 1 Feb 2023 09:59:04 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2846969B34 for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002rp-6Q; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w21-Du; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hXj-KI; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 22/23] net: usb: ax88179_178a: replace EEE ethtool helpers to linkmode variants Date: Wed, 1 Feb 2023 15:58:44 +0100 Message-Id: <20230201145845.2312060-23-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641301152356907?= X-GMAIL-MSGID: =?utf-8?q?1756641301152356907?= Replace EEE ethtool helpers with linkmode variants. This will reduce similar code snippets and prepare ethtool EEE interface to linkmode migration. Signed-off-by: Oleksij Rempel --- drivers/net/usb/ax88179_178a.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c index aff39bf3161d..7e8b5f174184 100644 --- a/drivers/net/usb/ax88179_178a.c +++ b/drivers/net/usb/ax88179_178a.c @@ -652,6 +652,9 @@ static int ax88179_set_link_ksettings(struct net_device *net, static int ax88179_ethtool_get_eee(struct usbnet *dev, struct ethtool_eee *data) { + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_able) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_adv) = {}; + __ETHTOOL_DECLARE_LINK_MODE_MASK(lm_lp) = {}; int val; /* Get Supported EEE */ @@ -659,21 +662,24 @@ ax88179_ethtool_get_eee(struct usbnet *dev, struct ethtool_eee *data) MDIO_MMD_PCS); if (val < 0) return val; - data->supported = mmd_eee_cap_to_ethtool_sup_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_able, val); + ethtool_convert_link_mode_to_legacy_u32(&data->supported, lm_able); /* Get advertisement EEE */ val = ax88179_phy_read_mmd_indirect(dev, MDIO_AN_EEE_ADV, MDIO_MMD_AN); if (val < 0) return val; - data->advertised = mmd_eee_adv_to_ethtool_adv_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_adv, val); + ethtool_convert_link_mode_to_legacy_u32(&data->advertised, lm_adv); /* Get LP advertisement EEE */ val = ax88179_phy_read_mmd_indirect(dev, MDIO_AN_EEE_LPABLE, MDIO_MMD_AN); if (val < 0) return val; - data->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(val); + mii_eee_100_10000_adv_mod_linkmode_t(lm_lp, val); + ethtool_convert_link_mode_to_legacy_u32(&data->lp_advertised, lm_lp); return 0; } @@ -681,7 +687,11 @@ ax88179_ethtool_get_eee(struct usbnet *dev, struct ethtool_eee *data) static int ax88179_ethtool_set_eee(struct usbnet *dev, struct ethtool_eee *data) { - u16 tmp16 = ethtool_adv_to_mmd_eee_adv_t(data->advertised); + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; + u16 tmp16; + + adv[0] = data->advertised; + tmp16 = linkmode_adv_to_mii_eee_100_10000_adv_t(adv); return ax88179_phy_write_mmd_indirect(dev, MDIO_AN_EEE_ADV, MDIO_MMD_AN, tmp16); @@ -706,7 +716,7 @@ static int ax88179_chk_eee(struct usbnet *dev) return false; } - cap = mmd_eee_cap_to_ethtool_sup_t(eee_cap); + cap = eee_cap & (MDIO_EEE_100TX | MDIO_EEE_1000T); if (!cap) { priv->eee_active = 0; return false; @@ -729,8 +739,8 @@ static int ax88179_chk_eee(struct usbnet *dev) return false; } - adv = mmd_eee_adv_to_ethtool_adv_t(eee_adv); - lp = mmd_eee_adv_to_ethtool_adv_t(eee_lp); + adv = eee_adv & (MDIO_EEE_100TX | MDIO_EEE_1000T); + lp = eee_lp & (MDIO_EEE_100TX | MDIO_EEE_1000T); supported = (ecmd.speed == SPEED_1000) ? SUPPORTED_1000baseT_Full : SUPPORTED_100baseT_Full; From patchwork Wed Feb 1 14:58:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 51381 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326000wrn; Wed, 1 Feb 2023 07:02:15 -0800 (PST) X-Google-Smtp-Source: AK7set/REsHi/eg86loiLwh4eHyvBlJU2/ZUz0b5UPx411WUgmpxX2k2h8DwANriNubTIuW6fYbj X-Received: by 2002:aa7:972b:0:b0:592:d313:b26e with SMTP id k11-20020aa7972b000000b00592d313b26emr2664459pfg.17.1675263735155; Wed, 01 Feb 2023 07:02:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675263735; cv=none; d=google.com; s=arc-20160816; b=zz9QJGJiwlCXQ+eLoSakcQ8oebJXldDGc3HbPhOrjd2FiZJoX5Kl47Px146jvwqSVZ 9y0YmbJCrCn85ggqAApOp5O2D/FxxgLJOowmQ/iSRuTj0ngaByKOJ3jTu9obf+tQAXsk cCBOF8dFLJzX446mNdJh3W60XRhq7tZ22a/EcnXKJXFT+s79bBx+G0qwHsmcCxk5w8Yy VB2nE9e+3IsbUk6MQAjxwRpwOGHw+4PWAJyma7TKzid6WoIaouXs3CglB5yTZpB8aNTD R6pcgNvdtywWHMSHCgUVhN8YKXFvO3iaaMUHtZ+G7Fn3h3KnUpP2X2Py1JBIICeDnNdX nj6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=3mZvlKE8YqHuC2dqrXvTHA8AkLE0WZHeB/tihTncq1Q=; b=0iufb3LrXjknd63y93LHhgAbJOLMtXjcR1i45Zec3zE41bz5zw8njqudiyzpMteNEv h13OMDoksEb2CSmwwnTThIbnOBVI2Hpcc1iRap7kdctLkx/UkNeIwHrE1gA6hBUfQpUG Psa6xmkyX/jyK2R9FmfRX+KEUDu5LsY3XT6sMgQ6T4K9PsUZJzN7xKproDigQ8/vKZ62 ilyCXi3SUVEPAWgJFG3Dc6Q4AT+e2tiXym0cHUqZxsMBgrmyrjrqZ06iv7U9yIbNXd/3 QhtQOotRMqiXH+DkXZ2hDhzcw8RsSbyGcX7wFjlG+AP55miIhgg/aNhT/pPSmanY4kqW FS+w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i123-20020a62c181000000b00593fac3e8a1si3988582pfg.247.2023.02.01.07.02.02; Wed, 01 Feb 2023 07:02:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232858AbjBAO7w (ORCPT + 99 others); Wed, 1 Feb 2023 09:59:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33654 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232200AbjBAO7F (ORCPT ); Wed, 1 Feb 2023 09:59:05 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5A0E6AC9C for ; Wed, 1 Feb 2023 06:59:03 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNEZY-0002s6-Sa; Wed, 01 Feb 2023 15:58:52 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNEZY-001w2B-Ng; Wed, 01 Feb 2023 15:58:51 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNEZT-009hXt-Ko; Wed, 01 Feb 2023 15:58:47 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com, intel-wired-lan@lists.osuosl.org Subject: [PATCH net-next v4 23/23] net: mdio: drop EEE ethtool helpers in favor to linkmode variants Date: Wed, 1 Feb 2023 15:58:45 +0100 Message-Id: <20230201145845.2312060-24-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230201145845.2312060-1-o.rempel@pengutronix.de> References: <20230201145845.2312060-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756641346397440266?= X-GMAIL-MSGID: =?utf-8?q?1756641346397440266?= IEEE 802.3 specification provides more EEE capable link modes as this helpers will be able to handle. So, remove them in favor of: mii_eee_100_10000_adv_mod_linkmode_t linkmode_adv_to_mii_eee_100_10000_adv_t Signed-off-by: Oleksij Rempel --- include/linux/mdio.h | 83 -------------------------------------------- 1 file changed, 83 deletions(-) diff --git a/include/linux/mdio.h b/include/linux/mdio.h index fcd5492e4993..492ec2de24ac 100644 --- a/include/linux/mdio.h +++ b/include/linux/mdio.h @@ -205,89 +205,6 @@ mdio45_ethtool_ksettings_get(const struct mdio_if_info *mdio, extern int mdio_mii_ioctl(const struct mdio_if_info *mdio, struct mii_ioctl_data *mii_data, int cmd); -/** - * mmd_eee_cap_to_ethtool_sup_t - * @eee_cap: value of the MMD EEE Capability register - * - * A small helper function that translates MMD EEE Capability (3.20) bits - * to ethtool supported settings. - */ -static inline u32 mmd_eee_cap_to_ethtool_sup_t(u16 eee_cap) -{ - u32 supported = 0; - - if (eee_cap & MDIO_EEE_100TX) - supported |= SUPPORTED_100baseT_Full; - if (eee_cap & MDIO_EEE_1000T) - supported |= SUPPORTED_1000baseT_Full; - if (eee_cap & MDIO_EEE_10GT) - supported |= SUPPORTED_10000baseT_Full; - if (eee_cap & MDIO_EEE_1000KX) - supported |= SUPPORTED_1000baseKX_Full; - if (eee_cap & MDIO_EEE_10GKX4) - supported |= SUPPORTED_10000baseKX4_Full; - if (eee_cap & MDIO_EEE_10GKR) - supported |= SUPPORTED_10000baseKR_Full; - - return supported; -} - -/** - * mmd_eee_adv_to_ethtool_adv_t - * @eee_adv: value of the MMD EEE Advertisement/Link Partner Ability registers - * - * A small helper function that translates the MMD EEE Advertisment (7.60) - * and MMD EEE Link Partner Ability (7.61) bits to ethtool advertisement - * settings. - */ -static inline u32 mmd_eee_adv_to_ethtool_adv_t(u16 eee_adv) -{ - u32 adv = 0; - - if (eee_adv & MDIO_EEE_100TX) - adv |= ADVERTISED_100baseT_Full; - if (eee_adv & MDIO_EEE_1000T) - adv |= ADVERTISED_1000baseT_Full; - if (eee_adv & MDIO_EEE_10GT) - adv |= ADVERTISED_10000baseT_Full; - if (eee_adv & MDIO_EEE_1000KX) - adv |= ADVERTISED_1000baseKX_Full; - if (eee_adv & MDIO_EEE_10GKX4) - adv |= ADVERTISED_10000baseKX4_Full; - if (eee_adv & MDIO_EEE_10GKR) - adv |= ADVERTISED_10000baseKR_Full; - - return adv; -} - -/** - * ethtool_adv_to_mmd_eee_adv_t - * @adv: the ethtool advertisement settings - * - * A small helper function that translates ethtool advertisement settings - * to EEE advertisements for the MMD EEE Advertisement (7.60) and - * MMD EEE Link Partner Ability (7.61) registers. - */ -static inline u16 ethtool_adv_to_mmd_eee_adv_t(u32 adv) -{ - u16 reg = 0; - - if (adv & ADVERTISED_100baseT_Full) - reg |= MDIO_EEE_100TX; - if (adv & ADVERTISED_1000baseT_Full) - reg |= MDIO_EEE_1000T; - if (adv & ADVERTISED_10000baseT_Full) - reg |= MDIO_EEE_10GT; - if (adv & ADVERTISED_1000baseKX_Full) - reg |= MDIO_EEE_1000KX; - if (adv & ADVERTISED_10000baseKX4_Full) - reg |= MDIO_EEE_10GKX4; - if (adv & ADVERTISED_10000baseKR_Full) - reg |= MDIO_EEE_10GKR; - - return reg; -} - /** * linkmode_adv_to_mii_10gbt_adv_t * @advertising: the linkmode advertisement settings