From: Greg Kroah-Hartman Date: Fri, 10 Dec 2021 12:17:19 +0000 (+0100) Subject: drop queue-5.10/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch X-Git-Tag: v4.4.295~63 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=401dd837d4c3a137467172cd6416cc00f6459869;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-5.10/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch --- diff --git a/queue-5.10/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch b/queue-5.10/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch deleted file mode 100644 index cc3a461eb12..00000000000 --- a/queue-5.10/net-dsa-mv88e6xxx-allow-use-of-phys-on-cpu-and-dsa-ports.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 04ec4e6250e5f58b525b08f3dca45c7d7427620e Mon Sep 17 00:00:00 2001 -From: "Russell King (Oracle)" -Date: Thu, 9 Dec 2021 09:26:47 +0000 -Subject: net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports - -From: Russell King (Oracle) - -commit 04ec4e6250e5f58b525b08f3dca45c7d7427620e upstream. - -Martyn Welch reports that his CPU port is unable to link where it has -been necessary to use one of the switch ports with an internal PHY for -the CPU port. The reason behind this is the port control register is -left forcing the link down, preventing traffic flow. - -This occurs because during initialisation, phylink expects the link to -be down, and DSA forces the link down by synthesising a call to the -DSA drivers phylink_mac_link_down() method, but we don't touch the -forced-link state when we later reconfigure the port. - -Resolve this by also unforcing the link state when we are operating in -PHY mode and the PPU is set to poll the PHY to retrieve link status -information. - -Reported-by: Martyn Welch -Tested-by: Martyn Welch -Fixes: 3be98b2d5fbc ("net: dsa: Down cpu/dsa ports phylink will control") -Cc: # 5.7: 2b29cb9e3f7f: net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's" -Signed-off-by: Russell King (Oracle) -Link: https://lore.kernel.org/r/E1mvFhP-00F8Zb-Ul@rmk-PC.armlinux.org.uk -Signed-off-by: Jakub Kicinski -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/dsa/mv88e6xxx/chip.c | 66 ++++++++++++++++++++------------------- - 1 file changed, 35 insertions(+), 31 deletions(-) - ---- a/drivers/net/dsa/mv88e6xxx/chip.c -+++ b/drivers/net/dsa/mv88e6xxx/chip.c -@@ -666,44 +666,48 @@ static void mv88e6xxx_mac_config(struct - { - struct mv88e6xxx_chip *chip = ds->priv; - struct mv88e6xxx_port *p; -- int err; -+ int err = 0; - - p = &chip->ports[port]; - -- /* FIXME: is this the correct test? If we're in fixed mode on an -- * internal port, why should we process this any different from -- * PHY mode? On the other hand, the port may be automedia between -- * an internal PHY and the serdes... -- */ -- if ((mode == MLO_AN_PHY) && mv88e6xxx_phy_is_internal(ds, port)) -- return; -- - mv88e6xxx_reg_lock(chip); -- /* In inband mode, the link may come up at any time while the link -- * is not forced down. Force the link down while we reconfigure the -- * interface mode. -- */ -- if (mode == MLO_AN_INBAND && p->interface != state->interface && -- chip->info->ops->port_set_link) -- chip->info->ops->port_set_link(chip, port, LINK_FORCED_DOWN); -- -- err = mv88e6xxx_port_config_interface(chip, port, state->interface); -- if (err && err != -EOPNOTSUPP) -- goto err_unlock; -- -- err = mv88e6xxx_serdes_pcs_config(chip, port, mode, state->interface, -- state->advertising); -- /* FIXME: we should restart negotiation if something changed - which -- * is something we get if we convert to using phylinks PCS operations. -- */ -- if (err > 0) -- err = 0; -+ -+ if (mode != MLO_AN_PHY || !mv88e6xxx_phy_is_internal(ds, port)) { -+ /* In inband mode, the link may come up at any time while the -+ * link is not forced down. Force the link down while we -+ * reconfigure the interface mode. -+ */ -+ if (mode == MLO_AN_INBAND && -+ p->interface != state->interface && -+ chip->info->ops->port_set_link) -+ chip->info->ops->port_set_link(chip, port, -+ LINK_FORCED_DOWN); -+ -+ err = mv88e6xxx_port_config_interface(chip, port, -+ state->interface); -+ if (err && err != -EOPNOTSUPP) -+ goto err_unlock; -+ -+ err = mv88e6xxx_serdes_pcs_config(chip, port, mode, -+ state->interface, -+ state->advertising); -+ /* FIXME: we should restart negotiation if something changed - -+ * which is something we get if we convert to using phylinks -+ * PCS operations. -+ */ -+ if (err > 0) -+ err = 0; -+ } - - /* Undo the forced down state above after completing configuration -- * irrespective of its state on entry, which allows the link to come up. -+ * irrespective of its state on entry, which allows the link to come -+ * up in the in-band case where there is no separate SERDES. Also -+ * ensure that the link can come up if the PPU is in use and we are -+ * in PHY mode (we treat the PPU as an effective in-band mechanism.) - */ -- if (mode == MLO_AN_INBAND && p->interface != state->interface && -- chip->info->ops->port_set_link) -+ if (chip->info->ops->port_set_link && -+ ((mode == MLO_AN_INBAND && p->interface != state->interface) || -+ (mode == MLO_AN_PHY && mv88e6xxx_port_ppu_updates(chip, port)))) - chip->info->ops->port_set_link(chip, port, LINK_UNFORCED); - - p->interface = state->interface; diff --git a/queue-5.10/series b/queue-5.10/series index 92814176d70..6b4d28d4fee 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -17,5 +17,4 @@ ib-hfi1-fix-leak-of-rcvhdrtail_dummy_kvaddr.patch can-kvaser_usb-get-can-clock-frequency-from-device.patch can-kvaser_pciefd-kvaser_pciefd_rx_error_frame-increase-correct-stats-rx-tx-_errors-counter.patch can-sja1000-fix-use-after-free-in-ems_pcmcia_add_card.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