Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1018475pxb; Thu, 25 Feb 2021 23:47:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJwuwDmjUZYnm/JmBnu5Shv9NrpEWIX/ASU4HwyoqOS9MtpPIUNi8Aeyq0Bj9T/j3o6KVCbA X-Received: by 2002:a17:906:a0d3:: with SMTP id bh19mr1939409ejb.199.1614325675143; Thu, 25 Feb 2021 23:47:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614325675; cv=none; d=google.com; s=arc-20160816; b=gLrXijzoL1kLRgwh0+g0qbTCDSKU+gyq5fyfm1ZuHmdG6B6QMk2vxm5R3gsMkciwWt MoGpXUl9LG7kwa4oW4kg50FH4t9O57Jly9eevsfz77Z3+JjPySPxpJnalJbVUu20e+yH n5ajRJc/eMsFRZPQLIv+tMGhOe4ZHLw/viGAcTx1K+d74ylN1ei7ogEyNJd0T8fiZGnZ dofEwig1TzwCPm2oBiJkW6u27ZzN20Fti5uisO/BTJQMtSCKNMyY8LaQdlZnnbhlNVWg H6Y/4+naxL7KRzgYxjMfNKe9kMnOQ9fklJA+Q4FucsFYarWJB5858m/tnIB0UcnLWqWO wiPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=HOwNfBNS+hocad+09PtV2zWxhzhQmrPzKUiRUkcDr8Q=; b=BFiGYG8wCigqFvhR4jibnaP5LdGcqIQK92ErHOBF/CGqEQgDQRvYkuwGrsE/S+8He7 RTGqTzp/ylteRFWBav2b4/kbl5IKrJTnM3/uYfFaJp2UidWY9aAcKtfTac7bxq/DRdDQ 1/qHOFWFnUBgCAMH03G/M8OTwpZlRwHNgb/M1p5Q1mzq6JboaO99FxKuHPa63hjXrxC7 BrC7+YD1CzTk+aDkfO5rkepH5ToRlKburua/p2CJGIo2fnJixEsxG2FauDT5Tv7My9RN SDnENawA5qvbCqWetSujGwNNsHdyPM1IhVKjQngBKp4ZYTA62IbFH+w4owP/8Hhnw5ly 3oJg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id rh28si2277560ejb.494.2021.02.25.23.47.32; Thu, 25 Feb 2021 23:47:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229556AbhBZHoy (ORCPT + 99 others); Fri, 26 Feb 2021 02:44:54 -0500 Received: from szxga07-in.huawei.com ([45.249.212.35]:13381 "EHLO szxga07-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229526AbhBZHos (ORCPT ); Fri, 26 Feb 2021 02:44:48 -0500 Received: from DGGEMS405-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4Dn1pC2RLHz7n4y; Fri, 26 Feb 2021 15:42:27 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS405-HUB.china.huawei.com (10.3.19.205) with Microsoft SMTP Server id 14.3.498.0; Fri, 26 Feb 2021 15:43:55 +0800 From: Huazhong Tan To: , , , , CC: , , Guangbin Huang , Huazhong Tan Subject: [PATCH net] net: phy: fix save wrong speed and duplex problem if autoneg is on Date: Fri, 26 Feb 2021 15:44:42 +0800 Message-ID: <1614325482-25208-1-git-send-email-tanhuazhong@huawei.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Guangbin Huang If phy uses generic driver and autoneg is on, enter command "ethtool -s eth0 speed 50" will not change phy speed actually, but command "ethtool eth0" shows speed is 50Mb/s because phydev->speed has been set to 50 and no update later. And duplex setting has same problem too. However, if autoneg is on, phy only changes speed and duplex according to phydev->advertising, but not phydev->speed and phydev->duplex. So in this case, phydev->speed and phydev->duplex don't need to be set in function phy_ethtool_ksettings_set() if autoneg is on. Signed-off-by: Guangbin Huang Signed-off-by: Huazhong Tan --- drivers/net/phy/phy.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 1be07e4..fc2e7cb 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -276,14 +276,16 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev, phydev->autoneg = autoneg; - phydev->speed = speed; + if (autoneg == AUTONEG_DISABLE) { + phydev->speed = speed; + phydev->duplex = duplex; + } linkmode_copy(phydev->advertising, advertising); linkmode_mod_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, phydev->advertising, autoneg == AUTONEG_ENABLE); - phydev->duplex = duplex; phydev->master_slave_set = cmd->base.master_slave_cfg; phydev->mdix_ctrl = cmd->base.eth_tp_mdix_ctrl; -- 2.7.4