linux/drivers/net/dsa
Arınç ÜNAL 06dfcd4098 net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards
The commit 40b5d2f15c ("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: 40b5d2f15c ("net: dsa: mt7530: Add support for EEE features")
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
Tested-by: Daniel Golle <daniel@makrotopia.org>
Reviewed-by: Daniel Golle <daniel@makrotopia.org>
Link: https://lore.kernel.org/r/20240408-for-net-mt7530-fix-eee-for-mt7531-mt7988-v3-1-84fdef1f008b@arinc9.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-04-10 18:29:01 -07:00
..
b53 net: dsa: b53: unexport and move b53_eee_enable_set() 2024-02-08 19:03:46 -08:00
hirschmann
microchip Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-03-11 20:38:36 -07:00
mv88e6xxx net: dsa: mv88e6xxx: fix usable ports on 88e6020 2024-03-29 11:59:24 -07:00
ocelot net: dsa: Use conduit and user terms 2023-10-24 13:08:14 -07:00
qca net: dsa: qca8k: consistently use "ret" rather than "err" for error codes 2024-02-05 12:39:27 +00:00
realtek net: dsa: realtek: support reset controller 2024-02-28 08:21:41 +00:00
sja1105 net: dsa: sja1105: Fix parameters order in sja1110_pcs_mdio_write_c45() 2024-04-04 12:51:45 +02:00
xrs700x net: dsa: Use conduit and user terms 2023-10-24 13:08:14 -07:00
bcm_sf2.c ethtool: replace struct ethtool_eee with a new struct ethtool_keee on kernel side 2024-01-31 12:30:47 +00:00
bcm_sf2.h net: dsa: bcm_sf2: drop priv->master_mii_dn 2024-01-05 11:56:36 +00:00
bcm_sf2_cfp.c net: dsa: Use conduit and user terms 2023-10-24 13:08:14 -07:00
bcm_sf2_regs.h
dsa_loop.c net: dsa: dsa_loop: add phylink capabilities 2023-10-11 10:06:05 +01:00
dsa_loop.h
dsa_loop_bdinfo.c net: fill in MODULE_DESCRIPTION()s for dsa_loop_bdinfo 2024-02-09 14:12:02 -08:00
Kconfig net: dsa: mt7530: select MEDIATEK_GE_PHY for NET_DSA_MT7530_MDIO 2024-01-26 20:31:52 -08:00
lan9303-core.c net: dsa: Use conduit and user terms 2023-10-24 13:08:14 -07:00
lan9303.h
lan9303_i2c.c
lan9303_mdio.c net: dsa: lan9303: consequently nested-lock physical MDIO 2023-11-02 10:48:09 +01:00
lantiq_gswip.c net: dsa: lantiq_gswip: ignore MDIO buses disabled in OF 2024-01-05 11:56:35 +00:00
lantiq_pce.h
Makefile
mt7530-mdio.c net: dsa: mt7530: store port 5 SGMII capability of MT7531 2024-01-29 18:04:11 -08:00
mt7530-mmio.c net: dsa: mt7530: Convert to platform remove callback returning void 2023-09-20 10:25:57 +01:00
mt7530.c net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards 2024-04-10 18:29:01 -07:00
mt7530.h net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards 2024-04-10 18:29:01 -07:00
mv88e6060.c
mv88e6060.h
rzn1_a5psw.c net: dsa: rzn1_a5psw: Convert to platform remove callback returning void 2023-09-20 10:25:58 +01:00
rzn1_a5psw.h
vitesse-vsc73xx-core.c net: dsa: vsc73xx: Add null pointer check to vsc73xx_gpio_probe 2024-01-16 17:48:27 -08:00
vitesse-vsc73xx-platform.c net: dsa: vitesse-vsc73xx: Convert to platform remove callback returning void 2023-09-20 10:25:58 +01:00
vitesse-vsc73xx-spi.c
vitesse-vsc73xx.h