From patchwork Fri Jan 20 09:20:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 46239 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp97778wrn; Fri, 20 Jan 2023 01:22:55 -0800 (PST) X-Google-Smtp-Source: AMrXdXtkcsGz14WkLd8YZ8kyWT2ejOFESfbYlfO9MbiZzRNB+rKxgj21iRj9DNF1HhrtZcezNKxB X-Received: by 2002:a17:907:d094:b0:7c9:6e0e:1427 with SMTP id vc20-20020a170907d09400b007c96e0e1427mr11391956ejc.6.1674206575321; Fri, 20 Jan 2023 01:22:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674206575; cv=none; d=google.com; s=arc-20160816; b=qdT2mmcS5TK0z2O5Jbw7NdBWE49OfC75KN/ygRzsFi5EYoqPLB73znA3Dn2rGvyHED BA1G5Pv+12sB1jAGoYHvTqyglMzFa5GK0ZglYNxb1uoPgRu2FUX4Q1c+fYTjT3Pu1H4X 4PoVtPd0X0VMFzp50lM3tvrGBNYcAbn4UcdEJMDRKi8HrfDXMKzKC8l6nc5jGBydUDYq Wn2XRWdQmx+i3EglAuU+g+lKOqg8oVe//XsY212/QROEEK48FjHsQ02Xi1hOxUZKAhE3 Pfp9iSdLsuELyJj5qPba6ug4bR4nJ/UMUJuTWhJ0p/JDTfHGLnGKL34JitEC4iv1FKjX 2MoA== 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=+c60qu/wXK+ue6/ny5bjr5vtx+ldf3U/DmjEBvaGM38=; b=cTyTtyWbZ/KJzYS5tK7NeU5AcHguf8LSUkOVtu+rOntJvH3fVV8sNfWFXjC7Wogugn RnsOIePOVf6xDyI+8DE+FLEDq7JrNe12z3leDSlJ+W0Zcw/l1Ijwh3PZ0vCJVGWak4RD lrhdWPsAuujcarls5zKN0uDLVUjvF3YP7UsfT7mV+C0MbxTpiKAdxU9wcOeW0aL8G1Re /3HEwrTGYwd0NDnTNrIqGT0YI/wIEJnqnnIeNwH3cDUlpAkEgbSbh0UIz/ZxxMeBSuw9 q+F3WcPttir5DNZXp836uHbyMR/TRkePScAZGB7L1zkd/JCKoP/eEzCoypiwnS7xqtu1 O7lQ== 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 hu8-20020a170907a08800b0087787cec039si3144492ejc.311.2023.01.20.01.22.31; Fri, 20 Jan 2023 01:22: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 S230213AbjATJVz (ORCPT + 99 others); Fri, 20 Jan 2023 04:21:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37024 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230285AbjATJVe (ORCPT ); Fri, 20 Jan 2023 04:21: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 267799DCB1 for ; Fri, 20 Jan 2023 01:21:11 -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 1pIna3-0002yL-Dz; Fri, 20 Jan 2023 10:21:03 +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 1pIna2-007L93-3U; Fri, 20 Jan 2023 10:21:02 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pIna0-001STi-UG; Fri, 20 Jan 2023 10:21:00 +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 Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com Subject: [PATCH net-next v2 1/4] net: phy: add driver specific get/set_eee support Date: Fri, 20 Jan 2023 10:20:56 +0100 Message-Id: <20230120092059.347734-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230120092059.347734-1-o.rempel@pengutronix.de> References: <20230120092059.347734-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?1755532834013854520?= X-GMAIL-MSGID: =?utf-8?q?1755532834013854520?= 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 3378ca4f49b6..57e125a99414 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1583,6 +1583,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); + /* Get Supported EEE */ val = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); if (val < 0) @@ -1622,6 +1625,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); + /* Get Supported EEE */ cap = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); if (cap < 0) diff --git a/include/linux/phy.h b/include/linux/phy.h index b3cf1e08e880..9ad6c3f5c865 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1055,6 +1055,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 Fri Jan 20 09:20:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 46237 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp97726wrn; Fri, 20 Jan 2023 01:22:46 -0800 (PST) X-Google-Smtp-Source: AMrXdXsM3plNR3pL0i3T8ntVkzQK5P4ZbIWIBuUxeprcwHOgxEh3I8/1hrINkv0BV+yuOCbufucr X-Received: by 2002:a17:907:9620:b0:871:2051:6377 with SMTP id gb32-20020a170907962000b0087120516377mr19416799ejc.60.1674206566197; Fri, 20 Jan 2023 01:22:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674206566; cv=none; d=google.com; s=arc-20160816; b=unCJdfSTKcMJq6/Ycp0NBplEkLMHGfd8hc002TfqBvvUNS4fvKkbIOBRsp60+aQs9c J5NfV5LmZK7f0dLFXqthzOBQIpQkMXuwqyDgvEm+ObcSRmBq6sYxMxfGpo1GM5zz1OCX QovRudbMUsiRNpQZ6rQ93weidZKC3oQ5eu3xcvsHQ6NG37jvb4hAJUuG5cMgLyi9Ys5r t+QVrSl4vwcSqAWf/UiNQdX87B/X2p/TY/I6wsGT+Ks83aZoxODwbSt5OVKpxyfdibiv CqPUVEBofbW/004a//svpoM3E9J8xT5quACh65WTiSjRuVJ+o8u7wasaTuwh4WbtSz0/ +fOQ== 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=7zfpvkLrhfFl8adalLEWvORAtKOBopBsvfQUZomjy+0=; b=prMx9B4FX/qN0qT9w87GDVobSLdbJZB51CpaF5cI5Zu7tzlmevH17L0lW6vcDThiGW Fwapt4gxkVgNZSV4oXVo8JlV0S27C7fGgEFFPN4IPeqIXA/6TQE5fjQrgQvGQuLsCUjI rOUmXUF7qVIkWmS98nfHhHXaL1u0DRqWKKhN/FjtayRt5+mX0tBnDYJunzfN8oUJ2kyR mcfR+WZiXiqHklEDGxy7rwm6vhoS+fE6z+enWlync5dFMAhqsREjWsaNSGFMrSHCEGQQ Yl/mGSlejT8xWV2+XNQAM161cJmiIEuvSJz5UL8IE77YLG1XfclOq2gcSskGn/ABuJw8 ulnw== 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 hq15-20020a1709073f0f00b008728cb7cdd2si11769281ejc.30.2023.01.20.01.22.22; Fri, 20 Jan 2023 01:22:46 -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 S230333AbjATJVv (ORCPT + 99 others); Fri, 20 Jan 2023 04:21:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37446 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230291AbjATJVf (ORCPT ); Fri, 20 Jan 2023 04:21: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 850CA95776 for ; Fri, 20 Jan 2023 01:21:11 -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 1pIna3-0002yG-E4; Fri, 20 Jan 2023 10:21:03 +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 1pIna1-007L8x-Ld; Fri, 20 Jan 2023 10:21:01 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pIna0-001STr-V6; Fri, 20 Jan 2023 10:21:00 +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 Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com Subject: [PATCH net-next v2 2/4] net: phy: micrel: add EEE configuration support for KSZ9477 variants of PHYs Date: Fri, 20 Jan 2023 10:20:57 +0100 Message-Id: <20230120092059.347734-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230120092059.347734-1-o.rempel@pengutronix.de> References: <20230120092059.347734-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?1755532824569412628?= X-GMAIL-MSGID: =?utf-8?q?1755532824569412628?= KSZ9477 variants of PHYs are not completely compatible with generic phy_ethtool_get/set_eee() handlers. For example MDIO_PCS_EEE_ABLE acts like a mirror of MDIO_AN_EEE_ADV register. If MDIO_AN_EEE_ADV set to 0, MDIO_PCS_EEE_ABLE will be 0 too. It means, if we do "ethtool --set-eee lan2 eee off", we won't be able to enable it again. With this patch, instead of reading MDIO_PCS_EEE_ABLE register, the driver will provide proper abilities. Signed-off-by: Oleksij Rempel --- drivers/net/phy/micrel.c | 81 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index d5b80c31ab91..dca61a73c144 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1370,6 +1370,85 @@ static int ksz9131_config_aneg(struct phy_device *phydev) return genphy_config_aneg(phydev); } +static void ksz9477_get_eee_caps(struct phy_device *phydev, + struct ethtool_eee *data) +{ + /* At least on KSZ8563 (which has same PHY_ID as KSZ9477), the + * MDIO_PCS_EEE_ABLE register is a mirror of MDIO_AN_EEE_ADV register. + * So, we need to provide this information by driver. + */ + data->supported = SUPPORTED_100baseT_Full; + + /* KSZ8563 is able to advertise not supported MDIO_EEE_1000T. + * We need to test if the PHY is 1Gbit capable. + */ + if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, + phydev->supported)) + data->supported |= SUPPORTED_1000baseT_Full; +} + +static int ksz9477_get_eee(struct phy_device *phydev, struct ethtool_eee *data) +{ + int val; + + ksz9477_get_eee_caps(phydev, data); + + /* 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; +} + +static int ksz9477_set_eee(struct phy_device *phydev, struct ethtool_eee *data) +{ + int old_adv, adv = 0, ret; + + ksz9477_get_eee_caps(phydev, data); + + old_adv = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV); + if (old_adv < 0) + return old_adv; + + if (data->eee_enabled) { + if (!data->advertised) + adv = ethtool_adv_to_mmd_eee_adv_t(data->supported); + else + adv = ethtool_adv_to_mmd_eee_adv_t(data->advertised & + data->supported); + /* 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; +} + #define KSZ8873MLL_GLOBAL_CONTROL_4 0x06 #define KSZ8873MLL_GLOBAL_CONTROL_4_DUPLEX BIT(6) #define KSZ8873MLL_GLOBAL_CONTROL_4_SPEED BIT(4) @@ -3422,6 +3501,8 @@ static struct phy_driver ksphy_driver[] = { .handle_interrupt = kszphy_handle_interrupt, .suspend = genphy_suspend, .resume = genphy_resume, + .get_eee = ksz9477_get_eee, + .set_eee = ksz9477_set_eee, } }; module_phy_driver(ksphy_driver); From patchwork Fri Jan 20 09:20:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 46236 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp97715wrn; Fri, 20 Jan 2023 01:22:44 -0800 (PST) X-Google-Smtp-Source: AMrXdXtv+DCUka73LU8nFyU8SdIRI3VDTBolKS2cqRYwtWrn6iLCj4Lzr/qlurlVtyteJpLcARLB X-Received: by 2002:a17:906:dfe9:b0:84d:378b:8820 with SMTP id lc9-20020a170906dfe900b0084d378b8820mr29202224ejc.18.1674206564611; Fri, 20 Jan 2023 01:22:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674206564; cv=none; d=google.com; s=arc-20160816; b=uZfKPVHYsNjEviNEhVyDd0YA4qbh6rWlib3r6HT5hQxjy5cCZITWfdlfdn6VDhASjx zPZCt/uM+EE/ueqJwZ2csx2vG6MjeOHPR8PgC1rCfriLhoXZnIbqmgD9NdWpXO5VZAyo aTWkUcCK5tqMSxkLi/a6s6ZRHd8+PlChLk4P978e7OWj9tdPMTsUdAgsQmXfzMX5w3/J uNZHXj6MQYJbKvOhq2kd7L7IlfRkU9OuXNBdKCpJdR0VThxy0oOGfuA4OG5H8BDlKJH4 ZLyieL8o6gG+X1Gw5NTBdnDDCz4DMnL+u0DhBPHZKp3eEpSH8Sdz7IYewI1q8wiS50OF 47wQ== 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=wvcPm/U48fVhJ0G2hTkkBsis72lkoxoq9Q0tTK8jLow=; b=OQg//cWi8BC/SjSfGD4n+SBlNdgsUM1Sya/RCbblluO9rVsSMxxg6hHNhYCUDUQu9M RadrQsAvx3b8c4AV0y+jMZenLEdVv7+EKBIwzK0QM2MpqXql0aGqmT3SSNTRhWbQuiJ3 2omWf4uw5vcAvMPA0x5SnjrmLuaoGxkPYeRxEscnPy5GXym1YUmqKkBsB8nqh6/0aRCe wUQiGO07tblMwCTIEaa5hLowe1gDNY0kgRnwB6DkfBQjNR8HLouPdxt2VdC12ITsDVZm pvX+vjJCmiyc4eiQde0DxOLlnrtzRSY+eIFfgls5d/GSg2q9AKdxvvNwDrhCvRFJQpIX /pJA== 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 hc18-20020a170907169200b00871fccac238si14718858ejc.785.2023.01.20.01.22.21; Fri, 20 Jan 2023 01:22:44 -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 S230304AbjATJVq (ORCPT + 99 others); Fri, 20 Jan 2023 04:21:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230284AbjATJVe (ORCPT ); Fri, 20 Jan 2023 04:21: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 902C79D2A3 for ; Fri, 20 Jan 2023 01:21:11 -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 1pIna3-0002yO-EE; Fri, 20 Jan 2023 10:21:03 +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 1pIna2-007L99-GB; Fri, 20 Jan 2023 10:21:02 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pIna0-001SU0-Vr; Fri, 20 Jan 2023 10:21:00 +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 Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com Subject: [PATCH net-next v2 3/4] net: phy: micrel: disable 1000Mbit EEE support if 1000Mbit is not supported Date: Fri, 20 Jan 2023 10:20:58 +0100 Message-Id: <20230120092059.347734-4-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230120092059.347734-1-o.rempel@pengutronix.de> References: <20230120092059.347734-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?1755532822949308495?= X-GMAIL-MSGID: =?utf-8?q?1755532822949308495?= KSZ8563 is announcing by default 1000Mbit EEE support, but at same time do not supporting 1000Mbit speed. This patch will disable 1000Mbit EEE advertisement if the PHY is not 1000Mbit capable. Signed-off-by: Oleksij Rempel --- drivers/net/phy/micrel.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index dca61a73c144..30fed309250e 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1449,6 +1449,25 @@ static int ksz9477_set_eee(struct phy_device *phydev, struct ethtool_eee *data) return 0; } +static int ksz9477_config_init(struct phy_device *phydev) +{ + int ret; + + /* KSZ8563 is able to advertise not supported MDIO_EEE_1000T. + * We need to test if the PHY is 1Gbit capable and + * clear MDIO_EEE_1000T if needed. + */ + if (!linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, + phydev->supported)) { + ret = phy_clear_bits_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, + MDIO_EEE_1000T); + if (ret) + return ret; + } + + return kszphy_config_init(phydev); +} + #define KSZ8873MLL_GLOBAL_CONTROL_4 0x06 #define KSZ8873MLL_GLOBAL_CONTROL_4_DUPLEX BIT(6) #define KSZ8873MLL_GLOBAL_CONTROL_4_SPEED BIT(4) @@ -3496,7 +3515,7 @@ static struct phy_driver ksphy_driver[] = { .phy_id_mask = MICREL_PHY_ID_MASK, .name = "Microchip KSZ9477", /* PHY_GBIT_FEATURES */ - .config_init = kszphy_config_init, + .config_init = ksz9477_config_init, .config_intr = kszphy_config_intr, .handle_interrupt = kszphy_handle_interrupt, .suspend = genphy_suspend, From patchwork Fri Jan 20 09:20:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 46235 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp97589wrn; Fri, 20 Jan 2023 01:22:21 -0800 (PST) X-Google-Smtp-Source: AMrXdXuwL1weXqls4bg4Yt/if0gBtu3DU2Iu9z/N5iC90QUqIze7Zk7pEs/uFV7vkBA6mAvfrJBU X-Received: by 2002:a17:907:c498:b0:862:1709:a06f with SMTP id tp24-20020a170907c49800b008621709a06fmr11735613ejc.37.1674206540873; Fri, 20 Jan 2023 01:22:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674206540; cv=none; d=google.com; s=arc-20160816; b=0Ot2uHPciFH4KhxseSyM2U4Ngauq8SUq885XapVuv0wbYlgx0rFvc8Q5+iPy8MbYzD 2eO64s+NIVRA9ry8jCQ5Zk8tz1nDoeZbP/k6NaO5BZiamXvkCowdMreFLymLlvNz5OIp 7H1cUpPJxX2xqi74dg04JRkjih9q63A2wF7oJdqhbMiIMr5qVLE8Q2XldXe4YbLEu89z woL5jGE1JhC5qJKRZSzy+mmaIQzrhgwazY4GQ52fJrq2VhaGYMpRS8LD1U64PeZJCVey 6Ihga7GsWDFc8vYycxIQ03oXUhGu6quQcpwj9kG9OLvtj4YJ38ggb+qJVhWvSJ7DG4u6 bu4A== 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=sRewExaJYO5J9rPtU6PAS30GDIB1ngdlxtahlS4Y4rY=; b=MyHTT8nY9CHjFGuN9OBvc5hUQxmb+hCl5myv0nQE/ZBTqQ2JWb1idSU384aEwrBzUx MnH+/M4AcHMBKOOFLo4Fu7hnuxm21Dn/m1H/D2dm18yQLpHkfIkNlYlaXCvohlK+M17V sw0u3i0WAoNPzWjAmGtBR5YGXoGMJ534gw248hQIOvL8H9ybEeuHYm7esmaxnJZRD2PL qKBwtLqFUK6ZFX6iXQuiDwWnLvyJjq443pged8mex3B5fcyd/cwcN9KshR0ZRKbzhWp8 RIrwF7chQ1iXSRitOhHbF/hAFGhv/Q8Qb4DjYpRoBOBPdLA7XAdQR+AdOxNBngV6SJ2M hkXQ== 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 hg6-20020a1709072cc600b0086e4b1b433fsi21329208ejc.802.2023.01.20.01.21.57; Fri, 20 Jan 2023 01:22:20 -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 S230254AbjATJVi (ORCPT + 99 others); Fri, 20 Jan 2023 04:21:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230252AbjATJV1 (ORCPT ); Fri, 20 Jan 2023 04:21: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 049419B12D for ; Fri, 20 Jan 2023 01:21: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 1pIna3-0002yK-Da; Fri, 20 Jan 2023 10:21:03 +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 1pIna1-007L90-RT; Fri, 20 Jan 2023 10:21:01 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pIna1-001SU9-0H; Fri, 20 Jan 2023 10:21:01 +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 Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com Subject: [PATCH net-next v2 4/4] net: dsa: microchip: enable EEE support Date: Fri, 20 Jan 2023 10:20:59 +0100 Message-Id: <20230120092059.347734-5-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230120092059.347734-1-o.rempel@pengutronix.de> References: <20230120092059.347734-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?1755532798149376601?= X-GMAIL-MSGID: =?utf-8?q?1755532798149376601?= Some of KSZ9477 family switches provides EEE support. To enable it, we just need to register set_mac_eee/set_mac_eee handlers and validate supported chip version and port. Signed-off-by: Oleksij Rempel --- drivers/net/dsa/microchip/ksz_common.c | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 5e1e5bd555d2..2f1f71b3be86 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -2645,6 +2645,39 @@ 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) +{ + return ksz_validate_eee(ds, port); +} + +static int ksz_set_mac_eee(struct dsa_switch *ds, int port, + struct ethtool_eee *e) +{ + return ksz_validate_eee(ds, port); +} + static void ksz_set_xmii(struct ksz_device *dev, int port, phy_interface_t interface) { @@ -3006,6 +3039,8 @@ static const struct dsa_switch_ops ksz_switch_ops = { .port_hwtstamp_set = ksz_hwtstamp_set, .port_txtstamp = ksz_port_txtstamp, .port_rxtstamp = ksz_port_rxtstamp, + .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)