From f42d1de870221975f6865e97108cfe1292b92c37 Mon Sep 17 00:00:00 2001 From: Nicolai Buchwitz Date: Mon, 30 Mar 2026 16:25:13 +0200 Subject: [PATCH 1/5] Revert "net: genet: enable link energy detect powerdown for external PHYs" This reverts commit bd61974c661168a16b81d445130d37332d3fbe8d. --- drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c index fcf86e1e01476..034f9b3599642 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -312,8 +312,6 @@ int bcmgenet_mii_probe(struct net_device *dev) /* Communicate the integrated PHY revision */ if (priv->internal_phy) phy_flags = priv->gphy_rev; - else - phy_flags = PHY_BRCM_AUTO_PWRDWN_ENABLE; /* This is an ugly quirk but we have not been correctly interpreting * the phy_interface values and we have done that across different From 1213fb79c6281b94bd446baea21de6be5c4a5322 Mon Sep 17 00:00:00 2001 From: Nicolai Buchwitz Date: Mon, 30 Mar 2026 16:25:58 +0200 Subject: [PATCH 2/5] ARM: dts: bcm2711: enable PHY link energy detect powerdown via DT Add brcm,powerdown-enable to the external PHY nodes on Pi 4B and CM4. This puts the BCM54210PE PHY into a low-power state when the link is down, reducing power consumption when no cable is connected. This is the same approach already used by Pi 5 and CM5. Signed-off-by: Nicolai Buchwitz --- arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts | 1 + arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts index f382040561527..7728da73a5185 100644 --- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts @@ -213,6 +213,7 @@ phy1: ethernet-phy@1 { /* No PHY interrupt */ reg = <0x1>; + brcm,powerdown-enable; leds { #address-cells = <1>; diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts index 22624338e74f6..233dfe8e3890d 100644 --- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts @@ -216,6 +216,7 @@ phy1: ethernet-phy@0 { /* No PHY interrupt */ reg = <0x0>; + brcm,powerdown-enable; }; }; From 44816652d711de6ec1c27d98054d9e0e44fb4fcc Mon Sep 17 00:00:00 2001 From: Nicolai Buchwitz Date: Mon, 30 Mar 2026 16:32:35 +0200 Subject: [PATCH 3/5] Revert "net: bcmgenet: Add 'eee' module parameter" This reverts commit 712989f8e002e8a088f24a6cef4d8c1ed1a74e08. --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 94646b73e4d0a..d095968730c5f 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -68,9 +68,6 @@ static void bcmgenet_set_rx_mode(struct net_device *dev); static bool skip_umac_reset = false; module_param(skip_umac_reset, bool, 0444); MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step"); -static bool eee = true; -module_param(eee, bool, 0444); -MODULE_PARM_DESC(eee, "Enable EEE (default Y)"); static inline void bcmgenet_writel(u32 value, void __iomem *offset) { @@ -3367,17 +3364,6 @@ static int bcmgenet_open(struct net_device *dev) bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause); - if (!eee) { - struct ethtool_keee eee_data; - - ret = bcmgenet_get_eee(dev, &eee_data); - if (ret == 0) { - eee_data.eee_enabled = 0; - bcmgenet_set_eee(dev, &eee_data); - netdev_warn(dev, "EEE disabled\n"); - } - } - bcmgenet_netif_start(dev); netif_tx_start_all_queues(dev); From 0066ae20362162d59592c71b122630e13a6b5dbe Mon Sep 17 00:00:00 2001 From: Nicolai Buchwitz Date: Mon, 30 Mar 2026 16:32:35 +0200 Subject: [PATCH 4/5] Revert "bcmgenet: Disable skip_umac_reset by default" This reverts commit 09d1901497ce36a24c62a0befa76dee0418b48ce. --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index d095968730c5f..226af052bf530 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -65,7 +65,7 @@ /* Forward declarations */ static void bcmgenet_set_rx_mode(struct net_device *dev); -static bool skip_umac_reset = false; +static bool skip_umac_reset = true; module_param(skip_umac_reset, bool, 0444); MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step"); From 47ae68b56a5b003b83511166f0a3918459e43f84 Mon Sep 17 00:00:00 2001 From: Nicolai Buchwitz Date: Mon, 30 Mar 2026 16:32:35 +0200 Subject: [PATCH 5/5] Revert "net: bcmgenet: Workaround #2 for Pi4 Ethernet fail" This reverts commit dfad8d6677d4c11a5b6d599f81802486f5c1d973. --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 226af052bf530..3b8a062004b73 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -65,9 +65,6 @@ /* Forward declarations */ static void bcmgenet_set_rx_mode(struct net_device *dev); -static bool skip_umac_reset = true; -module_param(skip_umac_reset, bool, 0444); -MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step"); static inline void bcmgenet_writel(u32 value, void __iomem *offset) { @@ -2562,11 +2559,6 @@ static void reset_umac(struct bcmgenet_priv *priv) bcmgenet_rbuf_ctrl_set(priv, 0); udelay(10); - if (skip_umac_reset) { - pr_warn("Skipping UMAC reset\n"); - return; - } - /* issue soft reset and disable MAC while updating its registers */ spin_lock_bh(&priv->reg_lock); bcmgenet_umac_writel(priv, CMD_SW_RESET, UMAC_CMD);