From ebb31c70d43f1fa7916dae3f7a0062355a62e36c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 22 Aug 2023 09:10:32 +0200 Subject: [PATCH] 4.19-stable patches added patches: net-phy-broadcom-stub-c45-read-write-for-54810.patch --- ...oadcom-stub-c45-read-write-for-54810.patch | 55 +++++++++++++++++++ queue-4.19/series | 1 + 2 files changed, 56 insertions(+) create mode 100644 queue-4.19/net-phy-broadcom-stub-c45-read-write-for-54810.patch diff --git a/queue-4.19/net-phy-broadcom-stub-c45-read-write-for-54810.patch b/queue-4.19/net-phy-broadcom-stub-c45-read-write-for-54810.patch new file mode 100644 index 00000000000..be7d8e56620 --- /dev/null +++ b/queue-4.19/net-phy-broadcom-stub-c45-read-write-for-54810.patch @@ -0,0 +1,55 @@ +From 096516d092d54604d590827d05b1022c8f326639 Mon Sep 17 00:00:00 2001 +From: Justin Chen +Date: Sat, 12 Aug 2023 21:41:47 -0700 +Subject: net: phy: broadcom: stub c45 read/write for 54810 + +From: Justin Chen + +commit 096516d092d54604d590827d05b1022c8f326639 upstream. + +The 54810 does not support c45. The mmd_phy_indirect accesses return +arbirtary values leading to odd behavior like saying it supports EEE +when it doesn't. We also see that reading/writing these non-existent +MMD registers leads to phy instability in some cases. + +Fixes: b14995ac2527 ("net: phy: broadcom: Add BCM54810 PHY entry") +Signed-off-by: Justin Chen +Reviewed-by: Florian Fainelli +Link: https://lore.kernel.org/r/1691901708-28650-1-git-send-email-justin.chen@broadcom.com +Signed-off-by: Jakub Kicinski +[florian: resolved conflicts in 4.19] +Signed-off-by: Florian Fainelli +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/phy/broadcom.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +--- a/drivers/net/phy/broadcom.c ++++ b/drivers/net/phy/broadcom.c +@@ -421,6 +421,17 @@ static int bcm5482_read_status(struct ph + return err; + } + ++static int bcm54810_read_mmd(struct phy_device *phydev, int devnum, u16 regnum) ++{ ++ return -EOPNOTSUPP; ++} ++ ++static int bcm54810_write_mmd(struct phy_device *phydev, int devnum, u16 regnum, ++ u16 val) ++{ ++ return -EOPNOTSUPP; ++} ++ + static int bcm5481_config_aneg(struct phy_device *phydev) + { + struct device_node *np = phydev->mdio.dev.of_node; +@@ -684,6 +695,8 @@ static struct phy_driver broadcom_driver + .name = "Broadcom BCM54810", + .features = PHY_GBIT_FEATURES, + .flags = PHY_HAS_INTERRUPT, ++ .read_mmd = bcm54810_read_mmd, ++ .write_mmd = bcm54810_write_mmd, + .config_init = bcm54xx_config_init, + .config_aneg = bcm5481_config_aneg, + .ack_interrupt = bcm_phy_ack_intr, diff --git a/queue-4.19/series b/queue-4.19/series index ec058d407bc..f7ea138c5b3 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -83,3 +83,4 @@ virtio-net-set-queues-after-driver_ok.patch bus-ti-sysc-flush-posted-write-on-enable-before-reset.patch net-fix-the-rto-timer-retransmitting-skb-every-1ms-if-linear-option-is-enabled.patch net-xfrm-amend-xfrma_sec_ctx-nla_policy-structure.patch +net-phy-broadcom-stub-c45-read-write-for-54810.patch -- 2.47.2