From patchwork Wed Feb 22 05: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: 60347 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp404359wrd; Tue, 21 Feb 2023 21:56:26 -0800 (PST) X-Google-Smtp-Source: AK7set94iFTfNa1fPtM/4sJpj2lWKkmz6PtnTuqJ4G2RDpso800LWzJbkcmpDdehyOuTDu2d3ewf X-Received: by 2002:a17:906:895:b0:8b1:16b3:303e with SMTP id n21-20020a170906089500b008b116b3303emr13780665eje.65.1677045386205; Tue, 21 Feb 2023 21:56:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677045386; cv=none; d=google.com; s=arc-20160816; b=ODtlXDXF6KQfuWpNIBz1TIGs+oYJ1bdbbA24L5nRYq4y1vuYZD8hBoELecVgQsp/O3 u0zhec7TiD/0+TT02HSXvYSITpdRawaFxP+9QJm6mOZgOwq1Lqjzi8Z2QpCIfkUTRPsY oWcJUKkINzqTm+q3kY/nhhEQ9/vpU4IA1GI+o0Cfc8wLbcZqPnDWwjFV084/KbjJp0iT Tqh5/a9QPThADVlF+afOkseyJhiQpUDduYRlfcY04gboX+YE70HRcrUGSPGJcatnVpIG QLCGC84xlEXMiGP6B6oZJ+vrFQbZtwXhayvJVGh96rI7OlEgSoxUxOVM//RwBE/DD5Si 9SGg== 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=Gre07gQiz8+z6Mc7fnsD2oUh7yE98o8u2dbgKwM8IgI=; b=eQIWUOEschBXOatSFfqZWrWbj9PWPYPQYZY3eahz1JCEvsgWf8125bV+TvUDRdRruw lHALNXWfJs5aasifzlNLtNoTnqRrBwCBiLZCIzNPMEJKlifmoYYZJWs7yptfzgoHVud+ CymaQahFjx7i98e5GJ8QSpFaJROHLovZotwvseY6Aov+LYtI/ckrLA7DZSV9j5EL8xek tCi/3/WIBMFbLOUBFsBsphZfzvqbSyyAiOvkOyxFieunSrnVV0IdBVdCHd1yp5oGxbiq V5QG+MPTIsbWD3Yq/qmA+cNVSGmccm9LoRiOPovLPkmN6vGBNjnWwG/jEz8GNzFEVtq6 2Bog== 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 ft31-20020a170907801f00b008e91f8bb6d4si6952ejc.591.2023.02.21.21.56.03; Tue, 21 Feb 2023 21:56: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 S230454AbjBVFvK (ORCPT + 99 others); Wed, 22 Feb 2023 00:51:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230457AbjBVFvD (ORCPT ); Wed, 22 Feb 2023 00:51:03 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D9FE36083 for ; Tue, 21 Feb 2023 21:51:02 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pUi1h-00060A-7B; Wed, 22 Feb 2023 06:50:49 +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 1pUi1d-006efb-FZ; Wed, 22 Feb 2023 06:50:46 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pUi1d-000Tb9-GW; Wed, 22 Feb 2023 06:50:45 +0100 From: Oleksij Rempel To: Andrew Lunn , Heiner Kallweit , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel test robot , Russell King , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Russell King Subject: [PATCH net v3 1/4] net: phy: c45: use "supported_eee" instead of supported for access validation Date: Wed, 22 Feb 2023 06:50:40 +0100 Message-Id: <20230222055043.113711-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230222055043.113711-1-o.rempel@pengutronix.de> References: <20230222055043.113711-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?1758509542481214172?= X-GMAIL-MSGID: =?utf-8?q?1758509542481214172?= Make sure we use proper variable to validate access to potentially not supported registers. Otherwise we will get false read/write errors. Reported-by: kernel test robot Link: https://lore.kernel.org/oe-lkp/202302211644.c12d19de-yujie.liu@intel.com Fixes: 022c3f87f88e ("net: phy: add genphy_c45_ethtool_get/set_eee() support") Signed-off-by: Oleksij Rempel Reviewed-by: Russell King (Oracle) --- drivers/net/phy/phy-c45.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index f9b128cecc3f..f23cce2c5199 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -674,7 +674,7 @@ 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)) { + if (linkmode_intersects(phydev->supported_eee, PHY_EEE_CAP1_FEATURES)) { val = linkmode_to_mii_eee_cap1_t(adv); /* In eee_broken_modes are stored MDIO_AN_EEE_ADV specific raw @@ -726,7 +726,7 @@ static int genphy_c45_read_eee_adv(struct phy_device *phydev, { int val; - if (linkmode_intersects(phydev->supported, PHY_EEE_CAP1_FEATURES)) { + if (linkmode_intersects(phydev->supported_eee, PHY_EEE_CAP1_FEATURES)) { /* IEEE 802.3-2018 45.2.7.13 EEE advertisement 1 * (Register 7.60) */ @@ -762,7 +762,7 @@ static int genphy_c45_read_eee_lpa(struct phy_device *phydev, { int val; - if (linkmode_intersects(phydev->supported, PHY_EEE_CAP1_FEATURES)) { + if (linkmode_intersects(phydev->supported_eee, PHY_EEE_CAP1_FEATURES)) { /* IEEE 802.3-2018 45.2.7.14 EEE link partner ability 1 * (Register 7.61) */ From patchwork Wed Feb 22 05: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: 60345 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp403250wrd; Tue, 21 Feb 2023 21:53:35 -0800 (PST) X-Google-Smtp-Source: AK7set9ai6od2UHkbNOKzIPxaAYK9CokErCYmDH0A0mpBlrbWL88KRg+JIvZFcp6qQCLDnkWemHw X-Received: by 2002:a17:906:914f:b0:878:4bc1:dd19 with SMTP id y15-20020a170906914f00b008784bc1dd19mr13174718ejw.52.1677045215237; Tue, 21 Feb 2023 21:53:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677045215; cv=none; d=google.com; s=arc-20160816; b=mXmpXDXfLTA0D++DmyS655uaXbhi/Q7re2EzA7aFsa9gme+3m7y7RMpr9oGgSc4fnF rM2I+dVyevpmAadoZ5ZLbGYCJnlRC/2ulW4jwzUOorQp75u30UVUnTHJfB2ytvkxXdlC MA9wizFQZHIgYCUTJp9EFL6bBl2ktPyjzbjTPlwUefgD790F9P/9Tj1nZfa+tbYixan9 ho2cY6djk7hcpGumr/U2kaMeo5VAiGdqyMwBW6kLUf5im9ROjCYRAcn5ByL0otPTmVyg YajykDI+ryzz0784bZI8kTodikhhhLkeqj0234y2b6cxWjEu+afA+k+nrZlQVOQMaRXz AXNA== 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=dPGv7FxJl+3+2pQLtzHC0ws9djGd01kyFrtayho+ly8=; b=hU9EAi9qz3fFnIubWMfL37/X3kC6nf/8SNxSbul0AW2gJ5pr/9lDKALneuVUzzpr5K QbIQMYN0TPOr+vVjW2MziLSSLiLQAa0FVIuCr7Sqp3tUb37svfXbLkhRtthdNjvYd6cg /yv2siqXzr2rVJFw9DN76cIqGAdyJgR+LlFvACoIzamlwlT2nK9su8zTZWRBEN/UbefO aZ8vK0KhuwQJyisTlEMIxA9J7G3xACo26nsGrQ0nYSnkoe0K6iPmoT0UbV2M9DxYgjsI 8jjwCNh3NW1LN5IV4eiZV8V9ngaUZil/6PFUm/TRuSHeP6VzZm4iPGZ/sPVYymANIAqg Po9A== 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 f13-20020a170906738d00b008dbc41587a7si6294805ejl.121.2023.02.21.21.53.12; Tue, 21 Feb 2023 21:53:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230388AbjBVFvE (ORCPT + 99 others); Wed, 22 Feb 2023 00:51:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49870 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230223AbjBVFvA (ORCPT ); Wed, 22 Feb 2023 00:51:00 -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 AF8F234023 for ; Tue, 21 Feb 2023 21:50:57 -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 1pUi1g-000605-6W; Wed, 22 Feb 2023 06:50:48 +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 1pUi1d-006efT-63; Wed, 22 Feb 2023 06:50:46 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pUi1d-000TbI-HG; Wed, 22 Feb 2023 06:50:45 +0100 From: Oleksij Rempel To: Andrew Lunn , Heiner Kallweit , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , Russell King , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Russell King Subject: [PATCH net v3 2/4] net: phy: c45: add genphy_c45_an_config_eee_aneg() function Date: Wed, 22 Feb 2023 06:50:41 +0100 Message-Id: <20230222055043.113711-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230222055043.113711-1-o.rempel@pengutronix.de> References: <20230222055043.113711-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?1758509363566742281?= X-GMAIL-MSGID: =?utf-8?q?1758509363566742281?= Add new genphy_c45_an_config_eee_aneg() function and replace some of genphy_c45_write_eee_adv() calls. This will be needed by the next patch. Signed-off-by: Oleksij Rempel Reviewed-by: Russell King (Oracle) --- drivers/net/phy/phy-c45.c | 11 ++++++++++- drivers/net/phy/phy_device.c | 2 +- include/linux/phy.h | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index f23cce2c5199..784868e818a7 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -262,7 +262,7 @@ int genphy_c45_an_config_aneg(struct phy_device *phydev) linkmode_and(phydev->advertising, phydev->advertising, phydev->supported); - ret = genphy_c45_write_eee_adv(phydev, phydev->supported_eee); + ret = genphy_c45_an_config_eee_aneg(phydev); if (ret < 0) return ret; else if (ret) @@ -858,6 +858,15 @@ int genphy_c45_read_eee_abilities(struct phy_device *phydev) } EXPORT_SYMBOL_GPL(genphy_c45_read_eee_abilities); +/** + * genphy_c45_an_config_eee_aneg - configure EEE advertisement + * @phydev: target phy_device struct + */ +int genphy_c45_an_config_eee_aneg(struct phy_device *phydev) +{ + return genphy_c45_write_eee_adv(phydev, phydev->supported_eee); +} + /** * 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 71becceb8764..570a5803f9c2 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -2231,7 +2231,7 @@ int __genphy_config_aneg(struct phy_device *phydev, bool changed) { int err; - err = genphy_c45_write_eee_adv(phydev, phydev->supported_eee); + err = genphy_c45_an_config_eee_aneg(phydev); if (err < 0) return err; else if (err) diff --git a/include/linux/phy.h b/include/linux/phy.h index 727bff531a14..19d83e112beb 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1765,6 +1765,7 @@ int genphy_c45_ethtool_get_eee(struct phy_device *phydev, 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); +int genphy_c45_an_config_eee_aneg(struct phy_device *phydev); /* Generic C45 PHY driver */ extern struct phy_driver genphy_c45_driver; From patchwork Wed Feb 22 05: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: 60346 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp403649wrd; Tue, 21 Feb 2023 21:54:42 -0800 (PST) X-Google-Smtp-Source: AK7set/1g5DcoOmljxObE3W4pp+uzVkjtdS0yHW/n0xeYSrE/x4oLhFS6GHNz/Ouo+e0ZNIk3M7/ X-Received: by 2002:a05:6402:b11:b0:4ac:beba:dc89 with SMTP id bm17-20020a0564020b1100b004acbebadc89mr9850034edb.38.1677045282335; Tue, 21 Feb 2023 21:54:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677045282; cv=none; d=google.com; s=arc-20160816; b=S2GVe1b6fKS40zwNtiZA7EKUJHyoBD8twm9hj+LIFLG2bG5kBuqiPX/WhVikgi8if2 4D2ccUgcllvZSB4HRsGw8irIq/AC2gx0lkxdBm9fhw+s6I7AxN4YILs04+GzOh89jpEZ LIEda92ELId7yhrFAa73yafXjhEVaDLu2zLl1NPRdtJiY+sIpU2mRlMMArVqu2zs76rF hmm0ST1VDUOnaHRZHcavwGadro97skiGk/KVjZU9H6V+AA9sysdsViMivk+SaEknWBwE hVl05PJHDyGVQC9UJjPwcDK/H0NMLCv+tZoomJoyrL3eOV8ubPqVYnj9FXoccREUViuj qkVQ== 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=eOdeRPk8zTKEwoGvWQlyqzfET2SstrervD/e41LjfBA=; b=fyV1sihuWMmrRs/C+cC42wTPCShOCzM8QbMKVVhuzowwRX7BSt61kbh2jaT4PQ2O8L SF1693v9WAId6BShwPiVk2x9l/QGOC7uhJ0HZIX/6XPHS5Vmt6tyxqvCdZ2NBKGPd083 xlU+3mx2wdf4R9BCo3PdGOarwpMf5XnE+wx1rCt6Kpz+9uMrIw17lk6YSUz0MowWidxb 2PygTMzR8HoEqRP76aDAOjMk21Z2HM5HPTssbhy0byOXqmeSh+MYkQaKWFC5jBF9kaBo S/dPdkAr+ZAAyxLFbTBSvHrkHb72fSm8Etn2fthsbDkb1/TWjwJvxF/xZgzGyeX0eKWr vQXg== 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 f23-20020a056402151700b004ace3a00b69si2118515edw.331.2023.02.21.21.54.19; Tue, 21 Feb 2023 21:54:42 -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 S230480AbjBVFvI (ORCPT + 99 others); Wed, 22 Feb 2023 00:51:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230285AbjBVFvA (ORCPT ); Wed, 22 Feb 2023 00:51:00 -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 AF7D632CF4 for ; Tue, 21 Feb 2023 21:50:57 -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 1pUi1g-00060E-6R; Wed, 22 Feb 2023 06:50:48 +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 1pUi1d-006eff-TG; Wed, 22 Feb 2023 06:50:47 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pUi1d-000TbR-Hv; Wed, 22 Feb 2023 06:50:45 +0100 From: Oleksij Rempel To: Andrew Lunn , Heiner Kallweit , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Russell King Subject: [PATCH net v3 3/4] net: phy: do not force EEE support Date: Wed, 22 Feb 2023 06:50:42 +0100 Message-Id: <20230222055043.113711-4-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230222055043.113711-1-o.rempel@pengutronix.de> References: <20230222055043.113711-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?1758509434152725098?= X-GMAIL-MSGID: =?utf-8?q?1758509434152725098?= With following patches: commit 9b01c885be36 ("net: phy: c22: migrate to genphy_c45_write_eee_adv()") commit 5827b168125d ("net: phy: c45: migrate to genphy_c45_write_eee_adv()") we set the advertisement to potentially supported values. This behavior may introduce new regressions on systems where EEE was disabled by default (BIOS or boot loader configuration or by other ways.) At same time, with this patches, we would overwrite EEE advertisement configuration made over ethtool. To avoid this issues, we need to cache initial and ethtool advertisement configuration and store it for later use. Fixes: 9b01c885be36 ("net: phy: c22: migrate to genphy_c45_write_eee_adv()") Fixes: 5827b168125d ("net: phy: c45: migrate to genphy_c45_write_eee_adv()") Fixes: 022c3f87f88e ("net: phy: add genphy_c45_ethtool_get/set_eee() support") Signed-off-by: Oleksij Rempel Reviewed-by: Russell King (Oracle) --- drivers/net/phy/phy-c45.c | 24 +++++++++++++++++------- drivers/net/phy/phy_device.c | 19 +++++++++++++++++++ include/linux/phy.h | 5 +++++ 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index 784868e818a7..8717c122e2f3 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -721,8 +721,7 @@ int genphy_c45_write_eee_adv(struct phy_device *phydev, unsigned long *adv) * @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 genphy_c45_read_eee_adv(struct phy_device *phydev, unsigned long *adv) { int val; @@ -864,7 +863,13 @@ EXPORT_SYMBOL_GPL(genphy_c45_read_eee_abilities); */ int genphy_c45_an_config_eee_aneg(struct phy_device *phydev) { - return genphy_c45_write_eee_adv(phydev, phydev->supported_eee); + if (!phydev->eee_enabled) { + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv) = {}; + + return genphy_c45_write_eee_adv(phydev, adv); + } + + return genphy_c45_write_eee_adv(phydev, phydev->advertising_eee); } /** @@ -1430,17 +1435,22 @@ EXPORT_SYMBOL(genphy_c45_ethtool_get_eee); 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; + ethtool_convert_legacy_u32_to_link_mode(phydev->advertising_eee, + data->advertised); else - linkmode_copy(adv, phydev->supported_eee); + linkmode_copy(phydev->advertising_eee, + phydev->supported_eee); + + phydev->eee_enabled = true; + } else { + phydev->eee_enabled = false; } - ret = genphy_c45_write_eee_adv(phydev, adv); + ret = genphy_c45_an_config_eee_aneg(phydev); if (ret < 0) return ret; if (ret > 0) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 570a5803f9c2..3f8a64fb9d71 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -3141,6 +3141,25 @@ static int phy_probe(struct device *dev) of_set_phy_supported(phydev); phy_advertise_supported(phydev); + /* Get PHY default EEE advertising modes and handle them as potentially + * safe initial configuration. + */ + err = genphy_c45_read_eee_adv(phydev, phydev->advertising_eee); + if (err) + return err; + + /* There is no "enabled" flag. If PHY is advertising, assume it is + * kind of enabled. + */ + phydev->eee_enabled = !linkmode_empty(phydev->advertising_eee); + + /* Some PHYs may advertise, by default, not support EEE modes. So, + * we need to clean them. + */ + if (phydev->eee_enabled) + linkmode_and(phydev->advertising_eee, phydev->supported_eee, + phydev->advertising_eee); + /* Get the EEE modes we want to prohibit. We will ask * the PHY stop advertising these mode later on */ diff --git a/include/linux/phy.h b/include/linux/phy.h index 19d83e112beb..36bf0bbc8efa 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -575,6 +575,8 @@ struct macsec_ops; * @advertising: Currently advertised linkmodes * @adv_old: Saved advertised while power saving for WoL * @supported_eee: supported PHY EEE linkmodes + * @advertising_eee: Currently advertised EEE linkmodes + * @eee_enabled: Flag indicating whether the EEE feature is enabled * @lp_advertising: Current link partner advertised linkmodes * @host_interfaces: PHY interface modes supported by host * @eee_broken_modes: Energy efficient ethernet modes which should be prohibited @@ -681,6 +683,8 @@ struct phy_device { __ETHTOOL_DECLARE_LINK_MODE_MASK(adv_old); /* used for eee validation */ __ETHTOOL_DECLARE_LINK_MODE_MASK(supported_eee); + __ETHTOOL_DECLARE_LINK_MODE_MASK(advertising_eee); + bool eee_enabled; /* Host supported PHY interface types. Should be ignored if empty. */ DECLARE_PHY_INTERFACE_MASK(host_interfaces); @@ -1766,6 +1770,7 @@ 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); int genphy_c45_an_config_eee_aneg(struct phy_device *phydev); +int genphy_c45_read_eee_adv(struct phy_device *phydev, unsigned long *adv); /* Generic C45 PHY driver */ extern struct phy_driver genphy_c45_driver; From patchwork Wed Feb 22 05: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: 60344 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp403193wrd; Tue, 21 Feb 2023 21:53:25 -0800 (PST) X-Google-Smtp-Source: AK7set9NkynoSgImxlqsZZE//zooOm6SPY9GhZDhPpYIDmXwM8bepKwHnYUHfy3VYOtZKWIhMYJk X-Received: by 2002:aa7:d794:0:b0:4ad:7224:ce9f with SMTP id s20-20020aa7d794000000b004ad7224ce9fmr7825855edq.17.1677045205542; Tue, 21 Feb 2023 21:53:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677045205; cv=none; d=google.com; s=arc-20160816; b=knv2itf0rqaHAyzFIA8+BCMD2Dr40fBaq6SJHS44Ng2tFkb9uyfLZqmq1A/dzKdnnL xkd+sU38KUis14uxBRWCFQLLr+FC8OdbKXSvVkK449V1EjPWX5XDz9zdu4DnollFdwKN nmdC2m3OcOqBFgBbB4g7RWwju0SHpGEORTeV6omDb/1qSb0j/AJgOwPfT7XJDtCvS9HE i+6X3B7XjAd/5zLYx+4IqpGaF01dait6Dqv5T8macSCtVbq1D5jZ/MYlNW6vK4JlPjNj oj7vJ5D+laXaqMu2SP2UYEaxV/Zxf7NAjW0mZFyJKL1HMwCbrVFuxV9K0vdm1KcF85iD imHg== 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=f4vPMviV3M3VwRNqsBdABgG0nNhiW4FSVpJMOMDYPL0=; b=avYRFKFLtHeFN6RC77j9AgsqtgUpWuJyMxnDB/M6kDR6sLlqPSVHwuu6MMfR0aprFu /dyO3iwQoz13hVM6eXgcwPVNwT7sa7YA8lU4gsSdY8wbFI0YUpq2a+bOdh9zAJJjflo4 Cv+KSe3MKYIr8ADItjiKaLomVVPbBvaw0di3nXB53inTmiFiA7EX5kkLV/+Uv3f/sEGJ /VbejxWiGSk0YBcm37FVmNJPvsn+P34NllwQI6kIeUQBp6ZHYi2jcy0GROj0cXKRKgPN mzHQxXdV+IQH/LDfX49kOlu1PeheWUxlF04OakQafvRh46QeCuN47rMr9W+6FIxFQ5BX Iirg== 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 u21-20020aa7d555000000b004ab49a10653si127226edr.584.2023.02.21.21.53.02; Tue, 21 Feb 2023 21:53:25 -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 S230297AbjBVFvA (ORCPT + 99 others); Wed, 22 Feb 2023 00:51:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49866 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229561AbjBVFu7 (ORCPT ); Wed, 22 Feb 2023 00:50:59 -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 AF4EE311E1 for ; Tue, 21 Feb 2023 21:50:57 -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 1pUi1g-000606-6Q; Wed, 22 Feb 2023 06:50:48 +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 1pUi1d-006efV-80; Wed, 22 Feb 2023 06:50:46 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pUi1d-000Tba-IY; Wed, 22 Feb 2023 06:50:45 +0100 From: Oleksij Rempel To: Andrew Lunn , Heiner Kallweit , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Russell King Subject: [PATCH net v3 4/4] net: phy: c45: genphy_c45_ethtool_set_eee: validate EEE link modes Date: Wed, 22 Feb 2023 06:50:43 +0100 Message-Id: <20230222055043.113711-5-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230222055043.113711-1-o.rempel@pengutronix.de> References: <20230222055043.113711-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?1758509353469192612?= X-GMAIL-MSGID: =?utf-8?q?1758509353469192612?= Currently, it is possible to let some PHYs to advertise not supported EEE link modes. So, validate them before overwriting existing configuration. Signed-off-by: Oleksij Rempel Reviewed-by: Russell King (Oracle) --- drivers/net/phy/phy-c45.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index 8717c122e2f3..3813b86689d0 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -1438,12 +1438,23 @@ int genphy_c45_ethtool_set_eee(struct phy_device *phydev, int ret; if (data->eee_enabled) { - if (data->advertised) + if (data->advertised) { + __ETHTOOL_DECLARE_LINK_MODE_MASK(adv); + + ethtool_convert_legacy_u32_to_link_mode(adv, + data->advertised); + linkmode_andnot(adv, adv, phydev->supported_eee); + if (!linkmode_empty(adv)) { + phydev_warn(phydev, "At least some EEE link modes are not supported.\n"); + return -EINVAL; + } + ethtool_convert_legacy_u32_to_link_mode(phydev->advertising_eee, data->advertised); - else + } else { linkmode_copy(phydev->advertising_eee, phydev->supported_eee); + } phydev->eee_enabled = true; } else {