• Arınç ÜNAL's avatar
    net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards · 06dfcd40
    Arınç ÜNAL authored
    The commit 40b5d2f1 ("net: dsa: mt7530: Add support for EEE features")
    brought EEE support but did not enable EEE on MT7531 switch MACs. EEE is
    enabled on MT7531 switch MACs by pulling the LAN2LED0 pin low on the board
    (bootstrapping), unsetting the EEE_DIS bit on the trap register, or setting
    the internal EEE switch bit on the CORE_PLL_GROUP4 register. Thanks to
    SkyLake Huang (黃啟澤) from MediaTek for providing information on the
    internal EEE switch bit.
    
    There are existing boards that were not designed to pull the pin low.
    Because of that, the EEE status currently depends on the board design.
    
    The EEE_DIS bit on the trap pertains to the LAN2LED0 pin which is usually
    used to control an LED. Once the bit is unset, the pin will be low. That
    will make the active low LED turn on. The pin is controlled by the switch
    PHY. It seems that the PHY controls the pin in the way that it inverts the
    pin state. That means depending on the wiring of the LED connected to
    LAN2LED0 on the board, the LED may be on without an active link.
    
    To not cause this unwanted behaviour whilst enabling EEE on all boards, set
    the internal EEE switch bit on the CORE_PLL_GROUP4 register.
    
    My testing on MT7531 shows a certain amount of traffic loss when EEE is
    enabled. That said, I haven't come across a board that enables EEE. So
    enable EEE on the switch MACs but disable EEE advertisement on the switch
    PHYs. This way, we don't change the behaviour of the majority of the boards
    that have this switch. The mediatek-ge PHY driver already disables EEE
    advertisement on the switch PHYs but my testing shows that it is somehow
    enabled afterwards. Disabling EEE advertisement before the PHY driver
    initialises keeps it off.
    
    With this change, EEE can now be enabled using ethtool.
    
    Fixes: 40b5d2f1 ("net: dsa: mt7530: Add support for EEE features")
    Reviewed-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
    Tested-by: default avatarDaniel Golle <daniel@makrotopia.org>
    Reviewed-by: default avatarDaniel Golle <daniel@makrotopia.org>
    Link: https://lore.kernel.org/r/20240408-for-net-mt7530-fix-eee-for-mt7531-mt7988-v3-1-84fdef1f008b@arinc9.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    06dfcd40
mt7530.c 78.3 KB