lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <d7aa45f8-adf8-ff9a-b2c4-04b0f2cc3c06@windriver.com>
Date: Mon, 23 Oct 2023 15:01:10 +0800
From: "Jia, Fang" <fang.jia@...driver.com>
To: Andrew Lunn <andrew@...n.ch>, Florian Fainelli <f.fainelli@...il.com>,
        Heiner Kallweit <hkallweit1@...il.com>,
        "David S. Miller"
 <davem@...emloft.net>
Cc: netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: phy: fixed link 1000 or 100 set with autoneg off

Hi Experts,

We use NXP LS1046 board and face an issue about the eth interface speed.

1) Scenario

we set fixed link 1000Mb/s in device tree.

However, after we set the auto-neg off, then the eth1's speed changed to 
10M and Duplex changed to Half.
The value of /sys/class/net/eth1/speed is 10 and 
/sys/class/net/eth1/duplex is half

2) Log is as following.

# ifconfig eth1 up
# ethtool eth1
Settings for eth1:
         Supported ports: [ MII ] 

         Supported link modes:   1000baseT/Full
         Supported pause frame use: Symmetric Receive-only
         Supports auto-negotiation: Yes 
 

         Supported FEC modes: Not reported 
 

         Advertised link modes:  1000baseT/Full
         Advertised pause frame use: Symmetric Receive-only 
 

         Advertised auto-negotiation: Yes
         Advertised FEC modes: Not reported
         Speed: 1000Mb/s
         Duplex: Full
         Port: MII
         PHYAD: 1
         Transceiver: internal
         Auto-negotiation: on
         Supports Wake-on: d
         Wake-on: d
         Current message level: 0xffffffff (-1)
                                drv probe link timer ifdown ifup rx_err 
tx_err tx_queued intr tx_done rx_status pktdata hw wol 0xffff8000
         Link detected: yes

# ethtool -s eth1 autoneg off
# ethtool eth1
Settings for eth1:
         Supported ports: [ MII ]
         Supported link modes:   1000baseT/Full
         Supported pause frame use: Symmetric Receive-only
         Supports auto-negotiation: Yes
         Supported FEC modes: Not reported
         Advertised link modes:  1000baseT/Full
         Advertised pause frame use: Symmetric Receive-only
         Advertised auto-negotiation: No
         Advertised FEC modes: Not reported
         Speed: 10Mb/s
         Duplex: Half
         Port: MII
         PHYAD: 1
         Transceiver: internal
         Auto-negotiation: off
         Supports Wake-on: d
         Wake-on: d
         Current message level: 0xffffffff (-1)
                                drv probe link timer ifdown ifup rx_err 
tx_err tx_queued intr tx_done rx_status pktdata hw wol 0xffff8000
         Link detected: yes

3) After code tracing, we found that:

phy_state_machine()
	state PHY_RUNNING: phy_check_link_status()
		phy_read_status()
			genphy_read_status()
				genphy_read_status_fixed()

In genphy_read_status_fixed(), the speed and duplex changed.
It seems like the bmcr value is always 0x1000 from swphy_read_reg().

After revert the commit 726097d6d6d(net: phy: improve auto-neg emulation 
in swphy), then the Speed and Duplex shown comes back to 1000M and Full.

Could you please take a look it ? Can we revert this commit, is there 
any side impact ?

Best Regards,
Fang

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ