Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp7102177ybp; Wed, 16 Oct 2019 03:56:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqyQ1WyQo4NEsoLc/kyCHna3FWwlCQlCdz2uFiqayWThFLuP8tszOepU5fXDekNEnYtWLVmN X-Received: by 2002:a50:c90d:: with SMTP id o13mr38298499edh.85.1571223404885; Wed, 16 Oct 2019 03:56:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571223404; cv=none; d=google.com; s=arc-20160816; b=PyYW1+1jlJ1RcKwa6RsyZjdKVlpNumh+Wkpk4mxKwoUCoEMnmbwjN6/0YrlqInH2Fd iG0U+RPCrhtT+NGgDwXOau+1K1Sfv7KpXnLSbVOBeoMQgyFGMIRiJhVLqRl0Sbdw5YpN yqZuZV6j/avAND99us0Lra8TSw2CYuID0eP2EiKpeHKiftfG3UrRP3LGjHiAetcB6pLs peKKbWu51miHjQfcGOTVQNr2a77l55EIV/sV9Dz2zJETjwgxuDYMkaCMJeWyWUfD4065 Y+nY1CDBOZZoGN4BDKfTIBrbrYuvNJFZwNc0ViK3cQKpi0JmikKt7XQRrl1Cd0ZJdhff 3hPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=O5AMJnRDT3QzeEH4CpONzZiLG+ro2p+slY3d1J7Lj1k=; b=cCpo6HaGbK/iCokKDWQpJCl7zm1xqSKecrDQQk11FlUw93Im0C93G8GO/d8TNlG1PB 83OOsqxZOHygUByJOy0WmzVbaROX7QyA8p4FFom3SZjIzZUQrBTYr6x51zew2l07i132 DWxCEPduBV0TBu25GwV3eCFiHJLpkXiDIcCIz89n62FtEYHxSaxfF587R/hnk9f4dDQg /rAw6SDAtPPl5RyAldCi0xMpYJDzk2gMzNQcQOJF1s9c7ucvyGbBXKloBvHQxKV8GbAo ikfQdY8+rUFGhvMyBIU2IVTjF7N81fwp02sfTcmHMLn78ywcBPQwLr/m9bNyKbQ1cI8S XCBA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b15si16794741edm.395.2019.10.16.03.56.21; Wed, 16 Oct 2019 03:56:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732051AbfJPC2O (ORCPT + 99 others); Tue, 15 Oct 2019 22:28:14 -0400 Received: from szxga08-in.huawei.com ([45.249.212.255]:58940 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726534AbfJPC2O (ORCPT ); Tue, 15 Oct 2019 22:28:14 -0400 Received: from DGGEMM406-HUB.china.huawei.com (unknown [172.30.72.55]) by Forcepoint Email with ESMTP id 50700C9C40FD3F12D008; Wed, 16 Oct 2019 10:28:11 +0800 (CST) Received: from dggeme760-chm.china.huawei.com (10.3.19.106) by DGGEMM406-HUB.china.huawei.com (10.3.20.214) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 16 Oct 2019 10:28:10 +0800 Received: from [127.0.0.1] (10.57.37.248) by dggeme760-chm.china.huawei.com (10.3.19.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Wed, 16 Oct 2019 10:27:55 +0800 Subject: Re: [RFC PATCH V2 net] net: phy: Fix "link partner" information disappear issue To: Heiner Kallweit , , CC: , , , , , References: <1571057797-37602-1-git-send-email-liuyonglong@huawei.com> <4a281b6d-1531-eac6-dcc5-8306d342caa4@gmail.com> From: Yonglong Liu Message-ID: <53e41316-17d8-05b6-92dd-f4feb0617474@huawei.com> Date: Wed, 16 Oct 2019 10:27:55 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <4a281b6d-1531-eac6-dcc5-8306d342caa4@gmail.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.57.37.248] X-ClientProxiedBy: dggeme710-chm.china.huawei.com (10.1.199.106) To dggeme760-chm.china.huawei.com (10.3.19.106) X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019/10/16 4:02, Heiner Kallweit wrote: > On 14.10.2019 14:56, Yonglong Liu wrote: >> Some drivers just call phy_ethtool_ksettings_set() to set the >> links, for those phy drivers that use genphy_read_status(), if >> autoneg is on, and the link is up, than execute "ethtool -s >> ethx autoneg on" will cause "link partner" information disappear. >> >> The call trace is phy_ethtool_ksettings_set()->phy_start_aneg() >> ->linkmode_zero(phydev->lp_advertising)->genphy_read_status(), >> the link didn't change, so genphy_read_status() just return, and >> phydev->lp_advertising is zero now. >> >> This patch moves the clear operation of lp_advertising from >> phy_start_aneg() to genphy_read_lpa()/genphy_c45_read_lpa(), and >> if autoneg on and autoneg not complete, just clear what the >> generic functions care about. >> >> Fixes: 88d6272acaaa ("net: phy: avoid unneeded MDIO reads in genphy_read_status") >> Signed-off-by: Yonglong Liu >> > Looks good to me, two small nits below. > > Thanks! Will fix the two small nits and send it to "net" branch. >> --- >> change log: >> V2: moves the clear operation of lp_advertising from >> phy_start_aneg() to genphy_read_lpa()/genphy_c45_read_lpa(), and >> if autoneg on and autoneg not complete, just clear what the >> generic functions care about. Suggested by Heiner Kallweit. >> --- >> --- > This line seems to be duplicated. > >> drivers/net/phy/phy-c45.c | 2 ++ >> drivers/net/phy/phy.c | 3 --- >> drivers/net/phy/phy_device.c | 12 +++++++++++- >> 3 files changed, 13 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c >> index 7935593..a1caeee 100644 >> --- a/drivers/net/phy/phy-c45.c >> +++ b/drivers/net/phy/phy-c45.c >> @@ -323,6 +323,8 @@ int genphy_c45_read_pma(struct phy_device *phydev) >> { >> int val; >> >> + linkmode_zero(phydev->lp_advertising); >> + >> val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_CTRL1); >> if (val < 0) >> return val; >> diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c >> index 119e6f4..105d389b 100644 >> --- a/drivers/net/phy/phy.c >> +++ b/drivers/net/phy/phy.c >> @@ -572,9 +572,6 @@ int phy_start_aneg(struct phy_device *phydev) >> if (AUTONEG_DISABLE == phydev->autoneg) >> phy_sanitize_settings(phydev); >> >> - /* Invalidate LP advertising flags */ >> - linkmode_zero(phydev->lp_advertising); >> - >> err = phy_config_aneg(phydev); >> if (err < 0) >> goto out_unlock; >> diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c >> index 9d2bbb1..4b43466 100644 >> --- a/drivers/net/phy/phy_device.c >> +++ b/drivers/net/phy/phy_device.c >> @@ -1787,7 +1787,14 @@ int genphy_read_lpa(struct phy_device *phydev) >> { >> int lpa, lpagb; >> >> - if (phydev->autoneg == AUTONEG_ENABLE && phydev->autoneg_complete) { >> + if (phydev->autoneg == AUTONEG_ENABLE) { >> + if (!phydev->autoneg_complete) { >> + mii_stat1000_mod_linkmode_lpa_t(phydev->lp_advertising, >> + 0); >> + mii_lpa_mod_linkmode_lpa_t(phydev->lp_advertising, 0); >> + return 0; >> + } >> + >> if (phydev->is_gigabit_capable) { >> lpagb = phy_read(phydev, MII_STAT1000); >> if (lpagb < 0) >> @@ -1816,6 +1823,9 @@ int genphy_read_lpa(struct phy_device *phydev) >> >> mii_lpa_mod_linkmode_lpa_t(phydev->lp_advertising, lpa); >> } >> + else { > > "} else {" should be on one line. > >> + linkmode_zero(phydev->lp_advertising); >> + } >> >> return 0; >> } >> > > > . >