Hi, Antonio:

    Could you help to provide a downshift warning message when this happen?

    It's a little strange that the adv and the lpa support 1000M, but finally the link speed is 100M.

Settings for eth5:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        *Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full*
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        *Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Full*
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        *Speed: 100Mb/s*
        Duplex: Full
        Port: MII
        PHYAD: 3
        Transceiver: internal
        Auto-negotiation: on
        Current message level: 0x00000036 (54)
                               probe link ifdown ifup
        Link detected: yes


On 2020/11/25 23:03, Yonglong Liu wrote:
Tested-by: Yonglong Liu <liuyongl...@huawei.com>

On 2020/11/25 7:07, Antonio Borneo wrote:
The rtl8211f supports downshift and before commit 5502b218e001
("net: phy: use phy_resolve_aneg_linkmode in genphy_read_status")
the read-back of register MII_CTRL1000 was used to detect the
negotiated link speed.
The code added in commit d445dff2df60 ("net: phy: realtek: read
actual speed to detect downshift") is working fine also for this
phy and it's trivial re-using it to restore the downshift
detection on rtl8211f.

Add the phy specific read_status() pointing to the existing
function rtlgen_read_status().

Signed-off-by: Antonio Borneo <antonio.bor...@st.com>
Link: https://lore.kernel.org/r/478f871a-583d-01f1-9cc5-2eea56d8c...@huawei.com
---
To: Andrew Lunn <and...@lunn.ch>
To: Heiner Kallweit <hkallwe...@gmail.com>
To: Russell King <li...@armlinux.org.uk>
To: "David S. Miller" <da...@davemloft.net>
To: Jakub Kicinski <k...@kernel.org>
To: net...@vger.kernel.org
To: Yonglong Liu <liuyongl...@huawei.com>
To: Willy Liu <willy....@realtek.com>
Cc: linux...@huawei.com
Cc: Salil Mehta <salil.me...@huawei.com>
Cc: linux-st...@st-md-mailman.stormreply.com
Cc: linux-kernel@vger.kernel.org
In-Reply-To: <20201124143848.874894-1-antonio.bor...@st.com>

V1 => V2
    move from a generic implementation affecting every phy
    to a rtl8211f specific implementation
V2 => V3
    rebase on netdev-next, resolving minor conflict after
    merge of 8b43357fff61
---
  drivers/net/phy/realtek.c | 1 +
  1 file changed, 1 insertion(+)

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index f71eda945c6a..99ecd6c4c15a 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -729,6 +729,7 @@ static struct phy_driver realtek_drvs[] = {
          PHY_ID_MATCH_EXACT(0x001cc916),
          .name        = "RTL8211F Gigabit Ethernet",
          .config_init    = &rtl8211f_config_init,
+        .read_status    = rtlgen_read_status,
          .config_intr    = &rtl8211f_config_intr,
          .handle_interrupt = rtl8211f_handle_interrupt,
          .suspend    = genphy_suspend,

base-commit: 1d155dfdf50efc2b0793bce93c06d1a5b23d0877

_______________________________________________
Linuxarm mailing list
linux...@huawei.com
http://hulk.huawei.com/mailman/listinfo/linuxarm

.

Reply via email to