From patchwork Tue Feb 21 05:03: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: 59764 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1685823wrn; Mon, 20 Feb 2023 21:28:33 -0800 (PST) X-Google-Smtp-Source: AK7set+WsgZPo2obivgMdK+cyAa/N5EMFfwxhXLaMI5LlAynB9/ty3EbHwh0Oj2oBoHg8T9MXErl X-Received: by 2002:a17:902:e851:b0:19b:c2d:1222 with SMTP id t17-20020a170902e85100b0019b0c2d1222mr4457952plg.52.1676957313573; Mon, 20 Feb 2023 21:28:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676957313; cv=none; d=google.com; s=arc-20160816; b=YIGQ7Sn30PkblsgfYIwGpAZ/x+X4VdQRusXy2Mk3ZhUiFo3riPKbUZifz9ySfJNpqO GHIWA3FyBmSaRfTP/51b4njbL3LBCCmfQMaJJDP1wjsRqaChCHb113XY0uRRFrJb2e8R KBab4d63btYIUHA+/k9Xa2gMcd6dh09xh4Q2VKZStFcuGhgfTarRbKWzoX0cmKJWGLj4 Wj5cqyWTqa+9smLnnLT/LfkLNxFmh8OYoEOhgZJr7U6lzuRxIzxUPMFRu6pvFqbBy0Re id/uMNt2xcXAcnRpRiFMZipmWvtYDnIE7nme9GmBQP1wCRXDHFKURfD9FAzW80QnOdwa /2dQ== 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=giOd3toHora3wSyWYoA9I2ZF65BstJMjLh/bsPULFt4=; b=SG3F6V/LP1VQrh3GNaPKbkmxWnS+W+Xtpu0MjvzoINokajUrVNkuvkAJMoX3BRQXQa An2la4tO+suRGAgARNyIxmPqUJOM8PF89/lhpkRN4kz/8HDLlStffotvA9Mir2tU19Qa 5jffx21W405fTkJR/+1FRcL4hdO27yzx6Mj+gDs4dRZc/+nDLhiw5OVp3DgtGvU5cXaL yTxZDj/XpHd4fi32Zo3KIX50AdSsabqwbIr7n1O1Njfb6dPyaTj+D+PbDf3GF/IrNW5U 9i1Dtk2S3vXj0YLSKZPvmiwlHBx6FS3Jc6pOpnwaNhcz2cpodYoNzamBKXVMw1m3T7Vl WtFw== 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 p18-20020a170902ebd200b00198c3291944si12376050plg.44.2023.02.20.21.28.20; Mon, 20 Feb 2023 21:28:33 -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 S232507AbjBUFD4 (ORCPT + 99 others); Tue, 21 Feb 2023 00:03:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229626AbjBUFDu (ORCPT ); Tue, 21 Feb 2023 00:03:50 -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 908691E284 for ; Mon, 20 Feb 2023 21:03:47 -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 1pUKoU-0002zy-4I; Tue, 21 Feb 2023 06:03:38 +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 1pUKoR-006PyT-IN; Tue, 21 Feb 2023 06:03:36 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pUKoR-002QNs-Oj; Tue, 21 Feb 2023 06:03:35 +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-next v2 1/4] net: phy: c45: use "supported_eee" instead of supported for access validation Date: Tue, 21 Feb 2023 06:03:31 +0100 Message-Id: <20230221050334.578012-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230221050334.578012-1-o.rempel@pengutronix.de> References: <20230221050334.578012-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?1758417192036632342?= X-GMAIL-MSGID: =?utf-8?q?1758417192036632342?= Make sure we use proper variable to validate access to potentially not supported registers. Otherwise we will get false read/write errors. 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 Tue Feb 21 05:03: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: 59765 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1691113wrn; Mon, 20 Feb 2023 21:46:06 -0800 (PST) X-Google-Smtp-Source: AK7set8E1j/k2IPe8Rdtl75jBDAW/PMztjcDZtFR5zqLa0Di63KmNouWaiLa4XeiYd0UUVd4ugNj X-Received: by 2002:a17:902:f983:b0:19a:8636:9e36 with SMTP id ky3-20020a170902f98300b0019a86369e36mr2627272plb.14.1676958366014; Mon, 20 Feb 2023 21:46:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676958365; cv=none; d=google.com; s=arc-20160816; b=LdCU/xeqxbwN8pDvSUZxXPMxXq7VWWwoXPoe+vVcZGsf2u5MKYqlR7fKJ+f51rhO/b zPITtTyBdN8KQgjRxDaLz6xOBk8wDHU8MZ5pInDLK0dJtkfe87aZosiFly/1zj9/ro0o BgNWm0+AmW4eIVCi863k9U61OLFJwJ9a8G3m5Wx+76H+d0vK6181uClXUJz9hdhjt4Hw yZu6BF3lbv5DiQre9WAg3wIbonn1PrKtGiYM3xR9zIzJewwc0HFyoviRy5UT2sjEWJ8L 9xDc5evyNS9LxF5Q5MoUjHBAwKGZabUD6z+emSgVRSEyPONV+UL2viY6msTJZdKPYWwU a/jQ== 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=R7UmsbPdOwbFa+WfXAB2DMznfEvQv905rVXkh6/A1j8=; b=x7a4qtfEurfShztxRCyQvrxN/mBJU61c5cHLesE46fMo6A6zbaTcC1k6AUQc0GYhlp a1DoASrzGv/g1ZcKtbJdwTdUtVY7kgdm3v6x7+A52tz4yRr6oUSyGR8Creml3tJL0Z9v ffRiBqpfg4GeWJPLuqi0q3R5G+1W47XIvM02uWkZPg5NEM29j1fNosKAj1NLY+7IK6t/ /4O+hVAXwlh0VZxd6/8ze9wq9A0dJZ5iHrKsBZK+i7/FZVhcxKJ8i6bzcUWDoGnql/Qx t5y6v6AjNnexAGOE/d/cUgnGx3Rt91Ucs++2E9F5UN4GX1isVrRvkyrtVPAGLzjcPNnm p7sg== 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-20020a170902c21300b0019644d4246csi11147398pll.418.2023.02.20.21.45.53; Mon, 20 Feb 2023 21:46:05 -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 S233227AbjBUFEN (ORCPT + 99 others); Tue, 21 Feb 2023 00:04:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33140 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231755AbjBUFDv (ORCPT ); Tue, 21 Feb 2023 00:03:51 -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 8F7AB1CAC7 for ; Mon, 20 Feb 2023 21:03:47 -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 1pUKoU-0002zw-4H; Tue, 21 Feb 2023 06:03:38 +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 1pUKoR-006PyR-Hh; Tue, 21 Feb 2023 06:03:36 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pUKoR-002QO1-PJ; Tue, 21 Feb 2023 06:03:35 +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-next v2 2/4] net: phy: c45: add genphy_c45_an_config_eee_aneg() function Date: Tue, 21 Feb 2023 06:03:32 +0100 Message-Id: <20230221050334.578012-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230221050334.578012-1-o.rempel@pengutronix.de> References: <20230221050334.578012-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?1758418295653129876?= X-GMAIL-MSGID: =?utf-8?q?1758418295653129876?= 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 | 12 +++++++++++- drivers/net/phy/phy_device.c | 2 +- include/linux/phy.h | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index f23cce2c5199..904f64818922 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,16 @@ int genphy_c45_read_eee_abilities(struct phy_device *phydev) } EXPORT_SYMBOL_GPL(genphy_c45_read_eee_abilities); +/** + * genphy_c45_an_config_eee_aneg - write advertised EEE link modes + * @phydev: target phy_device struct + * @adv: the linkmode advertisement settings + */ +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 8d927c5e3bf8..0c47665effaf 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 Tue Feb 21 05:03: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: 59761 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1680654wrn; Mon, 20 Feb 2023 21:12:34 -0800 (PST) X-Google-Smtp-Source: AK7set/T81Pu4RSqsRr/LFr74TGEm6V33aeHHMDvveKgxot4eV2YjuLBY0yxgwkUovrQ3Il5ApMz X-Received: by 2002:a05:6402:3890:b0:4a3:43c1:843e with SMTP id fd16-20020a056402389000b004a343c1843emr4009374edb.18.1676956354644; Mon, 20 Feb 2023 21:12:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676956354; cv=none; d=google.com; s=arc-20160816; b=BUaB2XOeH2GjBnP588OxwowgxdFIZsCMhBGuFc82VmctKjK1Ye7+82DTmR1dl07w82 2q8cyGZzxvUk+5YToVGughMOZvm/6m3B8zCG1bMn6OHjcgn4PKg1k0N3KWrOavPbV1/X GQR/QujkqjujUdp0iz1aCOUDtvpCq+jBbFYNcAtKFyS6ZHG79f7a0zuLGGaZ44zWZRJm Jf03vUqiNDWPUyp5OEJQuDNrlzEA8QNS7LoHrao0OGTBWrT5WIQB/96ZNyE9ioMilG0W DIxeZt/ceUOaDG6iaSLeE4viyb2xkhG25FK4I6V6NpFImIaXDO7YYszqW/v7HQPqYuEc ci7w== 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=GaF/8x21HIjwp+43SgAMLsV6/pHI+q2vSOQ12diPZYs=; b=Y0lLqY5OynwH8pia9uWdG4xtAxNs2N0ofiLqpnLZmSnfUmZ1yeAOmDolHQDv7ZAHGG oHxV/Ur52HKKt+5TA+OKIJKzZUB9CIPi92ILQOGNTDZuIj6O9FTnuPzKKKHgF7VRTLc3 wugzViX9Q6ztERXULIZK8JgdDkRN6ha7FSVZe/IK2f/H4tnkYpo944oU6Zns9Y/U3dnK Yqu6/nQTRgH+gQSgy3rxxm8wcIOTzlolQlsknD4NCTr7yZFOAzwqWV930QC7dujvtz+K nV5Rh84tVfvrJveUVH0JViD7utvZOxUis947K6KR5yi0vUAJxCvHBd7QaVe1H6kJOQB5 xOYA== 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 x26-20020aa7d39a000000b004ab250bceecsi17608415edq.654.2023.02.20.21.12.11; Mon, 20 Feb 2023 21:12: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 S233147AbjBUFEJ (ORCPT + 99 others); Tue, 21 Feb 2023 00:04:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231546AbjBUFDv (ORCPT ); Tue, 21 Feb 2023 00:03:51 -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 9D0281E5E9 for ; Mon, 20 Feb 2023 21:03:47 -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 1pUKoU-0002zx-4E; Tue, 21 Feb 2023 06:03:38 +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 1pUKoR-006PyS-Ht; Tue, 21 Feb 2023 06:03:36 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pUKoR-002QOA-Pr; Tue, 21 Feb 2023 06:03:35 +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-next v2 3/4] net: phy: do not force EEE support Date: Tue, 21 Feb 2023 06:03:33 +0100 Message-Id: <20230221050334.578012-4-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230221050334.578012-1-o.rempel@pengutronix.de> References: <20230221050334.578012-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?1758416186914127357?= X-GMAIL-MSGID: =?utf-8?q?1758416186914127357?= 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 --- 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 904f64818922..71671a07175f 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; @@ -865,7 +864,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); } /** @@ -1431,17 +1436,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 0c47665effaf..ef2a9f079916 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -3139,6 +3139,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 Tue Feb 21 05:03: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: 59763 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1683899wrn; Mon, 20 Feb 2023 21:22:34 -0800 (PST) X-Google-Smtp-Source: AK7set9QV0tAhLZ/KX9drktxM2vMiZmiqgV6rOgeinQGkGLq4TDQZ6RYN2OeDHAtylEtRjVV+IF6 X-Received: by 2002:a17:906:3d7:b0:8b1:7e21:f0e9 with SMTP id c23-20020a17090603d700b008b17e21f0e9mr13728944eja.18.1676956954196; Mon, 20 Feb 2023 21:22:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676956954; cv=none; d=google.com; s=arc-20160816; b=zdUF6+f1JC6FkZUAMfQih3O5nR6zg29vveGi9WOvmynYphlQvut2k2GzwE9Toc3qO7 II8G3hUqbsWvq2EASPuWdRmLNlYjwcFM/YbpVEqz5nmEHW4EzZnngm3g17cdjvW+pgEu yXQW51Rdn2yXq619vM+QHshJ3H3m5G5VK9HEID786dKD6zAvjpKdJ3gSfCu54f9U490X Zr7/CW3WP7G6ATIzJ8O86ZbYKnvKBGikRTcomSmyYul1efhsK2IapwPwS12yAyePn6HZ tdcamXg6KwilWMrmgS+K3AuhyAEgp3rThM7jK8MDIWSxP/CjlrVJV4wTjLMQuYgjfMPg QnaQ== 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=7gHBatQDaIwQQ1OGBKoGu3st5NcNkQxy5TsChDN8y90=; b=Jha7ohtx4l4bi20Uu77yJuOiwEWhGh4JXa1ki2kM0hU4HFixFmqXFiTAzinIGF2XgW 2KclAqLpjkPt2BD9wiUzRH98f8RATGtiQjMFEktpMfZ8NvqE9uECDLpxSoBtaKjg9gB2 x5Iye2d1IhTnovOKxCxa/qx+6OIm8VpMPV/k7NeFYThWq/0CQKe2pNBtZAJlrtwROhfW rHwCbzRwNg9E135qhGz/mvh971UCpzxogwnXTRlZVJ165n7ck7bdXEu9nGRsHEhbPCLa d8e9SxS6Pwgi7HJAMlVAnWbHFupFV4CN5C1B0EhmF0GvPKwJcBDpsIUcw1EeJ0CzHUpp cPmA== 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 y10-20020a170906518a00b008d518d4bf7dsi4791936ejk.562.2023.02.20.21.22.10; Mon, 20 Feb 2023 21:22: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 S233179AbjBUFED (ORCPT + 99 others); Tue, 21 Feb 2023 00:04:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230114AbjBUFDv (ORCPT ); Tue, 21 Feb 2023 00:03:51 -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 A8C801F5D5 for ; Mon, 20 Feb 2023 21:03:47 -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 1pUKoU-0002zz-4E; Tue, 21 Feb 2023 06:03:38 +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 1pUKoR-006PyZ-K8; Tue, 21 Feb 2023 06:03:36 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pUKoR-002QOJ-QP; Tue, 21 Feb 2023 06:03:35 +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-next v2 4/4] net: phy: c45: genphy_c45_ethtool_set_eee: validate EEE link modes Date: Tue, 21 Feb 2023 06:03:34 +0100 Message-Id: <20230221050334.578012-5-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230221050334.578012-1-o.rempel@pengutronix.de> References: <20230221050334.578012-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?1758416815538826980?= X-GMAIL-MSGID: =?utf-8?q?1758416815538826980?= 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 --- 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 71671a07175f..f595acd0a895 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -1439,12 +1439,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 {