From patchwork Mon Feb 6 13:50: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: 53262 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245763wrn; Mon, 6 Feb 2023 05:53:26 -0800 (PST) X-Google-Smtp-Source: AK7set+3yqdoRrh1WsrXjwwm4aI0ksjxJhefu1BQyBM2E3MrvH5ZgB9f7SY4c/y7+XNr7J6wdneY X-Received: by 2002:a05:6402:298c:b0:4a8:452:55a4 with SMTP id eq12-20020a056402298c00b004a8045255a4mr16239909edb.17.1675691606102; Mon, 06 Feb 2023 05:53:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691606; cv=none; d=google.com; s=arc-20160816; b=hYeuEXQBq5TW6llyEDSf+9m1q9SvIIoiyRnhz/qkK8M4PhYipqI62cAIHczWMgpFVI uX9Rb/Hv7kCzMg8K8yNvB3OTP8TTcn7KcKeTxmsfoRgZsz6fiUhahYvtwf+QYRqO0sJI n7I/1qP7txMX5zt6XmQnVnhDPVUq3gHED76bfQ65q0fsUD71XJmW+gyFxiO5fUnGu+UB jnpcbiRQDsdHduGdXZ15ro1IyrloFxgVKIlE79fXjFb9b1tUG8hIoiHarGH6QjlNJKLd YqHce9PKHptE0EoI4RGUYFH+OPtUE1fE1GCAObQuSs4flusJHn3R6jk7tjcFvgRqSePg kJJA== 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=RX9rhwo1XH6+N9rT5yXXZbF9QMuOWtVQv2u+O85UAKI=; b=xwiUeAhsJIrcyjReMzwALmzlTHDnmJnZnotju2Yj4j8Egv1IdHITkKjD65tbbC6cq1 x5oMK3bY0XemfJKDfZKb8/3rtTIgjGGZYx7olNDHHWZ22dit6Ra0G7EaW69/BBoDzrvB UeBlY+AJucoVtbRTEdGcbw5Copex+xHhL2GMTnvtPLYVo9eD5RAaQEtfgqRm4XMogIWP r2t4OrXqKs8+YGCp6ZwtOTvGZ0PxJFdKu+2TuqlDVHW/5f4n2b0rrAUqA1SyfB2fSnv9 i/EphsN5aUMCPcYnBocgp3jLL9Q0TwaJXwmOIfvvPdYb48K3Lb78TkrIrVHXVxCuV/7B r5YQ== 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 ed5-20020a056402294500b004917c8c661csi12062380edb.243.2023.02.06.05.53.02; Mon, 06 Feb 2023 05:53:26 -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 S230496AbjBFNw0 (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230491AbjBFNve (ORCPT ); Mon, 6 Feb 2023 08:51:34 -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 585DBF758 for ; Mon, 6 Feb 2023 05:51:16 -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 1pP1tZ-0007Jd-96; Mon, 06 Feb 2023 14:50: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 1pP1tX-0034ec-0G; Mon, 06 Feb 2023 14:50:56 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tT-00DaNi-UJ; Mon, 06 Feb 2023 14:50:51 +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 v5 01/23] net: dsa: microchip: enable EEE support Date: Mon, 6 Feb 2023 14:50:28 +0100 Message-Id: <20230206135050.3237952-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090001516742814?= X-GMAIL-MSGID: =?utf-8?q?1757090001516742814?= 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 Reviewed-by: Andrew Lunn --- drivers/net/dsa/microchip/ksz_common.c | 65 ++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 46becc0382d6..0a2d78253d17 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -2673,6 +2673,69 @@ 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 tests + * 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 +3193,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 Mon Feb 6 13:50: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: 53263 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245800wrn; Mon, 6 Feb 2023 05:53:32 -0800 (PST) X-Google-Smtp-Source: AK7set+uN7rLW8VKmhpZVQwvhRR+M/6ZP0bYHjpS6ELO8XBXYSO0e9+bA0RF6DYLeoKKNh+I/K1A X-Received: by 2002:a17:906:22d4:b0:883:b70b:c04e with SMTP id q20-20020a17090622d400b00883b70bc04emr19396689eja.60.1675691612044; Mon, 06 Feb 2023 05:53:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691612; cv=none; d=google.com; s=arc-20160816; b=aJIw3KIHSnBPBNu2iQqgT/PEWWcYku+yguG2cSnuVVAUaaCPPLyD4xw8iJZyjvD/Jx ZdBOHTKicZEu6D1UKjdamv5jKU+BV5NAmkkSrunNm1qcme0orBVA5K8FYbrwDBXviIrH wZ6IFJjX8a/HBTjR2FkYPSF4zkc/DiqLZTFZK96Fv4iXvSpz3GJU/4h5NsFLzhA56dOa csZmRayk53pzAgR7ly9mgEccvJ0LPnt/Fkjp8Yy4+qcOdVQcsUtfRNL0dQKUqeifWT8l 5IO0RJmIZ7ujx40fB2mboJmzlqjVDioZGjW3MdAMM5zBr2IFmPfnFX6dH6F3jwxZeiRE /iyA== 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=ZdEJyATAjV6cpDvEyz7ZUxAQ+56GRuHzO9RrMiYQjgo=; b=ynrPUF0NeNFaY68BrJ4VIL3uRhcgWQMBqa7TrrG9iCwypMmFbC2yOaTPxht0fnAbmZ N0QkiTuzciKvTHqMf7Kv4JOIA+nXF6fBebhbCYRFCiJRbqz4cI7xqThHiouBYYw22K9y gm6vRNh7zoPvubmeCHo1xUtrTDQnRr7fUMYCmF0f9N9XF4BZyYd8Eev1Mo6GtV1nx6AO dkCLp7RlbefII9crb2mq+94fHZu/YNFKiDrlKp57gxSDbUYw/ECFAedQ58nuwbElyL7B eXVbdRDnphcW7vZTQfeB4QCv0xzuJeKgMvbyIVXO67dYUOqAn9O/XKw9n1r3grimgraV vVew== 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 gc4-20020a1709072b0400b0089558be04d2si8375612ejc.899.2023.02.06.05.53.09; Mon, 06 Feb 2023 05:53:32 -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 S230510AbjBFNwe (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230511AbjBFNvf (ORCPT ); Mon, 6 Feb 2023 08:51:35 -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 2BEF110416 for ; Mon, 6 Feb 2023 05:51:17 -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 1pP1tX-0007E9-4d; Mon, 06 Feb 2023 14:50:55 +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 1pP1tU-0034dO-8c; Mon, 06 Feb 2023 14:50:53 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaNv-0W; Mon, 06 Feb 2023 14:50:52 +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 v5 02/23] net: phy: add genphy_c45_read_eee_abilities() function Date: Mon, 6 Feb 2023 14:50:29 +0100 Message-Id: <20230206135050.3237952-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090007705754750?= X-GMAIL-MSGID: =?utf-8?q?1757090007705754750?= 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 these registers, we should detect link mode abilities first and then based on these abilities doing EEE link modes detection. Results of EEE ability detection will be stored into new variable phydev->supported_eee. Signed-off-by: Oleksij Rempel Reviewed-by: Andrew Lunn --- drivers/net/phy/phy-c45.c | 70 ++++++++++++++++++++++++++++++++++++ drivers/net/phy/phy_device.c | 16 +++++++++ include/linux/mdio.h | 26 ++++++++++++++ include/linux/phy.h | 5 +++ 4 files changed, 117 insertions(+) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index 9f9565a4819d..3ae642d3ae14 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -661,6 +661,76 @@ int genphy_c45_read_mdix(struct phy_device *phydev) } EXPORT_SYMBOL_GPL(genphy_c45_read_mdix); +/** + * genphy_c45_read_eee_cap1 - read supported EEE link modes from register 3.20 + * @phydev: target phy_device struct + */ +static int genphy_c45_read_eee_cap1(struct phy_device *phydev) +{ + int val; + + /* 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; + + /* The 802.3 2018 standard says the top 2 bits are reserved and should + * read as 0. Also, it seems unlikely anybody will build a PHY which + * supports 100GBASE-R deep sleep all the way down to 100BASE-TX EEE. + * If MDIO_PCS_EEE_ABLE is 0xffff assume EEE is not supported. + */ + if (val == GENMASK(15, 0)) + return 0; + + mii_eee_cap1_mod_linkmode_t(phydev->supported_eee, val); + + /* Some buggy devices indicate EEE link modes in MDIO_PCS_EEE_ABLE + * which they don't support as indicated by BMSR, ESTATUS etc. + */ + linkmode_and(phydev->supported_eee, phydev->supported_eee, + phydev->supported); + + return 0; +} + +/** + * genphy_c45_read_eee_abilities - read supported EEE link modes + * @phydev: target phy_device struct + */ +int genphy_c45_read_eee_abilities(struct phy_device *phydev) +{ + int val; + + /* There is not indicator whether optional register + * "EEE control and capability 1" (3.20) is supported. Read it only + * on devices with appropriate linkmodes. + */ + if (linkmode_intersects(phydev->supported, PHY_EEE_CAP1_FEATURES)) { + val = genphy_c45_read_eee_cap1(phydev); + if (val) + return val; + } + + 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 a3917c7acbd3..66a4e62009bb 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_cap1_features_array[] = { + 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_cap1_features) __ro_after_init; +EXPORT_SYMBOL_GPL(phy_eee_cap1_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_cap1_features_array, + ARRAY_SIZE(phy_eee_cap1_features_array), + phy_eee_cap1_features); + } void phy_device_free(struct phy_device *phydev) diff --git a/include/linux/mdio.h b/include/linux/mdio.h index c0da30d63b1d..1549e73d9a56 100644 --- a/include/linux/mdio.h +++ b/include/linux/mdio.h @@ -402,6 +402,32 @@ static inline u32 linkmode_adv_to_mii_t1_adv_m_t(unsigned long *advertising) return result; } +/** + * mii_eee_cap1_mod_linkmode_t + * @adv: target the linkmode advertisement settings + * @val: register value + * + * A function that translates value of following registers to the linkmode: + * IEEE 802.3-2018 45.2.3.10 "EEE control and capability 1" register (3.20) + * IEEE 802.3-2018 45.2.7.13 "EEE advertisement 1" register (7.60) + * IEEE 802.3-2018 45.2.7.14 "EEE "link partner ability 1 register (7.61) + */ +static inline void mii_eee_cap1_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..fc4d630bb1da 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_cap1_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_CAP1_FEATURES ((unsigned long *)&phy_eee_cap1_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 Mon Feb 6 13:50: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: 53254 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245273wrn; Mon, 6 Feb 2023 05:52:27 -0800 (PST) X-Google-Smtp-Source: AK7set+9rsSUh8VC0BBUsWi+69uM341U1YY0ZSn8LIoZwNyLVjPJQJ/g3NF88kS63gxK6/8WcwqP X-Received: by 2002:a17:906:4713:b0:87b:d597:1fd5 with SMTP id y19-20020a170906471300b0087bd5971fd5mr23903656ejq.75.1675691547337; Mon, 06 Feb 2023 05:52:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691547; cv=none; d=google.com; s=arc-20160816; b=vunSTY8I+7tqZnXt1u+nY0PM5FRdhwD8tnRHnf1leDF7I4Ovt8hl8LJEqzoIoSq6Rp bkfpvSVPsCyTLVNKDf87plexu+F9nLxObl+DW2AO0QvwQwpBUZbo2bGiZOC0mb6ojnx3 93Z3XNhgByYyykqEh04Jn1BwQJJ7cCML/a5P8qIRJb+gRFfb1eIdEi7h3DEcJDcLk5Js /eB67mIEjNKCCuwmVlnCGL2wTR1bUGemicu1RR+z4DNptSiNNdXYi8fGipl5XIHWLxPW xPA3enjZVTN1AzrBy8DUMbtmrXGFYj1vHZPgaSgjE00OYccyQYL/C5EtNnq/u4SMqexm XxJg== 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=VrNIZhObWFffSaz6qA5EC8lbyltED8PNsmg8NodNWdk=; b=ioB+srlMpDEX6eO5nr/Wn6EAAkXXCHN1XgU9fmLX5qW5QCiVbJa/4ehY8UeG6ZvV6Y DWrPr0diBIbJ0+zERedbI55Dhx+6gIerd/egS9H6qtUHeoXs5GjZ48YN2iOq+oamp9Km xaPFtQqF0e8P0scv2SLfSEiOCky4rcO8AnbnfhunIv2c5jS71TwyZ9bhgADgHywuHZf+ IQVU1T6MWRsuPmSuBR1GPB211Jyu4zyxLcHYcVAE/Ey83kPjAeCICTbdmYsqHQNrZQVn a0RByb/X34UPfiI43Wdu9grEMfn4hV/LYi1A7B/T9aCAqZFXix1AIXScGgHVTU5KdZ1h oCHg== 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 uj39-20020a170907c9a700b0088aba792feesi12846009ejc.238.2023.02.06.05.52.02; Mon, 06 Feb 2023 05:52: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 S230295AbjBFNva (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230376AbjBFNvW (ORCPT ); Mon, 6 Feb 2023 08:51:22 -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 299F81F934 for ; Mon, 6 Feb 2023 05:51: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 1pP1tX-0007Da-4e; Mon, 06 Feb 2023 14:50:55 +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 1pP1tT-0034dB-Ng; Mon, 06 Feb 2023 14:50:52 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaO8-3M; Mon, 06 Feb 2023 14:50:52 +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 v5 03/23] net: phy: micrel: add ksz9477_get_features() Date: Mon, 6 Feb 2023 14:50:30 +0100 Message-Id: <20230206135050.3237952-4-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757089940077336862?= X-GMAIL-MSGID: =?utf-8?q?1757089940077336862?= 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 Reviewed-by: Andrew Lunn --- 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..41eb8df6bfb9 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_CAP1_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 Mon Feb 6 13:50: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: 53258 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245493wrn; Mon, 6 Feb 2023 05:52:54 -0800 (PST) X-Google-Smtp-Source: AK7set/P+4Jvrni00qLrZTYbiuOnzzWhDt0kdsms79Y69EjQ06JNEd0ww5vsCoW46R8f5puhOC8r X-Received: by 2002:a50:d783:0:b0:4aa:aa80:b4b7 with SMTP id w3-20020a50d783000000b004aaaa80b4b7mr5369966edi.32.1675691574598; Mon, 06 Feb 2023 05:52:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691574; cv=none; d=google.com; s=arc-20160816; b=rlvUKKrboYvhBQa1ehJRKZ0weGySdJKPwn+swFKOZ4ggEuxLpLqJFhq/pEwF5qcM+5 decoKKNQBzDbnH7ba6oc2FB/K/G7i/7TMKHtqzfbwf0Eq2bl938idaH3hZtZpjBJRHB+ K8Vl4oj4fV19EhjimaFG5Ozo6Hcq5+FA5w11Os6i2kcj0/9OIjqMm9VJ4rK1HXO219Oh lwLQEsDWe8tdkJyarFzMOiTBN9AoJRWXhK8AjZNlT3VG0xae5LByL5tKyNXoyWwfxFyA dNyLBZTRmr8fTWyFui/NvQQf1KvCnPKD5ZA70vL27KOinjbcO6NJYeRGteZE8FUcMAKt MJQQ== 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=YOwDhfUbwBj/H1A2VKdEEplsypp1Qd8vvHcS4sB4Lq4=; b=yTLqBkFB9UwYWMKA29OVhAgbcc7gchpiAWuyML7fkMWYq28AQ+QgOPBTicCMqwQ5C1 jVfMl1pZsvYCUsJKX1RfpejO3QHiKpEqLTX4roqXeH8wHjvovdvG58F+Hf5mhFymEljg wLejt1TplCrZwaUUPKOMrXQ/lR2i7UR1FNr0LkCfIVftwnTuMKN/cV86qIXjauSxkkJe kvu2NHqahC7jGf+I9QavbCk5T7eUJPqSkVdHUwy4b5mE16DSwBariwRfM+CBcKpeLro7 Ay33AXxvnkQBq0zIpJ2XcCzylGgIumekD6bZzeMwC+gDFbiz9PjsjdYw38iLgmC0V2p2 L8tg== 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 fg6-20020a056402548600b0048f68044105si12161176edb.478.2023.02.06.05.52.31; Mon, 06 Feb 2023 05:52:54 -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 S231142AbjBFNvj (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54574 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229582AbjBFNvZ (ORCPT ); Mon, 6 Feb 2023 08:51:25 -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 39ECCEC61 for ; Mon, 6 Feb 2023 05:51: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 1pP1tX-0007Fp-Oy; Mon, 06 Feb 2023 14:50:55 +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 1pP1tV-0034dn-LR; Mon, 06 Feb 2023 14:50:54 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaOI-4d; Mon, 06 Feb 2023 14:50:52 +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 v5 04/23] net: phy: export phy_check_valid() function Date: Mon, 6 Feb 2023 14:50:31 +0100 Message-Id: <20230206135050.3237952-5-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757089968611127065?= X-GMAIL-MSGID: =?utf-8?q?1757089968611127065?= This function will be needed for genphy_c45_ethtool_get_eee() provided by next patch. Signed-off-by: Oleksij Rempel --- 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 fc4d630bb1da..d6b078dd61dd 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 Mon Feb 6 13:50: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: 53266 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245873wrn; Mon, 6 Feb 2023 05:53:39 -0800 (PST) X-Google-Smtp-Source: AK7set9aMRRyAU7CSRbZcdPs/pKg0Rbqef7HmgAGvffZHI+mYMausB84Zf63CHese0veWJrYD58j X-Received: by 2002:a17:906:745:b0:88c:d0b3:27d7 with SMTP id z5-20020a170906074500b0088cd0b327d7mr22034293ejb.24.1675691619680; Mon, 06 Feb 2023 05:53:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691619; cv=none; d=google.com; s=arc-20160816; b=gfZQ6BSTcs5K5ugTIXm98NEzvR0WaCA6aX8ma8toWS7P4yFRu0ZLsh5+eZ5segMX3N +H1yoabdaSngR9718DzkxhXKZBfCLT1/sXfuvRzXlSgIwSDqBBbOV7m+hgRkWtAXk3bI 9184iRll7XTdTf+NOQfNVQ25wUrJHGmz47QN9uRMO14fQRroCshdsFZ5sFyLvoAI69bP 6Vqmhnun5W7jY4rNEFVFr9zMu4LRggm14gxCPEnqPnGTgW00U4vYCKVXq5+A18QfgSyB WlhwT868iv4TVwFdKHdlPdIUv4uFzjNY7q50EqYKuDe3sbKWEeAJL01hLGzYIuBpjyZZ ZiUg== 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=7h3502fFETY0dzSEcNvqftodcvrQAKyGHzu79wmEcBY=; b=ETZE9iorYYWMuMDbIzm5bLYNjCuFv+7zrWNnn7lAFd6xUpBlTAkjNHSva1ExZg0dtT aTGSUI0hqbNdSi4jqdEyE7J83aJJDZTIqm448PEi1YejP8FiALsYpAWdYbtDfnsYc/Ir wsDVGbsTO07CfsysSPXNItOvvyGzDR6B8utqnYFaeHhSDAJW36S6N6iL4c+RsdduSqUB 9ptue8YirYAcqP3jthnC5mcYS4Y1QOHXOuoNt1ucflg79Bns7x6yK2LFpl4OSXtltmrJ uqAAOO+waHL2VccUEWJgPysB1Lb7ehKhNITfsU8w0+G0VnIZJ6aWk3ws02/ZQmGhp2Xq YAiQ== 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 fq1-20020a1709069d8100b00857c01c6b3fsi14363628ejc.164.2023.02.06.05.53.16; Mon, 06 Feb 2023 05:53:39 -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 S231211AbjBFNwi (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231126AbjBFNvg (ORCPT ); Mon, 6 Feb 2023 08:51:36 -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 618819030 for ; Mon, 6 Feb 2023 05:51:18 -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 1pP1tX-0007E7-4f; Mon, 06 Feb 2023 14:50:55 +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 1pP1tU-0034dJ-2s; Mon, 06 Feb 2023 14:50:53 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaOR-6q; Mon, 06 Feb 2023 14:50:52 +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 v5 05/23] net: phy: add genphy_c45_ethtool_get/set_eee() support Date: Mon, 6 Feb 2023 14:50:32 +0100 Message-Id: <20230206135050.3237952-6-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090015912679140?= X-GMAIL-MSGID: =?utf-8?q?1757090015912679140?= 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 | 235 ++++++++++++++++++++++++++++++++++++++ include/linux/mdio.h | 58 ++++++++++ include/linux/phy.h | 7 ++ include/uapi/linux/mdio.h | 8 ++ 4 files changed, 308 insertions(+) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index 3ae642d3ae14..38361df1e669 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -661,6 +661,129 @@ 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 + * @adv: the linkmode advertisement settings + */ +int genphy_c45_write_eee_adv(struct phy_device *phydev, unsigned long *adv) +{ + int val, changed; + + if (linkmode_intersects(phydev->supported, PHY_EEE_CAP1_FEATURES)) { + val = linkmode_to_mii_eee_cap1_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 + * @adv: the linkmode advertisement status + */ +static int genphy_c45_read_eee_adv(struct phy_device *phydev, + unsigned long *adv) +{ + int val; + + if (linkmode_intersects(phydev->supported, PHY_EEE_CAP1_FEATURES)) { + /* 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_cap1_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 + * @lpa: the linkmode LP advertisement status + */ +static int genphy_c45_read_eee_lpa(struct phy_device *phydev, + unsigned long *lpa) +{ + int val; + + if (linkmode_intersects(phydev->supported, PHY_EEE_CAP1_FEATURES)) { + /* 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_cap1_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_cap1 - read supported EEE link modes from register 3.20 * @phydev: target phy_device struct @@ -1194,6 +1317,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 were 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 1549e73d9a56..6776eea770fa 100644 --- a/include/linux/mdio.h +++ b/include/linux/mdio.h @@ -428,6 +428,64 @@ static inline void mii_eee_cap1_mod_linkmode_t(unsigned long *adv, u32 val) adv, val & MDIO_EEE_10GKR); } +/** + * mii_eee_cap1_mod_linkmode_t + * @adv: the linkmode advertisement settings + * + * A function that translates linkmode to value for IEEE 802.3-2018 45.2.7.13 + * "EEE advertisement 1" register (7.60) + */ +static inline u32 linkmode_to_mii_eee_cap1_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; +} + +/** + * mii_10base_t1_adv_mod_linkmode_t + * @adv: linkmode advertisement settings + * @val: register value + * + * A function that translates IEEE 802.3cg-2019 45.2.7.26 "10BASE-T1 AN status" + * register (7.527) value to the linkmode. + */ +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); +} + +/** + * linkmode_adv_to_mii_10base_t1_t + * @adv: linkmode advertisement settings + * + * A function that translates the linkmode to IEEE 802.3cg-2019 45.2.7.25 + * "10BASE-T1 AN control" register (7.526) value. + */ +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 d6b078dd61dd..ef0e3212f68e 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 Mon Feb 6 13:50: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: 53256 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245482wrn; Mon, 6 Feb 2023 05:52:53 -0800 (PST) X-Google-Smtp-Source: AK7set9Bql8baY2Y/FDoAx6wj0JHd9jmVZ86l2oqhPVVms2u24tzgM7OBhC8K+pOssYm8ccAv8LY X-Received: by 2002:a17:906:8a63:b0:888:7ce4:1dc1 with SMTP id hy3-20020a1709068a6300b008887ce41dc1mr20382750ejc.26.1675691573050; Mon, 06 Feb 2023 05:52:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691573; cv=none; d=google.com; s=arc-20160816; b=JHQOXxO3MDgGkZZ3cIgBg8XA3s6S0z/GwQg66WeCgn6p5tcldlGT5COwWGYAoq0Ek0 RNOP5AYFLi7Q+Tu+R203p0MS9Su4JlTeCxdU0wHNLVXxBHGI3w4gHeGjfLf/2Eg3l9ue 0PcUbC/QajUmZMsmWEz4VKXXRyR8T4syy1/zFoOT75ZUZ/xNuxymTmYKByopaoeVqSwQ 8YkU130xdH1tg1n9sjGyRh3cq26FsovmhTQBfpDn8o1TYOT+OzkBUwmDY5S6YqJh0sUp jHc23mljHZnoHqFZ9kRKH+nON2TmlNaDKePYvAqCmtfyZtZph+mR3Tz7zsyF/tO2klyV bb8A== 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=3XLu6rj+X7cX3peT/w79iuU4hqO+twT0e+LhM7Q6L0Q=; b=U0SzegHr6JGpCxczqkCx0SNJFvY+bWF9aCi6XT4wjs/pzhs7PVBhpkGjzzoeU1a2Os FVef1JwrEd9CgDyjrRVBDnqBqIcjifD2ziQofMydjf6EG7BaHE1LBOnUSAzmaXtUMXri q6k6xLyUQxiCsep95HxWq45dMNdQC4yE5Ig7R+T+hkkrtNH+OeuutqhB2yFsR/syMq9m dQrf+3F88kN0E+Dfe3YgVBV6o8LrnU6sEz8J9/vrOs5BOOMB1j+0lSwV+G6Ju+7AlIbh uBFe0O/LgPGI2yCBnjXnfq3xE7cqfUn+nE00W7wUurRdWG/z7pptADOg1z2IS70/J3fj JeLw== 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 ey7-20020a0564022a0700b004a212080564si13024620edb.339.2023.02.06.05.52.30; Mon, 06 Feb 2023 05:52: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 S229557AbjBFNvc (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58200 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230392AbjBFNvW (ORCPT ); Mon, 6 Feb 2023 08:51:22 -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 6D71425945 for ; Mon, 6 Feb 2023 05:51: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 1pP1tX-0007EC-4c; Mon, 06 Feb 2023 14:50:55 +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 1pP1tU-0034dT-FJ; Mon, 06 Feb 2023 14:50:53 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaOa-8b; Mon, 06 Feb 2023 14:50:52 +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 v5 06/23] net: phy: c22: migrate to genphy_c45_write_eee_adv() Date: Mon, 6 Feb 2023 14:50:33 +0100 Message-Id: <20230206135050.3237952-7-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757089966953320259?= X-GMAIL-MSGID: =?utf-8?q?1757089966953320259?= 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 Reviewed-by: Andrew Lunn --- 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 66a4e62009bb..8d927c5e3bf8 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 Mon Feb 6 13:50: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: 53271 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2248419wrn; Mon, 6 Feb 2023 06:00:00 -0800 (PST) X-Google-Smtp-Source: AK7set+OQHV+dJeepR+L9J10wX7Na/IBrebXaXzyO/FTJJfyylhZNzeWuqrHRztwUcRJNxLktn7t X-Received: by 2002:a50:998f:0:b0:4aa:b63f:a0e with SMTP id m15-20020a50998f000000b004aab63f0a0emr2293423edb.17.1675692000590; Mon, 06 Feb 2023 06:00:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675692000; cv=none; d=google.com; s=arc-20160816; b=yLQFdfwumojFzJhq4Arqx6rBos47BjLskDahCG17fQYLAt34dKo/45oBT07EQCexhm jo7Vnk91iUmYP0lDRUdjhnttIKbkwrx/N6AzVX9ZG/tfqQKI4XT09xd3wp/iI+mYO52z t7sRYsjqSoRBGKpWwjLE+NDg0AWaITmXWtl1+XGgLAj3NfUDcvsnrDiujLdZK1N57llg PiMU8GyRj0vWFRJkBMyRLxs0swCfbtUEGLb0s7UhGtMqPGjuy1mz6bIYinYfkNg88+Tm Nt1F13VZOecYjnBXg0ia3Aaqvs/JP093aVhlQ7WyrtzrU/8rDxcPm8dp90yi6sZ2zoMw z4HA== 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=UfCaUBHX+3/LkfLzQuXrMd4bV7htIRYG6ar+kSsVHKo=; b=i+30d7+5rHEU6Xi0K4Es+Ybtb41tVHdbXUJLy72DWTyOaW+bISQXYiLKRx9VDxgCxb kSLnJfT/nCeW/lbgiyMHD2wp6ZTAqrmROKVi2Q8SfHACV6rewiL92t6Q5ZpCMQto7G+y UFe7XuRHgS3ylIiIXcftFxjNS1twcZUBj+nHQDHnv/53k+L7AQ58r3xrypwyzsckBs1d ukv78Q1oK1HHc8yRrd7q4g7ks9HF7jRYHMyDsXut3zFyO4IyWBVzWy/6V5AGwxw4Pgd3 aM6cMiQlyhqARzfAU/ftpD50gpYDe6Z0X4skpDkWd7+yWq+trfPjLIm669iAAi6JXLK+ Rn/g== 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 t17-20020aa7d711000000b004aaa96811dasi5547882edq.90.2023.02.06.05.59.35; Mon, 06 Feb 2023 06:00:00 -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 S231280AbjBFNxM (ORCPT + 99 others); Mon, 6 Feb 2023 08:53:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231152AbjBFNvj (ORCPT ); Mon, 6 Feb 2023 08:51:39 -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 782D77EF6 for ; Mon, 6 Feb 2023 05:51:22 -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 1pP1tZ-0007Ko-Ev; Mon, 06 Feb 2023 14:50: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 1pP1tX-0034ek-98; Mon, 06 Feb 2023 14:50:56 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaOj-AU; Mon, 06 Feb 2023 14:50:52 +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 v5 07/23] net: phy: c45: migrate to genphy_c45_write_eee_adv() Date: Mon, 6 Feb 2023 14:50:34 +0100 Message-Id: <20230206135050.3237952-8-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090414993607648?= X-GMAIL-MSGID: =?utf-8?q?1757090414993607648?= 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 Reviewed-by: Andrew Lunn --- 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 38361df1e669..23ecb12714b6 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); @@ -968,6 +972,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 Mon Feb 6 13:50: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: 53272 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2249160wrn; Mon, 6 Feb 2023 06:01:02 -0800 (PST) X-Google-Smtp-Source: AK7set88uPfLxU35vJY6y0A07somYPXCNo40Q505ab4sIYnhGuz23iNr2Z99ui7yUK5REiCN1R7s X-Received: by 2002:a17:906:8395:b0:878:6f1d:e5d4 with SMTP id p21-20020a170906839500b008786f1de5d4mr21014374ejx.70.1675692062562; Mon, 06 Feb 2023 06:01:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675692062; cv=none; d=google.com; s=arc-20160816; b=m7/kfKKZV+9UHb6vvw0XNLas4IlAVfaX9s3D5QU92HDoVmucBVPvgas13o7JYTda9T Rnot9QhNBxTpKvvlZJ2MY1aJjLpVi7laYquxqe/7sZPv7TKBPl8JCyV4lHqbtuEf8cph 3sweGCpd7988bSdX4BeCIP2lcG6kKcCLI9QcRBWzW0dNo+qMFy3RitYGouTq2zaAzlvY CQPtpRzwzMAQzbqzX9TFxNivWSDCa7rZ8OHopKz5kkLSpBJxp71k5QrwUufcKY9o1tmE hceZmBKLlRcOW6zzBTLsRMYKqj3U3x0xu/xIYEcZmslCJk+a16F4Gk4LFVLRfPaY5VNw NeyA== 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=E4Me7N0WZn6rrO0k/1/v/5nSjGjJXxtJrJQDrZrE1CPIonpnPb7DesII2g7taxtJ4i XFJpIbaXLLGAxlXaqxvq4DSm3nHZr3slCdNkbHQWXUNBPu+T3o14Ibg0gJnluhgp3F5z bAdXzrS7lT4fxKXIE/KsqurLhSNJ/wtkP7pUEmxNSZNcDvwrAdd/Fbim63fVxTvkIypW YWJiFe+gqf9JWhY55M+33eMPgHoFcZ/l0GpjNFBOEnYBc71JAl3IsdwlJPdQaSJdBAeE dg4fN+FBRw3K1vQKj4Z/DEoz8Npx6I7m4cHz2SSnl6l+X8fl7fABtekfRneEY6915qeV 4mIA== 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 az21-20020a170907905500b0087329ff5940si10905519ejc.770.2023.02.06.06.00.39; Mon, 06 Feb 2023 06:01:02 -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 S231272AbjBFNxJ (ORCPT + 99 others); Mon, 6 Feb 2023 08:53:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59028 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231159AbjBFNvk (ORCPT ); Mon, 6 Feb 2023 08:51:40 -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 0A2E41EFED for ; Mon, 6 Feb 2023 05:51:23 -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 1pP1tX-0007F9-4i; Mon, 06 Feb 2023 14:50:55 +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 1pP1tU-0034de-Ux; Mon, 06 Feb 2023 14:50:54 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaOs-Ct; Mon, 06 Feb 2023 14:50:52 +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 v5 08/23] net: phy: migrate phy_init_eee() to genphy_c45_eee_is_active() Date: Mon, 6 Feb 2023 14:50:35 +0100 Message-Id: <20230206135050.3237952-9-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090480030356968?= X-GMAIL-MSGID: =?utf-8?q?1757090480030356968?= Reduce code duplicated by migrating phy_init_eee() to genphy_c45_eee_is_active(). Signed-off-by: Oleksij Rempel Reviewed-by: Andrew Lunn --- 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 Mon Feb 6 13:50: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: 53275 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2251212wrn; Mon, 6 Feb 2023 06:03:41 -0800 (PST) X-Google-Smtp-Source: AK7set+uSYp1SW1dU+92baysOG/V5tXTCBBU9x5jrWWi6X1WNoukP4S41ZrMBuDcXaRMkA8dPJiW X-Received: by 2002:a50:9304:0:b0:4a2:7489:a70a with SMTP id m4-20020a509304000000b004a27489a70amr21774101eda.22.1675692221466; Mon, 06 Feb 2023 06:03:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675692221; cv=none; d=google.com; s=arc-20160816; b=PhF+hxpRxL5u9bD5oBeXEVF8Gm90Tze8CZW5VY3VRaRSq75L3y8Y/BqdmdGQlyC68r fcTOt5nRnkoH5PI7HNhKiC0iPJVagd77kziNBCnGU8dUlZGJBvVqpPrN9xyNN61qLfAf dCZN6KQOUZTF40jANaGz52yHgvQmtoUfug8uoSbLyBShM6IOjFK0bQ7Yn85rGlxnwFvK 7TMRIoIeYw26OGr0tR16JjEL/IU0rgSM7EqdUt+j23ZcdBcCGcwFQ6rtoQbNcSX3eCn9 uu0Bcm88xrZQDr4BLm6ENwGXXmpjnO71D8F8COafc8pPnhFNWyN+qStNBTCFa6OdEXUQ aw9Q== 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=M5udMT5C4wr8uriCzXYPoO9dctt9XGl2X1Kxl8Jeno7hQ5xyWN+3NUPzSQmSNllQYO Vcg1Y2RVQ0CRKNciJ5hbs2OkMFwwuMuqAp9L5av2r/3el6uavyL3zD41Y1tRfSF7wqOa 5Xq8X4uqy+x/3SVjjvY1jV4DipKeLjDQV3wjfu1eMNMYtoOWKh89iB07A1TRFObt7quE rv9ebqYIzs8pVcu5kvtzUPX7G2wfayae46ijngxHZOv1ogYfEvzQWicAHv9ccVidkskD K0NLz/nfjeB4Y/nxG6cQRTC3YAWXI3xPEj951GrXhRKaabFRvSJCumIindu6ks50ypf2 bsNQ== 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 m22-20020a50ef16000000b004a21c1ac3e4si12724230eds.360.2023.02.06.06.03.18; Mon, 06 Feb 2023 06:03:41 -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 S231156AbjBFNw5 (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58962 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231143AbjBFNvj (ORCPT ); Mon, 6 Feb 2023 08:51:39 -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 129D113DFE for ; Mon, 6 Feb 2023 05:51:22 -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 1pP1tZ-0007Kb-Ev; Mon, 06 Feb 2023 14:50: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 1pP1tX-0034eh-81; Mon, 06 Feb 2023 14:50:56 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaP1-FM; Mon, 06 Feb 2023 14:50:52 +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 v5 09/23] net: phy: start using genphy_c45_ethtool_get/set_eee() Date: Mon, 6 Feb 2023 14:50:36 +0100 Message-Id: <20230206135050.3237952-10-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090647254011709?= X-GMAIL-MSGID: =?utf-8?q?1757090647254011709?= All preparations are done. Now we can start using new functions and remove the old code. Signed-off-by: Oleksij Rempel Reviewed-by: Andrew Lunn --- 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 Mon Feb 6 13:50: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: 53255 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245474wrn; Mon, 6 Feb 2023 05:52:52 -0800 (PST) X-Google-Smtp-Source: AK7set83iQ35fDWX/LK86PxvZBItvG5dQVDA7Fo+SEuP/lVzfaRKNu81pMFbA5sQs9SsMjOYWAmi X-Received: by 2002:a50:d0ce:0:b0:4aa:b2a6:d977 with SMTP id g14-20020a50d0ce000000b004aab2a6d977mr3880222edf.39.1675691571908; Mon, 06 Feb 2023 05:52:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691571; cv=none; d=google.com; s=arc-20160816; b=r2KKzPoZ8O594X1XQsY3HstGumjOgIla/AgtX53zU3T2dWUCOgy2JD2+ONhJgKwul0 4WMJL+oI31p67ocKI7Vpkfd0wzI1jN2zDMlpnfE9omKv9ZqUleEsX5QhzPCjKGs0SA+U lmYC+1PHiLSWGSFPw7PghCk6iZ6qu0KhFmzLFHCf7AU2bqOCwpxT8O8ZIJlFkEaj9Fy8 2I6V9dScuyGs0ypuoMpzgcS10JAplBSrNzQ0c8Zr8oyq6fjw/Nh8heShnOIlxAgPBD/6 4PduQ/xfmxRxS2szZ0poXc4W1JNJvLhfX147BiHQ1okir0mchtxKLlFl0OPa3nDOy5RM nsCA== 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=6EBVg36LoCFqkipSlpsrgIFCcuDyAPrJQobVBbDezHs=; b=JraqP8ysDTvCw88cxNCwnOXkil8PgsJBKUfHbIXdHkCXdh0ZLXgZTNg41Hyu0W9UTe 45u5jZdJyfGOYS0csQrU4f4s9MvCPvxR6Kco5z6hpKoSDC22K3eF4Xjr8WUWG/AJjiNz Kmf1+dk5XT7LLQIJLJQnbnoZfijmLm6bFpVKUgTJT+/mrQG3OxO2JaL/vz39beZSTBpe OOPgNtSOLtZCHWj3HJNH6gGMt3jzWgQwHw/QlTyjneRo0mhMhzF8pjTBaXJUtvQICa1j yTXo+1kRggqAb04GoTiYfzmPXEm/L0ZpuZYi6TMmI8PTSL1UJTuxFdD0uZkqTAF5yoW5 CewA== 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 q23-20020a056402033700b004aaa25000a1si8047317edw.46.2023.02.06.05.52.29; Mon, 06 Feb 2023 05:52:51 -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 S230073AbjBFNvo (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229844AbjBFNv1 (ORCPT ); Mon, 6 Feb 2023 08:51:27 -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 6D8762685C for ; Mon, 6 Feb 2023 05:51: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 1pP1tX-0007EO-4g; Mon, 06 Feb 2023 14:50:55 +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 1pP1tU-0034db-OC; Mon, 06 Feb 2023 14:50:53 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaPA-I0; Mon, 06 Feb 2023 14:50:52 +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 v5 10/23] net: phy: add driver specific get/set_eee support Date: Mon, 6 Feb 2023 14:50:37 +0100 Message-Id: <20230206135050.3237952-11-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757089965720371942?= X-GMAIL-MSGID: =?utf-8?q?1757089965720371942?= 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 ef0e3212f68e..b14ca4b06607 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 Mon Feb 6 13:50: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: 53269 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2246343wrn; Mon, 6 Feb 2023 05:54:41 -0800 (PST) X-Google-Smtp-Source: AK7set+B9ieburKxVIeHHMgXb/6xIHJAs7UBlEL/Vyp5eNP7Rvwit9LMqarhwbjD85J1Na5GKz6D X-Received: by 2002:a17:907:3a17:b0:87f:2d81:1d28 with SMTP id fb23-20020a1709073a1700b0087f2d811d28mr15886609ejc.66.1675691680832; Mon, 06 Feb 2023 05:54:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691680; cv=none; d=google.com; s=arc-20160816; b=b/uJO179qSUVp9UVLnj69ryfhhQZyK/mwiTy34GZpF25fy+ahFpB7h2zfrVCOGdSAJ yjqvx0WW244Fsh3bHAKBr2yGWDUFc6MuW+8OCW7twPOyI32pxg0uRZWRaZ6kibn0Dayv B0Uvo48tdXXyzWEE6zVMH1hY1s0wwF2cEXNto0huxVzjuUyHD9+YJBS6arXrZpZCe9nE jyGeC2k81gYG+tGerIlaIIpKonjPcAh1TK718i3RsQcsvvarioMFJUy0XASeL5S7ZUtb eWdkXxW7fowmncssstBXip0qJciSkUENG3G5gxpMi2Gkgigkl81c2E2yt+g+5dVJz1h5 v72Q== 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=c7J0jHZ96hkiTIC6a00RmT305JnEnt27ZpLB795Art19aUtf9eHmAn/wOO+CWFc4VQ 5vA0+2jwSX3BlX9dOVddUtkdnfShow1zPDrMDjfHh+sB0VQZ9CtD/zstcov0vbBvjXdj FOqZRNlzyGJrqxdj1i8+PN0J16VHzUPJrOeihYykTVxQWOIUIFHBPAXmyYhW2CB8C2F2 XoZyr/7XJp4zoVSdx9neBPxQjK+pWrT7ywWY9QyEh2ZzsQXi8eDxQo+1h8+syb07HkPE vER5P4+Ea0Xtb/xXLgJ0GvL6/NGdSZ/PLUstx6krfNdD7VzZVD7+5tEab6ybU15m5lKt XVyw== 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 29-20020a17090600dd00b00880575fb20esi15997762eji.481.2023.02.06.05.54.17; Mon, 06 Feb 2023 05:54: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 S230356AbjBFNvv (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229975AbjBFNv2 (ORCPT ); Mon, 6 Feb 2023 08:51:28 -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 B89052686B for ; Mon, 6 Feb 2023 05:51: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 1pP1tX-0007G2-TC; Mon, 06 Feb 2023 14:50:55 +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 1pP1tV-0034dl-LK; Mon, 06 Feb 2023 14:50:54 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaPJ-KV; Mon, 06 Feb 2023 14:50:52 +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 v5 11/23] net: phy: at803x: implement ethtool access to SmartEEE functionality Date: Mon, 6 Feb 2023 14:50:38 +0100 Message-Id: <20230206135050.3237952-12-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090080260488584?= X-GMAIL-MSGID: =?utf-8?q?1757090080260488584?= 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 Mon Feb 6 13:50: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: 53274 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2249664wrn; Mon, 6 Feb 2023 06:01:44 -0800 (PST) X-Google-Smtp-Source: AK7set81AC0/ginumndBJY4JJDGf8hE0nbwHlexQwWdjtu8sNtHEBvj2m18Aj3OnTkorVOOAzwhd X-Received: by 2002:a50:9998:0:b0:4aa:b409:77aa with SMTP id m24-20020a509998000000b004aab40977aamr3209336edb.34.1675692103961; Mon, 06 Feb 2023 06:01:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675692103; cv=none; d=google.com; s=arc-20160816; b=WSon82vqZJXRONLPLodXCRRJYmoBbJzgnxO4MnLI3MkB7MZ9u7d5fYNZXSh9Xc+uJl v+zA2UzYXBjXIhS81NnCGz3RiRPtFRYF2YA/V7gY5LwoHYW0lFbN3/DlCzVpnVVHQLWG i0UlZyo0h1M/7wvjuL2Uiv8cXdvbQWne2CyM+mJJHLW4LYwioRd1UMyO7FjXnA+ysHuN dSDM5wHlai+8hjlQE04PVCg4H3LXmHR7pY00m1JvjBpcrc/3GtvzllNRPRWd0tABc33Y gLnt6UgA2PDpqDF8jhNSqCiHzGCdOKCSigcTysvNUVbkh/EsCqPteC7WqL0VsS24/VMW fPGg== 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=JrKouj4jIxs4dw2Lf8IzRsSeR1fgCyGkCcUeh1nT9+Din84izoYl6mONmy12i+iBSM 8evaLODbGUj1UHXXMhmufmji2kUrHyNysMLx0cT+Ehdz7FzJRvwU4uN/+sopB+8JB/Br zacGFrfQQuKFEmhQiBj/r0xw6kGcyFPHbNFa2tndtEfc6eFGKSX73LGS63CvBdY+mVfX x9DAKVfhVBMYll3KcJIbKInvgaDCvxHv5xjnsExiU/7ZzyTljIrQvo5JTCa9OsKMM0tb UvGO/P3/DMGbJfertBOh0emRTDqFjZDH7CV+AkWrnbeV/KNOF/koGVMVJePXc+ZcMnBj G+mw== 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 z8-20020a05640240c800b004a0b63389f8si15967437edb.129.2023.02.06.06.01.20; Mon, 06 Feb 2023 06:01:43 -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 S231284AbjBFNxP (ORCPT + 99 others); Mon, 6 Feb 2023 08:53:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229582AbjBFNvl (ORCPT ); Mon, 6 Feb 2023 08:51:41 -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 2E5C821A19 for ; Mon, 6 Feb 2023 05:51:23 -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 1pP1tY-0007Hl-BF; Mon, 06 Feb 2023 14:50: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 1pP1tW-0034eI-8J; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaPS-Mq; Mon, 06 Feb 2023 14:50:52 +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 v5 12/23] net: phy: at803x: ar8035: fix EEE support for half duplex links Date: Mon, 6 Feb 2023 14:50:39 +0100 Message-Id: <20230206135050.3237952-13-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090523522689618?= X-GMAIL-MSGID: =?utf-8?q?1757090523522689618?= 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 Mon Feb 6 13:50: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: 53257 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245484wrn; Mon, 6 Feb 2023 05:52:53 -0800 (PST) X-Google-Smtp-Source: AK7set84A1ifsbQBeLIWZM0WAG9qyZeqh8OrUnNPchiEjlHJOg6nMPwcAb8EupwLZVdqkbwPTn5V X-Received: by 2002:a17:906:5283:b0:879:8752:9fb2 with SMTP id c3-20020a170906528300b0087987529fb2mr21155267ejm.67.1675691573388; Mon, 06 Feb 2023 05:52:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691573; cv=none; d=google.com; s=arc-20160816; b=bW9YGSxD1hK96235+wEVO81uWfYMOG3fmfVKkZNyaJZGkAo8xRJotKqQmOBY5974jr MQqHuzGOm0Kn0CutKv2A868Jc31pfop1Pt5Pd5sHAzA0JjDYgumceeYKt1BXRCJuiI3U aAPxPh0XeAW9Y17GeiQgBdkY7DM5LVYDhlGJOMUpwSyvAMWiHxGwHAhzsFqS2suoDqbX dyqlIl5oJFw9tJRNuzAxy7kJxptkzQiKlljf4apooUWiINGgYdc7loSuEwP8KrWx+jiU f6lNgiOwnCSjrvhF6PIz0vMNlYfu2/qUXGs4H+gAayclHcLkAelQmraZCEucjm9rRara x17g== 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=lE7Nqz2k3StGOFoJMiwjaYiKeolkW/DYDV2x1t8jJXE=; b=pTv9XX/gpgb6dog48m0X52Fcu6FK16Ki+gS/yaFUQmDtApvfGIz2Tpx8NtWs41C8fZ 14bRjnAlloSulkETrpxoEz+oWb4hcfPFf7E7Q3fuEQ41fURz842WqgJ2WE4GTabmq6Jv lADN7/EEjfA9JVK0zNon346FWbqD/cEHnllVmjdIwhg3Q4byQ1PZjbvPpDfILKGeYIH3 CXUdfE+9sHtlzUqqiIyfwzMbkIfGyqzaXy8mvWcL9KRkaN8SYHoBXngqcIiNkHNUrXYo l4EZn+nkuwVlbmNYmz/i3ZMgVPUDATJFF65o3vqLVZL39ClHFHToJTVx3/1DEYWt6QkU BtrQ== 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 up2-20020a170907cc8200b007d82520def9si11518206ejc.503.2023.02.06.05.52.30; Mon, 06 Feb 2023 05:52: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 S230526AbjBFNvg (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57824 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230464AbjBFNvX (ORCPT ); Mon, 6 Feb 2023 08:51:23 -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 E2EBC265B5 for ; Mon, 6 Feb 2023 05:51: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 1pP1tX-0007FD-5t; Mon, 06 Feb 2023 14:50:55 +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 1pP1tV-0034dh-5D; Mon, 06 Feb 2023 14:50:54 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaPb-Pz; Mon, 06 Feb 2023 14:50:52 +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 v5 13/23] net: phy: add PHY specifica flag to signal SmartEEE support Date: Mon, 6 Feb 2023 14:50:40 +0100 Message-Id: <20230206135050.3237952-14-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757089967553053565?= X-GMAIL-MSGID: =?utf-8?q?1757089967553053565?= 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 b14ca4b06607..7b50cf099b2d 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 Mon Feb 6 13:50: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: 53270 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2247025wrn; Mon, 6 Feb 2023 05:56:13 -0800 (PST) X-Google-Smtp-Source: AK7set/F/PU9LpRJ5mBjFX6lW9HPukG88CPzmHyk19CY3P6T6N/HMtIlIg/x5q4U90o22reVpt6R X-Received: by 2002:a17:907:c70d:b0:86f:1283:7b1d with SMTP id ty13-20020a170907c70d00b0086f12837b1dmr20598382ejc.71.1675691773013; Mon, 06 Feb 2023 05:56:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691772; cv=none; d=google.com; s=arc-20160816; b=IjqwymkZ5vU3gv4J5Ke1D5ImC3/yzCgqlAWANKyJTJCbtV1IUJDw1sTiSMCAkfs/Ky boDIXsWk6IJNzph/OXuiuwbzH8ZHZep2t81r1qhDvg0TCxUddqggaB2lEeGOh1uRKPZD nqfqAWRmujh95k6MCnnziFE4/a9zoexFk3SvIK/daUl76klOKZ3IRaLFc630sb77jI/P RWPxYQaHjF+A2511t7V6M1SVuaaMolcQTQit5WNZXwg7yYbmze9kkRKToVhorvgy1d4W OIOmhi8vCCbcePPww32Ul4UwXX5UZs6AA6WGtlt9hNyjlH+qhuFAa5gdCl2KV6hwBPHP cywg== 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=V2HIzDetnKjPUGp+qnUDZ4lEo9/Ob/AKOUWXf77kcHgwn3eTnoBb0w4MTW32YPChQU 5IDIpylFxNz0yks3qLCgIvRPcLpxN9rZFuspOk4Ksne0c8MA7DN4Hxm39mezFn8JPsMp faBBxZMbFXR6vzf1vazsg4E3DjcxbzojgSxrbHVSoh8R5zSol84/sD2V6uxfMWzkez/3 wWFD1/WBz0A27IBklmIVxLHCYf3wd0YMF2WuJe04W1P47r+Uc+nv4j8Ce2FIKw8iMEYd ASEfqxyS3P/Wpc6QUS4J/x3xBJmwbItqQInxZXmNlZxkvV/wsAhwvo5SgnzK3szXJM6O IRWg== 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 u5-20020a170906108500b0088560b779a4si15149641eju.733.2023.02.06.05.55.49; Mon, 06 Feb 2023 05:56:12 -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 S231233AbjBFNwy (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231139AbjBFNvi (ORCPT ); Mon, 6 Feb 2023 08:51: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 7591A10A9C for ; Mon, 6 Feb 2023 05:51:21 -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 1pP1tY-0007Io-Vc; Mon, 06 Feb 2023 14:50: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 1pP1tW-0034eP-Mr; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaPs-T9; Mon, 06 Feb 2023 14:50:52 +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 v5 14/23] net: phy: at803x: add PHY_SMART_EEE flag to AR8035 Date: Mon, 6 Feb 2023 14:50:41 +0100 Message-Id: <20230206135050.3237952-15-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090176538178463?= X-GMAIL-MSGID: =?utf-8?q?1757090176538178463?= 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 Mon Feb 6 13:50: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: 53265 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245856wrn; Mon, 6 Feb 2023 05:53:38 -0800 (PST) X-Google-Smtp-Source: AK7set/1TycZQRg4f47sPHwEGY6MH27694uNVVFA1AT6sgwawYzcL9UFs0BxUtUa/ZP6pAliZcu3 X-Received: by 2002:a17:907:3f85:b0:88f:8a5:b4cd with SMTP id hr5-20020a1709073f8500b0088f08a5b4cdmr21864517ejc.1.1675691618181; Mon, 06 Feb 2023 05:53:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691618; cv=none; d=google.com; s=arc-20160816; b=KqY39+0EzRfztoAStGbCdrLw3b/r/6n4FEMbo59hJQdJAi6Vfi0w2XaSBOTNfM0EhI FC+kNId/HjlA2nM8dmyPM6/dkCJnF3cHjLBchkvxak89NFvhTm61zGMKit7C+XIl1qQX rOJ39S7WWuc++OsLF2JHmvZGkc87SG50WaXjevUq1TCdBaPTOV3Sj5jv8C3TmvZRbnmE Os6QIuu2lj3zox60lhRemhPmwo6sq7K3+Luc3cdn1t4k6qU+FHqvZzbewd1f9DaY22aT fJlQ5sjb8nDKqWR1bKyky8EOuJ98amznZGt8ANtLvL74mRygILpbdsRmsKDgF4hwLygG rZiw== 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=XcNTEixEfAhmZ2do4k+Io4SHzE+QpasRHRnDcrlfB4c=; b=EH6vDNVjYPt7NJ9WPRpo6Vzx+tXMVMiS4UpaTPNb3SA7NfjvnAtlSmir4gZ7AEmD2E 3S52HNb7pHTadtVz4nhI6Dsma1Cpe5s4JQLuhOz+8wA1KtQ4muQXtRrBKMiGKTIyCVa2 VDZMdOjKvxzhpDFVU58gay2XFnUFzAS7Gj2P5phy9GTMMKO5q92mqdLY1/6E8YVTDl/j xHDhHimfpiOXojiSM0K/4npQg09l4e5T6rkKANrijwRZtGTfnEHqMMcwFrVdWKSq6e1R JFUXfet9WHPo/MEllxZpQxTBK044GZkyPCjG2jAbUN7RNWu6ByB48j4FXmBHh6UrE/W5 jHzw== 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 19-20020a170906101300b0087ff004430dsi16565960ejm.371.2023.02.06.05.53.15; Mon, 06 Feb 2023 05:53: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 S230202AbjBFNvx (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230266AbjBFNva (ORCPT ); Mon, 6 Feb 2023 08:51:30 -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 6AC541F5CF for ; Mon, 6 Feb 2023 05:51:09 -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 1pP1tX-0007Gw-W6; Mon, 06 Feb 2023 14:50: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 1pP1tV-0034dt-QK; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tU-00DaQ5-VA; Mon, 06 Feb 2023 14:50:52 +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 v5 15/23] net: phy: add phy_has_smarteee() helper Date: Mon, 6 Feb 2023 14:50:42 +0100 Message-Id: <20230206135050.3237952-16-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090014199730922?= X-GMAIL-MSGID: =?utf-8?q?1757090014199730922?= 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 7b50cf099b2d..2378b81321df 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 Mon Feb 6 13:50: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: 53267 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245887wrn; Mon, 6 Feb 2023 05:53:41 -0800 (PST) X-Google-Smtp-Source: AK7set+T2kTyJeDFqzRsnmpCIiGiy8/vE9wVqT4qH2mVfEw/gIUE4wq17FNCgZVk1xWeDxQ8vue1 X-Received: by 2002:a50:955b:0:b0:4aa:c68c:5441 with SMTP id v27-20020a50955b000000b004aac68c5441mr135451eda.16.1675691620966; Mon, 06 Feb 2023 05:53:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691620; cv=none; d=google.com; s=arc-20160816; b=yNuUZ9On+FRN5EpUp2/N6pWkwAFAaUiukAyoqYN4PKWgcyHC2HKbCf1FLuIxaRtohb dQlOroCj+Q1sJ7cSkVeat3/eEO8Mbd/cPN9AixFCh/O8OpDSUWHi+EjDEZJCItQORyct atg6/oep2tLeCgub9cxZsMOiqmipljSjIBVpXEYf0YUm1xvwaGCflxbnznZC2P1b/cGb wNtapKBwZHrkMWpkijr7oWEDeJ0n+eQBiMJ9N051JPLNyIKGsQZdq2vn4d1q5yklmSVC RzT7WonufEYMrfDp5ymFMQyLwFeMPJ6itIwmAORu2eLx8fy44+ftTh8VJv7ngsu+shfp ch8g== 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=rbmh5yUNjpZV6g1TXnEwaMyJAXwP5cdXeNM56svkGzc=; b=AfjUDh1NOHkcQBTBTLu+OGcdgNI9m6EoarPuZOD4gaXaN8QWHYCD/J3txvM0wCP1Yx E9d6+1oF1U1VVYvV6J5E2Dl0AbEsHkRbAE6KsEvyBh5kpVPCg4MygQM0gXqHDWgMCuFc fZqCHk22lYzyilPUe49xBhkCOoDRqyHrC5rr0LuXwG96c3FQaUOxnRQBEPyAZZhLk2dn zCMsKBqekiPpETJXNVY20yU0J+Z+abodTBsRssyUKpd3emEW4Quz9DHhcQirF1iUQujt KFMb+M1IG0VzIBaeXqULivXCrShjc+Sh3PZAYt9vtE3qsTHy9sbYFKHyaW0s3ffXzEwN mP1Q== 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 y8-20020aa7ccc8000000b004aaaa4fd154si4975443edt.562.2023.02.06.05.53.18; Mon, 06 Feb 2023 05:53: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 S230266AbjBFNwB (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230337AbjBFNvb (ORCPT ); Mon, 6 Feb 2023 08:51:31 -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 D298D21A2D for ; Mon, 6 Feb 2023 05:51:10 -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 1pP1tY-0007Hk-Bm; Mon, 06 Feb 2023 14:50: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 1pP1tW-0034eH-8Z; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tV-00DaQJ-1A; Mon, 06 Feb 2023 14:50:53 +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 v5 16/23] net: fec: add support for PHYs with SmartEEE support Date: Mon, 6 Feb 2023 14:50:43 +0100 Message-Id: <20230206135050.3237952-17-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090017243249754?= X-GMAIL-MSGID: =?utf-8?q?1757090017243249754?= 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 c73e25f8995e..00f3703db69d 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 Mon Feb 6 13:50: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: 53276 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2251430wrn; Mon, 6 Feb 2023 06:03:59 -0800 (PST) X-Google-Smtp-Source: AK7set8UgicBm/yKQM9M64wiL8fQb7iqgnlPHTyPS6sT4LexyvZP0UDAXCtVxt4DHh9TUmdnSNut X-Received: by 2002:a05:6a21:33aa:b0:bc:fe7e:cfd9 with SMTP id yy42-20020a056a2133aa00b000bcfe7ecfd9mr23920481pzb.18.1675692239486; Mon, 06 Feb 2023 06:03:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675692239; cv=none; d=google.com; s=arc-20160816; b=w/eiwpXk4UkfMek5RaqLm6d6E6KUltskrRlgibXQrWL6jBzz/f0uTZz8bsXwQzVYxQ A+JtYQVytl+3KcNdmAlWyitYPBB2Q6y4uxMIxdiIoOMJnVI8rVT4jYNvLacdDsaZT0/X 8/oWQviBNLswC5T5EwwiYeVfqK388l1kjMv8512JSDBAdQIwQfpqv1wj1sdiHtTUwbjG tufvDJMIlTPcFw7IPaSYMAqJaAdDBDkYd1gmIFowD2IlAV4aDNDopXi/VYw8T8ueU0J9 ukaUGEvpp/BqGTTEegi4KvfjUpUebxL2yjvnow329CwOrNEgHsxzHP3lumbO/WqBpoq9 ip/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=L/iZwwuYM/UoVF/RcbGpngmITMb3IpStZyKMiRBbLHc=; b=OlqGeN6FOXlys6NxtiGOoba7oFkN2XKqt9JxpDsvINmQ8nNA+tGwJCtuF5BOMNo0YG uvDUkSpEy77ldYntKMYJSw+9VoobN6FYl9mSMiOREqWMykjRvvEDMJX7vIYMOfE/vjVf KacqvGOmjOr4434/fip2VUV2aNMaaKqfrDJoq7HAK0qqkx/J4eu0T9FNZeAm7P4HX1JU u6rQvpfMnrxZy83gANNn2E8etpIF5EO8uXF6MezzFWoNYmjyLJ2OeLHhHnhgOKD/hsLt jZeY0QrdhDiC/6jIPafUbs4vHvfbLUCXGJ35Fr/6QPyFh3aJb6MCVgcLSzIJlQLc/oPa EnGQ== 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 m30-20020a637d5e000000b004fab627daa8si6890025pgn.472.2023.02.06.06.03.46; Mon, 06 Feb 2023 06:03: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 S231264AbjBFNxF (ORCPT + 99 others); Mon, 6 Feb 2023 08:53:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59012 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230169AbjBFNvk (ORCPT ); Mon, 6 Feb 2023 08:51:40 -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 915AB1DB86 for ; Mon, 6 Feb 2023 05:51:22 -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 1pP1tY-0007HO-67; Mon, 06 Feb 2023 14:50: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 1pP1tW-0034e6-3W; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tV-00DaQX-3U; Mon, 06 Feb 2023 14:50:53 +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 v5 17/23] e1000e: replace EEE ethtool helpers to linkmode variants Date: Mon, 6 Feb 2023 14:50:44 +0100 Message-Id: <20230206135050.3237952-18-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090665624383525?= X-GMAIL-MSGID: =?utf-8?q?1757090665624383525?= 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..13c728626068 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_cap1_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_cap1_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_cap1_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_to_mii_eee_cap1_t(adv); hw->dev_spec.ich8lan.eee_disable = !edata->eee_enabled; From patchwork Mon Feb 6 13:50: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: 53261 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245734wrn; Mon, 6 Feb 2023 05:53:21 -0800 (PST) X-Google-Smtp-Source: AK7set/Fc6JnW9z6pAZzX7qHNEifBDKvVVbWg10Qz0MXnfUAgNTOb+08ORTgnYhVghotGP+bln6c X-Received: by 2002:a50:9987:0:b0:4aa:bb71:423d with SMTP id m7-20020a509987000000b004aabb71423dmr1658024edb.1.1675691601758; Mon, 06 Feb 2023 05:53:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691601; cv=none; d=google.com; s=arc-20160816; b=lv89gi0/DA6xYsZ/tQ0oMiFqyjdxeNAP+0K52/0uNAYxpZ2xh8Gt9w15hbIF+ggGKt I/O8aLPOhlErmsM+ruB/LaaMhrtO1uHfbfuiJEjRKgd/RO7eLp7cqrrPno7tPCPQFCM1 bWOyTTjtUcEB5YlDodll3CBCepvm2fY3myOyKUE7uVLrGNmQAYzygNWwHoosgwuVemND 3eiWgN3pq6BJhlzg3sZDEPLJR//h6QJzS6UW4TtmsJ/YLn+hnOJcAYSC3gDDatTULUxj sMVy8oJXAVXOXimqm50RW0mE8skpGT1Ooh1NJe4qxehfqWkwPSIh8rUYpsfGKwYMe3J2 H3Ew== 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=n39vrR2F1y3/VtZDsP17clAGM6bVAC/vgQBNBH6a0bs=; b=noeDzUT2fkPQYaoqTGxNiNwEVsuDlMtXf3aCQwIL7IA8V+2W3rozRVX563MKC4U4pW IoPzptzbTB44QcAihajSNk30U2hwsM+V7xTt8oUsVw03nraxnFed7ogq8K5vIR/9+IRS LVt2bWRU0/qNz6HOtir3C2GaDsC9WsJYr4HYEC7Mli0x6BvnJD4w71rfFmP2y6EhlufF zKs2+CX0E4f5v8N/gv20t/lSeo1e7OqpTYB6X3SEoJ7pnzcFPeGbPKz+Z6Dds8ND8keN WUsDc/DIq9Wdjv4t+4NfbkIhqFlj1j4ZWg0U4zrrNnlnTaDr6GKBySXdzqoFLFy+O/a7 BmEg== 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 fi27-20020a056402551b00b004a091a92414si12847581edb.472.2023.02.06.05.52.58; Mon, 06 Feb 2023 05:53:21 -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 S230445AbjBFNwI (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229665AbjBFNvc (ORCPT ); Mon, 6 Feb 2023 08:51:32 -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 376881F903 for ; Mon, 6 Feb 2023 05:51:13 -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 1pP1tY-0007HJ-5A; Mon, 06 Feb 2023 14:50: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 1pP1tV-0034e0-UJ; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tV-00DaQg-5n; Mon, 06 Feb 2023 14:50:53 +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 v5 18/23] igb: replace EEE ethtool helpers to linkmode variants Date: Mon, 6 Feb 2023 14:50:45 +0100 Message-Id: <20230206135050.3237952-19-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757089997018702735?= X-GMAIL-MSGID: =?utf-8?q?1757089997018702735?= 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..5aa4c28fc447 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_cap1_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_cap1_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_cap1_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_to_mii_eee_cap1_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 Mon Feb 6 13:50:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 53264 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245835wrn; Mon, 6 Feb 2023 05:53:35 -0800 (PST) X-Google-Smtp-Source: AK7set+8TKRKjwC/tV0QrMZVBBRB58Ed7v909asTNilOoENltsrscKhZTx7KKPuFdyYYidlQxUdb X-Received: by 2002:a05:6402:400c:b0:49c:5a27:c1fa with SMTP id d12-20020a056402400c00b0049c5a27c1famr20904386eda.24.1675691614965; Mon, 06 Feb 2023 05:53:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691614; cv=none; d=google.com; s=arc-20160816; b=hL0e8jsnOyd/VXH4buvnrCEsuQFr+Z1gA7m8BUjA6YRt1vTHl/fgeFscWDApxWLkRe K1tdfIjy9ANrqbSEdCAHsterBYEV2osfrNElkLRJTAUxSA7EOrdgXblyYMWTBTwhfBMP d0N08u91Qp4btfRDAyW69Pxbu+IlzcH6FL6KjTIA0XxX5hiK0mvc9bZqUa9yWrPBzhJd o7tIFYFKfXbGhuO2ObjzmdsaOWF+c3g91NJUO+XTnIlYDyX0XZm0O8R586ByKmDcc5oy wu/c3BxwVAVC2l1OiXWPyUZvmWYGxuHW1HPvVciwt2KcCRRuK+b/6ZXDu/JmbjX/W18x Dmug== 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=FbUS4wbRepip7hdlwhfAFOB1yDkunhnxFlQD6nNa8c8=; b=aP1+slZ4cZca69ptMPLbEHNcSwr4DpkB5cKN691Fg0/PPSgYoN3wTEY2Bok1qUfINS kOpJPRXXekb69jWoZX9oFYNhqleUtASJiJew7UhmYmoPIOCDBIrz2gB9MOqNBgaI+qpv GxVjInR80VW7UYVvX8DGlF5ZgPKzsOmsPoGAEDHF6dUTBiztct596iDq1a091uD+LG4c aUGgIkMwM0/xgttIzuvqWjv298dDWxJ4rAaFFZuUO1axA6gHSKWfuC64RlG5PitqHIr/ Qex6uegKygEowyfSAGV966smgpTnJcYoyicGdtpRG72EORRIMueCxlaySjb5O61so1EV qU6Q== 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 c16-20020aa7df10000000b004aa694bbc43si9169509edy.68.2023.02.06.05.53.12; Mon, 06 Feb 2023 05:53: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 S231206AbjBFNwg (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58824 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230522AbjBFNvf (ORCPT ); Mon, 6 Feb 2023 08:51:35 -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 A0089EFA5 for ; Mon, 6 Feb 2023 05:51:18 -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 1pP1tY-0007IW-T0; Mon, 06 Feb 2023 14:50: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 1pP1tW-0034eN-Lw; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tV-00DaQp-7r; Mon, 06 Feb 2023 14:50:53 +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 v5 19/23] igc: replace EEE ethtool helpers to linkmode variants Date: Mon, 6 Feb 2023 14:50:46 +0100 Message-Id: <20230206135050.3237952-20-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090011094835122?= X-GMAIL-MSGID: =?utf-8?q?1757090011094835122?= 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..012406f2e8cc 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_cap1_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_to_mii_eee_cap1_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 Mon Feb 6 13:50:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 53273 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2249434wrn; Mon, 6 Feb 2023 06:01:23 -0800 (PST) X-Google-Smtp-Source: AK7set+3lUjgCh1TO/FRULSMYyMcwxPfp+0ZLSzHW2HPuFpTm5/Rmy1SpSjRtdjNfNHafTOO3W8L X-Received: by 2002:a17:907:8c85:b0:7ad:aed7:a5da with SMTP id td5-20020a1709078c8500b007adaed7a5damr23103530ejc.28.1675692083258; Mon, 06 Feb 2023 06:01:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675692083; cv=none; d=google.com; s=arc-20160816; b=JKJ/CJTRAYBXFGIqP4ELgehJH9Hg+G6KIKajy0dF+JOkbMvHgEO3W4peW9seISHcPN yt0iZsNVzjE9ZQuThUc9BnzJCtPLho6Lh0P4vTlF5t/wjHfjdjd/IQ6PwQg1cFhcZrts 9PP3mtqX9v70+oHCjzRkGgmMS+Ll7oD+/nVt3qT+1coBAyhHkqvJFnRmiISC7jp8c4aH BqtWLttRnv5+MqBibsiwE+GcAftEekwbJCl5IkNBUkXJw/S2GK1RRpNQACAHG6scmr1n bFa1pB68MZq38j4r9h6312difOq3Qt2RN4QNnxrU2eKdbdsFOYsS3QgcumggBLR4LatU +cuw== 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=YUcnu+gZKSsaxR2WuMb3Vd1Ih+cNr5/VZJSkkKEFCo8=; b=H0nEcr3ZdSZBWqkr9R1AdVa+nQPhaBqT2qdNsrW+ZvUSY3lcvWXGeHIE++ZuCqg9lr pWytTD9TZzAX9kyg47W9MV5gYERpBnp8bQJRuFvOnna8t5eTHhsxdGqox5y4yTiMqUHo pbvOuAZrWPexRmsqI+lrz+m/XbGrQ6wokOhk9WUnqs5UaswA9/r1JR5X0BL8gGMpsgkO tQZVcNE0NoWk+mrBVogHabu+FfUU8mE+EmzBLRBsRdYsrPLgp9U8CudESb4yCsfEy5ea OrLUr8YSSIndy2ryp/EMZ8hrK8AjCzj5G690Q0p0BoxeHgDqk07ObGBwPiwNQ4pxqE3T EP1Q== 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 uj3-20020a170907c98300b008778e608891si12524777ejc.256.2023.02.06.06.01.00; Mon, 06 Feb 2023 06:01:23 -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 S231252AbjBFNxB (ORCPT + 99 others); Mon, 6 Feb 2023 08:53:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231147AbjBFNvj (ORCPT ); Mon, 6 Feb 2023 08:51:39 -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 30E3A1F49F for ; Mon, 6 Feb 2023 05:51:22 -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 1pP1tZ-0007J8-1m; Mon, 06 Feb 2023 14:50: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 1pP1tW-0034eS-P6; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tV-00DaQy-Ap; Mon, 06 Feb 2023 14:50:53 +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 v5 20/23] tg3: replace EEE ethtool helpers to linkmode variants Date: Mon, 6 Feb 2023 14:50:47 +0100 Message-Id: <20230206135050.3237952-21-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090501910963163?= X-GMAIL-MSGID: =?utf-8?q?1757090501910963163?= 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..ba1913e88372 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_cap1_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_cap1_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 Mon Feb 6 13:50:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 53268 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2246319wrn; Mon, 6 Feb 2023 05:54:38 -0800 (PST) X-Google-Smtp-Source: AK7set8ZB+uRKm2AUhNxhBPtxzAYq13CVEVNxU/DGYe9Mp75RJoNUBfvLb7b+tG69ufCR8yEo/4c X-Received: by 2002:a50:9b1a:0:b0:4aa:a6a9:4c47 with SMTP id o26-20020a509b1a000000b004aaa6a94c47mr6461535edi.41.1675691678100; Mon, 06 Feb 2023 05:54:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691678; cv=none; d=google.com; s=arc-20160816; b=zXXH/uHSouafSHSLXIb6iwOjRc/SDA9sgSRJozskLemMwfHZndCbPzQQILsYV7vNgm NkwrGjJAbAhVzKPUWCA7/oKp3lajkVdrCrRJyLk1cl25xCIQezvb2xXSs6Hs0I8flXUy 1+iAw2EExWTkoTWqTFI56BGwBZ9Jdv6PItY3fgRYn6NINImibyFD/Q5hEc0tc86w7V9x lidijz4WaTdp4JciNPfLplQ8yuxNEe/cMUBI9yKIqddtQsc7qdxc93W3q9qh55zKq2nq p5ADZ7Cb/3jmMAp6R1Myz4Qq+0Vh+WE5I0/ylO58Z+nX3ZY4yVb1jOpkSjBwnmxl0yLN ouzQ== 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=JnsXyMLYXWVO5hfWwhcw+iioyl6TM1GSZ2iWU1TNMJU=; b=qMjRpGEphvDT2+sb22pirb1gBwZJ5fLwX+wM+OGQdYpuk5OdwszivC9luOt1cNX+dk wLdARPob9+0UGmT0eoFXZUSUWo/+i9jG1/heC1hBOyySGeT2hHn9f5PDC41oFDNukKWi O26VuTCHmoc0lIwOE16xlqUMiktOyGYGMsXK8CmTx8sRCWEOSkMkaffRJW+EGs2ew7bF siidnb0rtcZnYcj7Go8762Arry9H+xEI78Jwd3fpYcHtd+HsqH+FrZEUDBZp3g5S925g mZ5SM9QeJgE+5yO0wuuteaWhmzRG1KOTDEpho5hztHThoyd7m5ctBfEQY5gQ9EJGNg5i +lKA== 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 b8-20020a0564021f0800b004a08f621badsi12547218edb.284.2023.02.06.05.54.14; Mon, 06 Feb 2023 05:54: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 S230078AbjBFNvt (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58122 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229954AbjBFNv2 (ORCPT ); Mon, 6 Feb 2023 08:51:28 -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 D98023C37 for ; Mon, 6 Feb 2023 05:51: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 1pP1tX-0007Gk-W3; Mon, 06 Feb 2023 14:50: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 1pP1tV-0034ds-Q1; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tV-00DaRA-Db; Mon, 06 Feb 2023 14:50:53 +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 v5 21/23] r8152: replace EEE ethtool helpers to linkmode variants Date: Mon, 6 Feb 2023 14:50:48 +0100 Message-Id: <20230206135050.3237952-22-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757090076933590806?= X-GMAIL-MSGID: =?utf-8?q?1757090076933590806?= 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..5195859a8e17 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_cap1_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_cap1_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_cap1_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_to_mii_eee_cap1_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_cap1_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_cap1_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_cap1_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 Mon Feb 6 13:50:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 53259 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245504wrn; Mon, 6 Feb 2023 05:52:55 -0800 (PST) X-Google-Smtp-Source: AK7set9YEBUfdpkToUivVCNhsc8BC1nh1l0qSTH2nIABaa8xszkAxeQsdQBJfbX4R/JbmkgmoAqo X-Received: by 2002:a17:907:8b91:b0:88c:24f0:2db2 with SMTP id tb17-20020a1709078b9100b0088c24f02db2mr21228024ejc.4.1675691575672; Mon, 06 Feb 2023 05:52:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691575; cv=none; d=google.com; s=arc-20160816; b=qLq/CuOyeo77KnY9/HCqfM3gJEKfpKCUv//W4kTKRd3Fc77j0wD87nrtFYeG3nF3a3 dEGCLCsdySH4pHACK2rwChv7c6FBgSMiNJ1Gwt1v15OQCSGopQfSrawKN1dLaMHzwnQ+ tVimzjuod75R9mZ4c7Sv3NubDwgVM2q2LlRFON9VV8YSyuPs2sNLnal+u9DH2jo77ASt 08Pi9GBsQPxpwn9T+K+3ADLPsFrPS0q+T2geFVKEqPRpLgaUdSrGaS5+9fl7x5+tan4Y nThAeHH012DbfJfaVCUbCkQ5LpB/lKv4z8xWgw7c/VTU7NJW096sWz8NV0cgPGvXt7Hp PK+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=tqLWezdiSE3WH1gdGzx7fG2GQ4pvweCWsqxFq/Be0cs=; b=pzBKHF4P5M38KoJ7QGUR0cPztEt1tTG1u/x9vAb/+T0EegOTFadc+NUuuBnsY1FKad AnemW8xzVB7zO71yKQq83H85VdtShaiw09GKFcdDikDz8Ztk5iM/4DaDQurEWsRRlELB ggWkQW1xC9YsZYKXvScVxT2k/kiNdeqWQf88T6BzFTMJEvrV3QhoJRX2pHLy+R8yMyLm FfQDjidsggQwbsEd98kqD8ELPd00GnT05fn87g+lykGmbyBxLltS31OJJs5p4hqskiMp cbEuFlp+7VRCAYi/AhHY+d/CzGYALT51tA/d4Trf4C4RCggbLUvrELtdD+r73S14JrL9 mi2Q== 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 n20-20020a17090673d400b0088e899e04f7si15515177ejl.482.2023.02.06.05.52.33; Mon, 06 Feb 2023 05:52:55 -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 S231194AbjBFNvp (ORCPT + 99 others); Mon, 6 Feb 2023 08:51:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229874AbjBFNv1 (ORCPT ); Mon, 6 Feb 2023 08:51:27 -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 AE1FD2686A for ; Mon, 6 Feb 2023 05:51: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 1pP1tX-0007Fo-UC; Mon, 06 Feb 2023 14:50:55 +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 1pP1tV-0034dm-L6; Mon, 06 Feb 2023 14:50:54 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tV-00DaRJ-GV; Mon, 06 Feb 2023 14:50:53 +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 v5 22/23] net: usb: ax88179_178a: replace EEE ethtool helpers to linkmode variants Date: Mon, 6 Feb 2023 14:50:49 +0100 Message-Id: <20230206135050.3237952-23-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757089969680919223?= X-GMAIL-MSGID: =?utf-8?q?1757089969680919223?= 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..77cc795ef6ee 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_cap1_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_cap1_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_cap1_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_to_mii_eee_cap1_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 Mon Feb 6 13:50:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 53260 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2245730wrn; Mon, 6 Feb 2023 05:53:21 -0800 (PST) X-Google-Smtp-Source: AK7set9RALGRcYZvNMsm5JZf0lXnIanfiQctNpGeJS5GCkiZYilMdY8Q8h30Ls1CQ3Pwf1tdOvMF X-Received: by 2002:a17:906:8a70:b0:84c:a863:ebe6 with SMTP id hy16-20020a1709068a7000b0084ca863ebe6mr18153839ejc.43.1675691601210; Mon, 06 Feb 2023 05:53:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675691601; cv=none; d=google.com; s=arc-20160816; b=dcfmMwLJTeWgqtsKhAbHFmRqCStQNPv6XMqoVqQBDw3mNeYgDaSz9njawSoAG+Gl+t hApuH8GvJR0Ois7j5lPvPf7CSX9Na22/SlMo84jkKJdyNzWTBrRGvpqSs8RORcBYu7mj FqLORe1dX//o4rT10PUt9ACcv1Gcn9IacWp5qMIamWSjFxr81ekDRBcdRzj2LrcEvYg6 TXeKmtbYbW68U+bfk5cIVnVl3oKDal6keYQzkgPmyFcYAVCVdNIbovz/HbH/jR+R5LYp q+aRV35iGx6OR8BuVVRvRoYU2u8XClsEuJj01bIl3JkB7HluTw/ObIODpW/zy8m9hC4z yX4A== 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=ghmbBGSlG1CCP4nSWA/vaAAmnZwObmtJ64bmXxKvv2Q=; b=LIOFqP3rZSD6snSVJEOJBCGDthlq+Ed7xG8nJfmsVS0omnOJmABqCEGfX4A6HF8dmy icUS3mEGpeqVtnb1wgcDcqvUCK661Ev3S3EA+h29/BCcDhlYkW4OzzF31V7X2FdrEaNJ iyGHK57fwP8LpXKgflfOkaSax8GI8efAu1fGxlXcYNIWCZ41vJmWr2xuaMZFsQlbztyW MV+1LIh06JTHO4MKLvAOa2BFTRP+fplXHLQEGvYRF6FDvM7YtzHr4mC6ET1yXlOTh3xI TuATdV1Wi1c6QeD3rFs2X/5Y/zI6xxtbu+6TIsWU2SmKrkxmVwqP6uXEyDkdKoEtuWiR py/g== 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 we6-20020a170907234600b00883ec4c63e2si11226226ejb.645.2023.02.06.05.52.55; Mon, 06 Feb 2023 05:53:21 -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 S230381AbjBFNwF (ORCPT + 99 others); Mon, 6 Feb 2023 08:52:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229760AbjBFNvc (ORCPT ); Mon, 6 Feb 2023 08:51:32 -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 1358B26CF8 for ; Mon, 6 Feb 2023 05:51:14 -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 1pP1tX-0007Gh-Vh; Mon, 06 Feb 2023 14:50: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 1pP1tV-0034dp-Q0; Mon, 06 Feb 2023 14:50:55 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pP1tV-00DaRT-J6; Mon, 06 Feb 2023 14:50:53 +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 v5 23/23] net: mdio: drop EEE ethtool helpers in favor to linkmode variants Date: Mon, 6 Feb 2023 14:50:50 +0100 Message-Id: <20230206135050.3237952-24-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230206135050.3237952-1-o.rempel@pengutronix.de> References: <20230206135050.3237952-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?1757089996542181781?= X-GMAIL-MSGID: =?utf-8?q?1757089996542181781?= 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_cap1_mod_linkmode_t linkmode_to_mii_eee_cap1_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 6776eea770fa..082a9115b5e2 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