From: Greg Kroah-Hartman Date: Fri, 10 Dec 2021 12:17:27 +0000 (+0100) Subject: 5.15-stable patches X-Git-Tag: v4.4.295~62 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f0623e5962ce34d470dcfc78ec21dfbe36517fd9;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: net-dsa-mv88e6xxx-fix-don-t-use-phy_detect-on-internal-phy-s.patch --- diff --git a/queue-5.15/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch b/queue-5.15/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch index 8aa7ee81dca..a8fd5427844 100644 --- a/queue-5.15/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch +++ b/queue-5.15/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch @@ -35,7 +35,7 @@ Signed-off-by: Greg Kroah-Hartman --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c -@@ -693,44 +693,48 @@ static void mv88e6xxx_mac_config(struct +@@ -699,44 +699,48 @@ static void mv88e6xxx_mac_config(struct { struct mv88e6xxx_chip *chip = ds->priv; struct mv88e6xxx_port *p; diff --git a/queue-5.15/net-dsa-mv88e6xxx-fix-don-t-use-phy_detect-on-internal-phy-s.patch b/queue-5.15/net-dsa-mv88e6xxx-fix-don-t-use-phy_detect-on-internal-phy-s.patch new file mode 100644 index 00000000000..8828b40e024 --- /dev/null +++ b/queue-5.15/net-dsa-mv88e6xxx-fix-don-t-use-phy_detect-on-internal-phy-s.patch @@ -0,0 +1,99 @@ +From 2b29cb9e3f7f038c7f50ad2583b47caf5cb1eaf2 Mon Sep 17 00:00:00 2001 +From: "Russell King (Oracle)" +Date: Tue, 7 Dec 2021 10:32:43 +0000 +Subject: net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's" + +From: Russell King (Oracle) + +commit 2b29cb9e3f7f038c7f50ad2583b47caf5cb1eaf2 upstream. + +This commit fixes a misunderstanding in commit 4a3e0aeddf09 ("net: dsa: +mv88e6xxx: don't use PHY_DETECT on internal PHY's"). + +For Marvell DSA switches with the PHY_DETECT bit (for non-6250 family +devices), controls whether the PPU polls the PHY to retrieve the link, +speed, duplex and pause status to update the port configuration. This +applies for both internal and external PHYs. + +For some switches such as 88E6352 and 88E6390X, PHY_DETECT has an +additional function of enabling auto-media mode between the internal +PHY and SERDES blocks depending on which first gains link. + +The original intention of commit 5d5b231da7ac (net: dsa: mv88e6xxx: use +PHY_DETECT in mac_link_up/mac_link_down) was to allow this bit to be +used to detect when this propagation is enabled, and allow software to +update the port configuration. This has found to be necessary for some +switches which do not automatically propagate status from the SERDES to +the port, which includes the 88E6390. However, commit 4a3e0aeddf09 +("net: dsa: mv88e6xxx: don't use PHY_DETECT on internal PHY's") breaks +this assumption. + +Maarten Zanders has confirmed that the issue he was addressing was for +an 88E6250 switch, which does not have a PHY_DETECT bit in bit 12, but +instead a link status bit. Therefore, mv88e6xxx_port_ppu_updates() does +not report correctly. + +This patch resolves the above issues by reverting Maarten's change and +instead making mv88e6xxx_port_ppu_updates() indicate whether the port +is internal for the 88E6250 family of switches. + + Yes, you're right, I'm targeting the 6250 family. And yes, your + suggestion would solve my case and is a better implementation for + the other devices (as far as I can see). + +Fixes: 4a3e0aeddf09 ("net: dsa: mv88e6xxx: don't use PHY_DETECT on internal PHY's") +Signed-off-by: Russell King +Tested-by: Maarten Zanders +Link: https://lore.kernel.org/r/E1muXm7-00EwJB-7n@rmk-PC.armlinux.org.uk +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/dsa/mv88e6xxx/chip.c | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +--- a/drivers/net/dsa/mv88e6xxx/chip.c ++++ b/drivers/net/dsa/mv88e6xxx/chip.c +@@ -471,6 +471,12 @@ static int mv88e6xxx_port_ppu_updates(st + u16 reg; + int err; + ++ /* The 88e6250 family does not have the PHY detect bit. Instead, ++ * report whether the port is internal. ++ */ ++ if (chip->info->family == MV88E6XXX_FAMILY_6250) ++ return port < chip->info->num_internal_phys; ++ + err = mv88e6xxx_port_read(chip, port, MV88E6XXX_PORT_STS, ®); + if (err) { + dev_err(chip->dev, +@@ -753,11 +759,10 @@ static void mv88e6xxx_mac_link_down(stru + ops = chip->info->ops; + + mv88e6xxx_reg_lock(chip); +- /* Internal PHYs propagate their configuration directly to the MAC. +- * External PHYs depend on whether the PPU is enabled for this port. ++ /* Force the link down if we know the port may not be automatically ++ * updated by the switch or if we are using fixed-link mode. + */ +- if (((!mv88e6xxx_phy_is_internal(ds, port) && +- !mv88e6xxx_port_ppu_updates(chip, port)) || ++ if ((!mv88e6xxx_port_ppu_updates(chip, port) || + mode == MLO_AN_FIXED) && ops->port_sync_link) + err = ops->port_sync_link(chip, port, mode, false); + mv88e6xxx_reg_unlock(chip); +@@ -780,11 +785,11 @@ static void mv88e6xxx_mac_link_up(struct + ops = chip->info->ops; + + mv88e6xxx_reg_lock(chip); +- /* Internal PHYs propagate their configuration directly to the MAC. +- * External PHYs depend on whether the PPU is enabled for this port. ++ /* Configure and force the link up if we know that the port may not ++ * automatically updated by the switch or if we are using fixed-link ++ * mode. + */ +- if ((!mv88e6xxx_phy_is_internal(ds, port) && +- !mv88e6xxx_port_ppu_updates(chip, port)) || ++ if (!mv88e6xxx_port_ppu_updates(chip, port) || + mode == MLO_AN_FIXED) { + /* FIXME: for an automedia port, should we force the link + * down here - what if the link comes up due to "other" media diff --git a/queue-5.15/series b/queue-5.15/series index 20d421947c3..f9ba4873b4d 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -26,6 +26,7 @@ can-m_can-m_can_read_fifo-fix-memory-leak-in-error-branch.patch can-m_can-pci-fix-incorrect-reference-clock-rate.patch can-m_can-pci-fix-iomap_read_fifo-and-iomap_write_fifo.patch can-m_can-disable-and-ignore-elo-interrupt.patch +net-dsa-mv88e6xxx-fix-don-t-use-phy_detect-on-internal-phy-s.patch net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch x86-sme-explicitly-map-new-efi-memmap-table-as-encrypted.patch platform-x86-amd-pmc-fix-s2idle-failures-on-certain-amd-laptops.patch