* [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC
@ 2026-08-17 13:47 Oleksij Rempel
2026-08-17 13:47 ` [PATCH net-next v1 1/2] net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access Oleksij Rempel
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Oleksij Rempel @ 2026-08-17 13:47 UTC (permalink / raw)
To: Linus Walleij, Luiz Angelo Daros de Luca, Andrew Lunn,
Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni
Cc: Oleksij Rempel, kernel, linux-kernel, Ahmad Fatoum,
Alvin Šipraga, netdev
On these switches EEE is enabled by default, but so far it is neither
visible nor controllable from user space. This series wires EEE up to
phylib/phylink on the RTL8365MB-VC integrated-PHY ports so it can be
observed and controlled per port via ethtool
Oleksij Rempel (2):
net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access
net: dsa: realtek: rtl8365mb: add EEE support
drivers/net/dsa/realtek/realtek.h | 4 +
drivers/net/dsa/realtek/rtl8365mb_main.c | 123 +++++++++++++++++++++++
drivers/net/dsa/realtek/rtl83xx.c | 20 ++++
drivers/net/phy/realtek/realtek_main.c | 2 +
4 files changed, 149 insertions(+)
--
2.47.3
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH net-next v1 1/2] net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access 2026-08-17 13:47 [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC Oleksij Rempel @ 2026-08-17 13:47 ` Oleksij Rempel 2026-08-17 14:44 ` Andrew Lunn 2026-08-17 13:47 ` [PATCH net-next v1 2/2] net: dsa: realtek: rtl8365mb: add EEE support Oleksij Rempel 2026-08-17 13:51 ` [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC Oleksij Rempel 2 siblings, 1 reply; 8+ messages in thread From: Oleksij Rempel @ 2026-08-17 13:47 UTC (permalink / raw) To: Linus Walleij, Luiz Angelo Daros de Luca, Andrew Lunn, Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Cc: Oleksij Rempel, kernel, linux-kernel, Ahmad Fatoum, Alvin Šipraga, netdev The RTL8365MB-VC PHYs are integrated into the switch and have no MMD registers of their own. What phylib accesses as MMD registers (EEE) actually lives in the switch's OCP registers; the realtek DSA driver maps those MMD requests onto OCP and exposes them over C45. For a C22 PHY, phy_read_mmd()/phy_write_mmd() would use C22 indirect-MMD, which this hardware does not implement. Point .read_mmd/.write_mmd at genphy_{read,write}_mmd_c45() so phylib's MMD accesses go over C45 to the DSA driver's mapping instead. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- drivers/net/phy/realtek/realtek_main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realtek/realtek_main.c index 177b62a7b2d1..ad8017e91b4f 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -3388,6 +3388,8 @@ static struct phy_driver realtek_drvs[] = { }, { PHY_ID_MATCH_EXACT(0x001cc942), .name = "RTL8365MB-VC Gigabit Ethernet", + .read_mmd = genphy_read_mmd_c45, + .write_mmd = genphy_write_mmd_c45, /* Interrupt handling analogous to RTL8366RB */ .config_intr = genphy_no_config_intr, .handle_interrupt = genphy_handle_interrupt_no_ack, -- 2.47.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 1/2] net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access 2026-08-17 13:47 ` [PATCH net-next v1 1/2] net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access Oleksij Rempel @ 2026-08-17 14:44 ` Andrew Lunn 0 siblings, 0 replies; 8+ messages in thread From: Andrew Lunn @ 2026-08-17 14:44 UTC (permalink / raw) To: Oleksij Rempel Cc: Linus Walleij, Luiz Angelo Daros de Luca, Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, kernel, linux-kernel, Ahmad Fatoum, Alvin Šipraga, netdev On Mon, Aug 17, 2026 at 03:47:57PM +0200, Oleksij Rempel wrote: > The RTL8365MB-VC PHYs are integrated into the switch and have no MMD > registers of their own. What phylib accesses as MMD registers (EEE) > actually lives in the switch's OCP registers; the realtek DSA driver maps > those MMD requests onto OCP and exposes them over C45. > > For a C22 PHY, phy_read_mmd()/phy_write_mmd() would use C22 indirect-MMD, > which this hardware does not implement. Point .read_mmd/.write_mmd at > genphy_{read,write}_mmd_c45() so phylib's MMD accesses go over C45 to the > DSA driver's mapping instead. > > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next v1 2/2] net: dsa: realtek: rtl8365mb: add EEE support 2026-08-17 13:47 [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC Oleksij Rempel 2026-08-17 13:47 ` [PATCH net-next v1 1/2] net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access Oleksij Rempel @ 2026-08-17 13:47 ` Oleksij Rempel 2026-08-17 14:53 ` Andrew Lunn 2026-08-17 13:51 ` [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC Oleksij Rempel 2 siblings, 1 reply; 8+ messages in thread From: Oleksij Rempel @ 2026-08-17 13:47 UTC (permalink / raw) To: Linus Walleij, Luiz Angelo Daros de Luca, Andrew Lunn, Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Cc: Oleksij Rempel, kernel, linux-kernel, Ahmad Fatoum, Alvin Šipraga, netdev Add EEE support on the integrated-PHY ports, controllable per port via ethtool. The integrated PHYs have no MMD registers; their EEE registers live in the switch's OCP space. phylib accesses EEE as MMD registers, so add phy_{read,write}_c45 realtek_ops that map those MMD accesses onto their OCP addresses, wired as the user MII bus C45 handlers when the chip provides them (rtl8366rb etc. unaffected). The hardware manages LPI on its own, so advertise EEE to phylink with no-op mac_{en,dis}able_tx_lpi callbacks. The LPI timer is a single global per-speed register, so .set_mac_eee rejects the per-port TX LPI knobs rather than silently ignoring them. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- drivers/net/dsa/realtek/realtek.h | 4 + drivers/net/dsa/realtek/rtl8365mb_main.c | 123 +++++++++++++++++++++++ drivers/net/dsa/realtek/rtl83xx.c | 20 ++++ 3 files changed, 147 insertions(+) diff --git a/drivers/net/dsa/realtek/realtek.h b/drivers/net/dsa/realtek/realtek.h index 75a127545e5d..1c0ca6daf545 100644 --- a/drivers/net/dsa/realtek/realtek.h +++ b/drivers/net/dsa/realtek/realtek.h @@ -156,6 +156,10 @@ struct realtek_ops { int (*phy_read)(struct realtek_priv *priv, int phy, int regnum); int (*phy_write)(struct realtek_priv *priv, int phy, int regnum, u16 val); + int (*phy_read_c45)(struct realtek_priv *priv, int phy, int devad, + int regnum); + int (*phy_write_c45)(struct realtek_priv *priv, int phy, int devad, + int regnum, u16 val); }; struct realtek_variant { diff --git a/drivers/net/dsa/realtek/rtl8365mb_main.c b/drivers/net/dsa/realtek/rtl8365mb_main.c index 4c305756116c..f1bb883a5585 100644 --- a/drivers/net/dsa/realtek/rtl8365mb_main.c +++ b/drivers/net/dsa/realtek/rtl8365mb_main.c @@ -101,6 +101,7 @@ #include <linux/regmap.h> #include <linux/if_bridge.h> #include <linux/if_vlan.h> +#include <linux/mdio.h> #include <linux/phylink.h> #include "realtek.h" @@ -202,6 +203,10 @@ /* The PHY OCP addresses of PHY registers 0~31 start here */ #define RTL8365MB_PHY_OCP_ADDR_PHYREG_BASE 0xA400 +#define RTL8365MB_PHY_OCP_ADDR_EEE_ABLE 0xA5C4 +#define RTL8365MB_PHY_OCP_ADDR_EEE_ADV 0xA5D0 +#define RTL8365MB_PHY_OCP_ADDR_EEE_LPABLE 0xA5D2 + /* External interface port mode values - used in DIGITAL_INTERFACE_SELECT */ #define RTL8365MB_EXT_PORT_MODE_DISABLE 0 #define RTL8365MB_EXT_PORT_MODE_RGMII 1 @@ -1040,6 +1045,66 @@ static int rtl8365mb_phy_write(struct realtek_priv *priv, int phy, int regnum, return 0; } +static int rtl8365mb_phy_read_c45(struct realtek_priv *priv, int phy, int devad, + int regnum) +{ + u32 ocp_addr; + u16 val; + int ret; + + if (phy > RTL8365MB_PHYADDRMAX) + return -EINVAL; + + if (devad == MDIO_MMD_PCS && regnum == MDIO_PCS_EEE_ABLE) + ocp_addr = RTL8365MB_PHY_OCP_ADDR_EEE_ABLE; + else if (devad == MDIO_MMD_AN && regnum == MDIO_AN_EEE_ADV) + ocp_addr = RTL8365MB_PHY_OCP_ADDR_EEE_ADV; + else if (devad == MDIO_MMD_AN && regnum == MDIO_AN_EEE_LPABLE) + ocp_addr = RTL8365MB_PHY_OCP_ADDR_EEE_LPABLE; + else + /* Only the EEE registers are mapped; others read as 0, as the + * hardware does, so the generic MMD code is not tripped up by + * an error. + */ + return 0; + + ret = rtl8365mb_phy_ocp_read(priv, phy, ocp_addr, &val); + if (ret) { + dev_err(priv->dev, + "failed to read PHY%d OCP %04x, ret %d\n", phy, ocp_addr, + ret); + return ret; + } + + return val; +} + +static int rtl8365mb_phy_write_c45(struct realtek_priv *priv, int phy, + int devad, int regnum, u16 val) +{ + int ret; + + if (phy > RTL8365MB_PHYADDRMAX) + return -EINVAL; + + /* Only the EEE advertisement register is writable; writes to other + * registers are ignored, as the hardware does. + */ + if (devad != MDIO_MMD_AN || regnum != MDIO_AN_EEE_ADV) + return 0; + + ret = rtl8365mb_phy_ocp_write(priv, phy, RTL8365MB_PHY_OCP_ADDR_EEE_ADV, + val); + if (ret) { + dev_err(priv->dev, + "failed to write PHY%d OCP %04x, ret %d\n", phy, + RTL8365MB_PHY_OCP_ADDR_EEE_ADV, ret); + return ret; + } + + return 0; +} + static const struct rtl8365mb_extint * rtl8365mb_get_port_extint(struct realtek_priv *priv, int port) { @@ -1639,6 +1704,14 @@ static void rtl8365mb_phylink_get_caps(struct dsa_switch *ds, int port, */ __set_bit(PHY_INTERFACE_MODE_GMII, config->supported_interfaces); + + /* Integrated PHYs support EEE at 100M/1G; the hardware manages + * LPI on its own, so just advertise LPI awareness to phylink. + */ + memcpy(config->lpi_interfaces, config->supported_interfaces, + sizeof(config->lpi_interfaces)); + config->lpi_capabilities = MAC_100FD | MAC_1000FD; + config->eee_enabled_default = true; return; } @@ -3275,18 +3348,66 @@ static int rtl8365mb_detect(struct realtek_priv *priv) return 0; } +static int rtl8365mb_phylink_mac_enable_tx_lpi(struct phylink_config *config, + u32 timer, bool tx_clock_stop) +{ + /* The hardware manages LPI itself; there is no MAC-level LPI control. + * This callback only signals LPI awareness to phylink. + */ + return 0; +} + +static void rtl8365mb_phylink_mac_disable_tx_lpi(struct phylink_config *config) +{ +} + static const struct phylink_mac_ops rtl8365mb_phylink_mac_ops = { .mac_select_pcs = rtl8365mb_phylink_mac_select_pcs, .mac_config = rtl8365mb_phylink_mac_config, .mac_link_down = rtl8365mb_phylink_mac_link_down, .mac_link_up = rtl8365mb_phylink_mac_link_up, + .mac_enable_tx_lpi = rtl8365mb_phylink_mac_enable_tx_lpi, + .mac_disable_tx_lpi = rtl8365mb_phylink_mac_disable_tx_lpi, }; +static bool rtl8365mb_support_eee(struct dsa_switch *ds, int port) +{ + /* Only integrated-PHY ports support EEE, not the external RGMII ports. */ + return !rtl8365mb_get_port_extint(ds->priv, port); +} + +static int rtl8365mb_set_mac_eee(struct dsa_switch *ds, int port, + struct ethtool_keee *e) +{ + struct realtek_priv *priv = ds->priv; + + /* The only LPI timing control (tx_lpi_timer) is a single global + * per-speed register shared by all ports, so it cannot be set from this + * per-port callback; leave it at its reset default. Per-port EEE is + * driven through the PHY advertisement. Reject the per-port TX LPI knobs + * rather than silently ignoring them. + */ + if (!e->tx_lpi_enabled) { + dev_err(priv->dev, "disabling EEE TX LPI is not supported\n"); + return -EINVAL; + } + + if (e->tx_lpi_timer) { + dev_err(priv->dev, + "setting the EEE TX LPI timer is not supported\n"); + return -EINVAL; + } + + return 0; +} + static const struct dsa_switch_ops rtl8365mb_switch_ops = { .get_tag_protocol = rtl8365mb_get_tag_protocol, .change_tag_protocol = rtl8365mb_change_tag_protocol, .setup = rtl8365mb_setup, .teardown = rtl8365mb_teardown, + .support_eee = rtl8365mb_support_eee, + .set_mac_eee = rtl8365mb_set_mac_eee, .phylink_get_caps = rtl8365mb_phylink_get_caps, .port_bridge_join = rtl83xx_port_bridge_join, .port_bridge_leave = rtl83xx_port_bridge_leave, @@ -3332,6 +3453,8 @@ static const struct realtek_ops rtl8365mb_ops = { .l2_flush = rtl8365mb_l2_flush, .phy_read = rtl8365mb_phy_read, .phy_write = rtl8365mb_phy_write, + .phy_read_c45 = rtl8365mb_phy_read_c45, + .phy_write_c45 = rtl8365mb_phy_write_c45, }; static const char *const rtl8365mb_supplies[] = { diff --git a/drivers/net/dsa/realtek/rtl83xx.c b/drivers/net/dsa/realtek/rtl83xx.c index 8121ec12fd8b..ad42c05d0a88 100644 --- a/drivers/net/dsa/realtek/rtl83xx.c +++ b/drivers/net/dsa/realtek/rtl83xx.c @@ -62,6 +62,22 @@ static int rtl83xx_user_mdio_write(struct mii_bus *bus, int addr, int regnum, return priv->ops->phy_write(priv, addr, regnum, val); } +static int rtl83xx_user_mdio_read_c45(struct mii_bus *bus, int addr, int devad, + int regnum) +{ + struct realtek_priv *priv = bus->priv; + + return priv->ops->phy_read_c45(priv, addr, devad, regnum); +} + +static int rtl83xx_user_mdio_write_c45(struct mii_bus *bus, int addr, int devad, + int regnum, u16 val) +{ + struct realtek_priv *priv = bus->priv; + + return priv->ops->phy_write_c45(priv, addr, devad, regnum, val); +} + /** * rtl83xx_setup_user_mdio() - register the user mii bus driver * @ds: DSA switch associated with this user_mii_bus @@ -95,6 +111,10 @@ int rtl83xx_setup_user_mdio(struct dsa_switch *ds) bus->name = "Realtek user MII"; bus->read = rtl83xx_user_mdio_read; bus->write = rtl83xx_user_mdio_write; + if (priv->ops->phy_read_c45) + bus->read_c45 = rtl83xx_user_mdio_read_c45; + if (priv->ops->phy_write_c45) + bus->write_c45 = rtl83xx_user_mdio_write_c45; snprintf(bus->id, MII_BUS_ID_SIZE, "%s:user_mii", dev_name(priv->dev)); bus->parent = priv->dev; -- 2.47.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 2/2] net: dsa: realtek: rtl8365mb: add EEE support 2026-08-17 13:47 ` [PATCH net-next v1 2/2] net: dsa: realtek: rtl8365mb: add EEE support Oleksij Rempel @ 2026-08-17 14:53 ` Andrew Lunn 2026-08-18 12:22 ` Oleksij Rempel 0 siblings, 1 reply; 8+ messages in thread From: Andrew Lunn @ 2026-08-17 14:53 UTC (permalink / raw) To: Oleksij Rempel Cc: Linus Walleij, Luiz Angelo Daros de Luca, Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, kernel, linux-kernel, Ahmad Fatoum, Alvin Šipraga, netdev > +static int rtl8365mb_phylink_mac_enable_tx_lpi(struct phylink_config *config, > + u32 timer, bool tx_clock_stop) > +{ > + /* The hardware manages LPI itself; there is no MAC-level LPI control. > + * This callback only signals LPI awareness to phylink. > + */ > + return 0; > +} > + > +static void rtl8365mb_phylink_mac_disable_tx_lpi(struct phylink_config *config) > +{ > +} > + So what happens when i do: ethtool --set-eee eth42 off or ethtool --set-eee eth42 tx-lpi on I don't now what phylib does with advertise in these cases, but maybe you need to go behind phylink/phylib back and set advertise to 0, so that the MAC does the right thing? Or you need to return -EOPNOTSUPP for these? Andrew ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 2/2] net: dsa: realtek: rtl8365mb: add EEE support 2026-08-17 14:53 ` Andrew Lunn @ 2026-08-18 12:22 ` Oleksij Rempel 2026-08-18 13:10 ` Andrew Lunn 0 siblings, 1 reply; 8+ messages in thread From: Oleksij Rempel @ 2026-08-18 12:22 UTC (permalink / raw) To: Andrew Lunn Cc: Linus Walleij, Luiz Angelo Daros de Luca, Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, kernel, linux-kernel, Ahmad Fatoum, Alvin Šipraga, netdev On Mon, Aug 17, 2026 at 04:53:52PM +0200, Andrew Lunn wrote: > > +static int rtl8365mb_phylink_mac_enable_tx_lpi(struct phylink_config *config, > > + u32 timer, bool tx_clock_stop) > > +{ > > + /* The hardware manages LPI itself; there is no MAC-level LPI control. > > + * This callback only signals LPI awareness to phylink. > > + */ > > + return 0; > > +} > > + > > +static void rtl8365mb_phylink_mac_disable_tx_lpi(struct phylink_config *config) > > +{ > > +} > > + > > So what happens when i do: > > ethtool --set-eee eth42 off > > or > > ethtool --set-eee eth42 tx-lpi on In current implementation, with "tx-lpi off", the driver will return -EINVAL, "tx-lpi on" will be passed. It is aligned with KSZ driver. rtl8365mb_set_mac_eee() is used as filter. > I don't now what phylib does with advertise in these cases, but maybe > you need to go behind phylink/phylib back and set advertise to 0, so > that the MAC does the right thing? If I see it correctly, We wont be able to emulate "eee on tx-lpi off" case on this HW. On proper HW, this configuration will be link speed dependent: - 100 Mbit/s - TX line will be active, RX can be idle if link partner is in LPI. - 1000 Mbit/s - this configuration will make EEE/LPI non functional, almost equal to "eee off" (EEE is advertised but not activated) I decided not to emulate "tx-lpi off" by disabling EEE advertisement. > Or you need to return -EOPNOTSUPP for these? Currently it is -EINVAL as in KSZ driver. If we will go with -EOPNOTSUPP then probably both drivers should follow it. -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 2/2] net: dsa: realtek: rtl8365mb: add EEE support 2026-08-18 12:22 ` Oleksij Rempel @ 2026-08-18 13:10 ` Andrew Lunn 0 siblings, 0 replies; 8+ messages in thread From: Andrew Lunn @ 2026-08-18 13:10 UTC (permalink / raw) To: Oleksij Rempel Cc: Linus Walleij, Luiz Angelo Daros de Luca, Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, kernel, linux-kernel, Ahmad Fatoum, Alvin Šipraga, netdev On Tue, Aug 18, 2026 at 02:22:29PM +0200, Oleksij Rempel wrote: > On Mon, Aug 17, 2026 at 04:53:52PM +0200, Andrew Lunn wrote: > > > +static int rtl8365mb_phylink_mac_enable_tx_lpi(struct phylink_config *config, > > > + u32 timer, bool tx_clock_stop) > > > +{ > > > + /* The hardware manages LPI itself; there is no MAC-level LPI control. > > > + * This callback only signals LPI awareness to phylink. > > > + */ > > > + return 0; > > > +} > > > + > > > +static void rtl8365mb_phylink_mac_disable_tx_lpi(struct phylink_config *config) > > > +{ > > > +} > > > + > > > > So what happens when i do: > > > > ethtool --set-eee eth42 off > > > > or > > > > ethtool --set-eee eth42 tx-lpi on > > In current implementation, with "tx-lpi off", the driver will return > -EINVAL, "tx-lpi on" will be passed. It is aligned with KSZ driver. > rtl8365mb_set_mac_eee() is used as filter. Ah, good. > Currently it is -EINVAL as in KSZ driver. If we will go with -EOPNOTSUPP > then probably both drivers should follow it. -EOPNOTSUPP would be better. It is not an invalid configuration. This hardware cannot support it. Andrew ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC 2026-08-17 13:47 [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC Oleksij Rempel 2026-08-17 13:47 ` [PATCH net-next v1 1/2] net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access Oleksij Rempel 2026-08-17 13:47 ` [PATCH net-next v1 2/2] net: dsa: realtek: rtl8365mb: add EEE support Oleksij Rempel @ 2026-08-17 13:51 ` Oleksij Rempel 2 siblings, 0 replies; 8+ messages in thread From: Oleksij Rempel @ 2026-08-17 13:51 UTC (permalink / raw) To: Linus Walleij, Luiz Angelo Daros de Luca, Andrew Lunn, Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Cc: Ahmad Fatoum, netdev, linux-kernel, kernel, Alvin Šipraga Sorry, i missed - it is merge window now. Will resend it later. On Mon, Aug 17, 2026 at 03:47:56PM +0200, Oleksij Rempel wrote: > On these switches EEE is enabled by default, but so far it is neither > visible nor controllable from user space. This series wires EEE up to > phylib/phylink on the RTL8365MB-VC integrated-PHY ports so it can be > observed and controlled per port via ethtool > > Oleksij Rempel (2): > net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access > net: dsa: realtek: rtl8365mb: add EEE support > > drivers/net/dsa/realtek/realtek.h | 4 + > drivers/net/dsa/realtek/rtl8365mb_main.c | 123 +++++++++++++++++++++++ > drivers/net/dsa/realtek/rtl83xx.c | 20 ++++ > drivers/net/phy/realtek/realtek_main.c | 2 + > 4 files changed, 149 insertions(+) > > -- > 2.47.3 > > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-08-18 13:10 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-17 13:47 [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC Oleksij Rempel 2026-08-17 13:47 ` [PATCH net-next v1 1/2] net: phy: realtek: use C45 for RTL8365MB-VC internal PHY MMD access Oleksij Rempel 2026-08-17 14:44 ` Andrew Lunn 2026-08-17 13:47 ` [PATCH net-next v1 2/2] net: dsa: realtek: rtl8365mb: add EEE support Oleksij Rempel 2026-08-17 14:53 ` Andrew Lunn 2026-08-18 12:22 ` Oleksij Rempel 2026-08-18 13:10 ` Andrew Lunn 2026-08-17 13:51 ` [PATCH net-next v1 0/2] net: dsa: realtek: EEE support for RTL8365MB-VC Oleksij Rempel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox