Hi Andrew, I understand what you mean, and sorry for my wrong description. The link is not always up. If I turn auto-neg off, the link will go down finally. However, there is an intervel between my operation and the link down. In my experiment, it may be 1 min or evn 10 mins. The phy state is set to PHY_UP immediately when I set auto-neg off. And the phy machine check the state during a very small intervals. Thus, during my experiment, the phy state has a followed varietion: PHY_RUNNING -> PHY_UP -> PHY_RUNNING -> PHY_NOLINK.
We print link up/down based on phy state and link state. In aboved case, It print looks like: eth0 link down -- because phy state is set to PHY_UP eth0 link up -- because phy state is set to PHY_RUNNING eth0 link down -- because link down
This patch wants to fix the first two wrong print. We will modify this patch description
Thanks!
Jijie Shao
on 2023/7/28 16:57, Andrew Lunn wrote:
On Fri, Jul 28, 2023 at 03:58:39PM +0800, Jijie Shao wrote:
From: Peiyang Wang wangpeiyang1@huawei.com
This patch will fix a wrong print "device link down/up". Consider a case that set autoneg to off with same speed and duplex configuration. The link is always up while the phy state is set to PHY_UP and set back to PHY_RUNNING later. It will print link down when the phy state is not PHY_RUNNING. To avoid that, the condition should include PHY_UP.
Does this really happen? If autoneg is on, and there is link, it means the link peer is auto using auto-neg. If you turn auto-neg off, the link peer is not going to know what speed to use, and so the link will go down. The link will only come up again when you reconfigure the link peer to also not use auto-neg.
I don't see how you can turn auto-neg off and not loose the link.
Andrew