]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
generic: 6.18: backport phylink_replay_link() API
authorChristian Marangi <ansuelsmth@gmail.com>
Sat, 9 May 2026 16:17:46 +0000 (18:17 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Tue, 12 May 2026 22:19:29 +0000 (00:19 +0200)
Backport phylink_replay_link() API patch from upstream kernel. This is
mostly needed for force_major_config bool in phylink struct needed for new
standalone PCS series.

While at it also rename the current 703 patch to 703-01 as it's part of the
same series merged upstream.

All patch automatically refreshed.

Link: https://github.com/openwrt/openwrt/pull/23271
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
target/linux/generic/backport-6.18/703-01-v7.0-net-phylink-simplify-phylink_resolve-phylink_major_c.patch [moved from target/linux/generic/backport-6.18/703-v7.0-net-phylink-simplify-phylink_resolve-phylink_major_c.patch with 100% similarity]
target/linux/generic/backport-6.18/703-02-v7.0-net-phylink-introduce-helpers-for-replaying-link-cal.patch [new file with mode: 0644]
target/linux/generic/pending-6.18/706-net-phy-populate-host_interfaces-when-attaching-PHY.patch
target/linux/generic/pending-6.18/737-01-net-phylink-keep-and-use-MAC-supported_interfaces-in.patch
target/linux/generic/pending-6.18/737-02-net-phylink-introduce-internal-phylink-PCS-handling.patch
target/linux/generic/pending-6.18/737-03-net-phylink-add-phylink_release_pcs-to-externally-re.patch
target/linux/generic/pending-6.18/737-05-net-phylink-support-late-PCS-provider-attach.patch
target/linux/generic/pending-6.18/737-07-net-phylink-add-.pcs_link_down-PCS-OP.patch

diff --git a/target/linux/generic/backport-6.18/703-02-v7.0-net-phylink-introduce-helpers-for-replaying-link-cal.patch b/target/linux/generic/backport-6.18/703-02-v7.0-net-phylink-introduce-helpers-for-replaying-link-cal.patch
new file mode 100644 (file)
index 0000000..ccf9a42
--- /dev/null
@@ -0,0 +1,148 @@
+From 96969b132bf1a5b875ab84fcb41a5c4972c3be9e Mon Sep 17 00:00:00 2001
+From: Vladimir Oltean <vladimir.oltean@nxp.com>
+Date: Mon, 19 Jan 2026 14:19:52 +0200
+Subject: [PATCH 2/2] net: phylink: introduce helpers for replaying link
+ callbacks
+
+Some drivers of MAC + tightly integrated PCS (example: SJA1105 + XPCS
+covered by same reset domain) need to perform resets at runtime.
+
+The reset is triggered by the MAC driver, and it needs to restore its
+and the PCS' registers, all invisible to phylink.
+
+However, there is a desire to simplify the API through which the MAC and
+the PCS interact, so this becomes challenging.
+
+Phylink holds all the necessary state to help with this operation, and
+can offer two helpers which walk the MAC and PCS drivers again through
+the callbacks required during a destructive reset operation. The
+procedure is as follows:
+
+Before reset, MAC driver calls phylink_replay_link_begin():
+- Triggers phylink mac_link_down() and pcs_link_down() methods
+
+After reset, MAC driver calls phylink_replay_link_end():
+- Triggers phylink mac_config() -> pcs_config() -> mac_link_up() ->
+  pcs_link_up() methods.
+
+MAC and PCS registers are restored with no other custom driver code.
+
+Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
+Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+Link: https://patch.msgid.link/20260119121954.1624535-3-vladimir.oltean@nxp.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+---
+ drivers/net/phy/phylink.c | 61 +++++++++++++++++++++++++++++++++++++--
+ include/linux/phylink.h   |  5 ++++
+ 2 files changed, 63 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/phy/phylink.c
++++ b/drivers/net/phy/phylink.c
+@@ -28,6 +28,7 @@ enum {
+       PHYLINK_DISABLE_STOPPED,
+       PHYLINK_DISABLE_LINK,
+       PHYLINK_DISABLE_MAC_WOL,
++      PHYLINK_DISABLE_REPLAY,
+       PCS_STATE_DOWN = 0,
+       PCS_STATE_STARTING,
+@@ -77,6 +78,7 @@ struct phylink {
+       bool link_failed;
+       bool suspend_link_up;
++      bool force_major_config;
+       bool major_config_failed;
+       bool mac_supports_eee_ops;
+       bool mac_supports_eee;
+@@ -1681,9 +1683,10 @@ static void phylink_resolve(struct work_
+       if (pl->act_link_an_mode != MLO_AN_FIXED)
+               phylink_apply_manual_flow(pl, &link_state);
+-      if (mac_config && link_state.interface != pl->link_config.interface) {
+-              /* The interface has changed, so force the link down and then
+-               * reconfigure.
++      if ((mac_config && link_state.interface != pl->link_config.interface) ||
++          pl->force_major_config) {
++              /* The interface has changed or a forced major configuration
++               * was requested, so force the link down and then reconfigure.
+                */
+               if (cur_link_state) {
+                       phylink_link_down(pl);
+@@ -1691,6 +1694,7 @@ static void phylink_resolve(struct work_
+               }
+               phylink_major_config(pl, false, &link_state);
+               pl->link_config.interface = link_state.interface;
++              pl->force_major_config = false;
+       }
+       /* If configuration of the interface failed, force the link down
+@@ -4273,6 +4277,57 @@ void phylink_mii_c45_pcs_get_state(struc
+ }
+ EXPORT_SYMBOL_GPL(phylink_mii_c45_pcs_get_state);
++/**
++ * phylink_replay_link_begin() - begin replay of link callbacks for driver
++ *                             which loses state
++ * @pl: a pointer to a &struct phylink returned from phylink_create()
++ *
++ * Helper for MAC drivers which may perform a destructive reset at runtime.
++ * Both the own driver's mac_link_down() method is called, as well as the
++ * pcs_link_down() method of the split PCS (if any).
++ *
++ * This is similar to phylink_stop(), except it does not alter the state of
++ * the phylib PHY (it is assumed that it is not affected by the MAC destructive
++ * reset).
++ */
++void phylink_replay_link_begin(struct phylink *pl)
++{
++      ASSERT_RTNL();
++
++      phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_REPLAY);
++}
++EXPORT_SYMBOL_GPL(phylink_replay_link_begin);
++
++/**
++ * phylink_replay_link_end() - end replay of link callbacks for driver
++ *                           which lost state
++ * @pl: a pointer to a &struct phylink returned from phylink_create()
++ *
++ * Helper for MAC drivers which may perform a destructive reset at runtime.
++ * Both the own driver's mac_config() and mac_link_up() methods, as well as the
++ * pcs_config() and pcs_link_up() method of the split PCS (if any), are called.
++ *
++ * This is similar to phylink_start(), except it does not alter the state of
++ * the phylib PHY.
++ *
++ * One must call this method only within the same rtnl_lock() critical section
++ * as a previous phylink_replay_link_start().
++ */
++void phylink_replay_link_end(struct phylink *pl)
++{
++      ASSERT_RTNL();
++
++      if (WARN(!test_bit(PHYLINK_DISABLE_REPLAY,
++                         &pl->phylink_disable_state),
++               "phylink_replay_link_end() called without a prior phylink_replay_link_begin()\n"))
++              return;
++
++      pl->force_major_config = true;
++      phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_REPLAY);
++      flush_work(&pl->resolve);
++}
++EXPORT_SYMBOL_GPL(phylink_replay_link_end);
++
+ static int __init phylink_init(void)
+ {
+       for (int i = 0; i < ARRAY_SIZE(phylink_sfp_interface_preference); ++i)
+--- a/include/linux/phylink.h
++++ b/include/linux/phylink.h
+@@ -808,4 +808,9 @@ void phylink_mii_c45_pcs_get_state(struc
+ void phylink_decode_usxgmii_word(struct phylink_link_state *state,
+                                uint16_t lpa);
++
++void phylink_replay_link_begin(struct phylink *pl);
++
++void phylink_replay_link_end(struct phylink *pl);
++
+ #endif
index d7e29833fe1d8a0211ff94b3305aee3ea5291603..8030af557f6734465ba621208d1ab4b02a7b096b 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/net/phy/phylink.c
 +++ b/drivers/net/phy/phylink.c
-@@ -2278,7 +2278,7 @@ int phylink_fwnode_phy_connect(struct ph
+@@ -2282,7 +2282,7 @@ int phylink_fwnode_phy_connect(struct ph
  {
        struct fwnode_handle *phy_fwnode;
        struct phy_device *phy_dev;
@@ -29,7 +29,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
        /* Fixed links and 802.3z are handled without needing a PHY */
        if (pl->cfg_link_an_mode == MLO_AN_FIXED ||
-@@ -2308,6 +2308,25 @@ int phylink_fwnode_phy_connect(struct ph
+@@ -2312,6 +2312,25 @@ int phylink_fwnode_phy_connect(struct ph
        if (pl->config->mac_requires_rxc)
                flags |= PHY_F_RXC_ALWAYS_ON;
  
index f0a4d5306c3cbf0bacdf5a9f920c3c3601d5dd2f..81c989028e293e21efadb1a52825bd768136a59f 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
 
 --- a/drivers/net/phy/phylink.c
 +++ b/drivers/net/phy/phylink.c
-@@ -59,6 +59,11 @@ struct phylink {
+@@ -60,6 +60,11 @@ struct phylink {
        /* The link configuration settings */
        struct phylink_link_state link_config;
  
@@ -32,7 +32,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
        /* The current settings */
        phy_interface_t cur_interface;
  
-@@ -623,7 +628,7 @@ static int phylink_validate_mask(struct
+@@ -625,7 +630,7 @@ static int phylink_validate_mask(struct
  static int phylink_validate(struct phylink *pl, unsigned long *supported,
                            struct phylink_link_state *state)
  {
@@ -41,7 +41,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  
        if (state->interface == PHY_INTERFACE_MODE_NA)
                return phylink_validate_mask(pl, NULL, supported, state,
-@@ -1853,6 +1858,9 @@ struct phylink *phylink_create(struct ph
+@@ -1857,6 +1862,9 @@ struct phylink *phylink_create(struct ph
        mutex_init(&pl->state_mutex);
        INIT_WORK(&pl->resolve, phylink_resolve);
  
@@ -51,7 +51,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
        pl->config = config;
        if (config->type == PHYLINK_NETDEV) {
                pl->netdev = to_net_dev(config->dev);
-@@ -2011,7 +2019,7 @@ static int phylink_validate_phy(struct p
+@@ -2015,7 +2023,7 @@ static int phylink_validate_phy(struct p
                 * those which the host supports.
                 */
                phy_interface_and(interfaces, phy->possible_interfaces,
@@ -60,7 +60,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  
                if (phy_interface_empty(interfaces)) {
                        phylink_err(pl, "PHY has no common interfaces\n");
-@@ -2753,12 +2761,12 @@ static phy_interface_t phylink_sfp_selec
+@@ -2757,12 +2765,12 @@ static phy_interface_t phylink_sfp_selec
                return interface;
        }
  
@@ -75,7 +75,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
                return PHY_INTERFACE_MODE_NA;
        }
  
-@@ -3686,14 +3694,14 @@ static int phylink_sfp_config_optical(st
+@@ -3690,14 +3698,14 @@ static int phylink_sfp_config_optical(st
  
        phylink_dbg(pl, "optical SFP: interfaces=[mac=%*pbl, sfp=%*pbl]\n",
                    (int)PHY_INTERFACE_MODE_MAX,
@@ -92,7 +92,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
                          pl->sfp_interfaces);
        if (phy_interface_empty(pl->sfp_interfaces)) {
                phylink_err(pl, "unsupported SFP module: no common interface modes\n");
-@@ -3864,7 +3872,7 @@ static int phylink_sfp_connect_phy(void
+@@ -3868,7 +3876,7 @@ static int phylink_sfp_connect_phy(void
  
        /* Set the PHY's host supported interfaces */
        phy_interface_and(phy->host_interfaces, phylink_sfp_interfaces,
index cbb0a5074107ec8fa9cb48108d9a4e214bd82410..2f138857b453370988cab21f9e2a3da587115dfe 100644 (file)
@@ -62,7 +62,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
 
 --- a/drivers/net/phy/phylink.c
 +++ b/drivers/net/phy/phylink.c
-@@ -59,6 +59,9 @@ struct phylink {
+@@ -60,6 +60,9 @@ struct phylink {
        /* The link configuration settings */
        struct phylink_link_state link_config;
  
@@ -72,7 +72,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
        /* What interface are supported by the current link.
         * Can change on removal or addition of new PCS.
         */
-@@ -149,6 +152,8 @@ static const phy_interface_t phylink_sfp
+@@ -151,6 +154,8 @@ static const phy_interface_t phylink_sfp
  
  static DECLARE_PHY_INTERFACE_MASK(phylink_sfp_interfaces);
  
@@ -81,7 +81,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  /**
   * phylink_set_port_modes() - set the port type modes in the ethtool mask
   * @mask: ethtool link mode mask
-@@ -512,22 +517,59 @@ static void phylink_validate_mask_caps(u
+@@ -514,22 +519,59 @@ static void phylink_validate_mask_caps(u
        linkmode_and(state->advertising, state->advertising, mask);
  }
  
@@ -143,7 +143,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
                /* The PCS, if present, must be setup before phylink_create()
                 * has been called. If the ops is not initialised, print an
                 * error and backtrace rather than oopsing the kernel.
-@@ -539,13 +581,10 @@ static int phylink_validate_mac_and_pcs(
+@@ -541,13 +583,10 @@ static int phylink_validate_mac_and_pcs(
                        return -EINVAL;
                }
  
@@ -161,7 +161,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
                                    phy_modes(state->interface));
                        return -EINVAL;
                }
-@@ -959,12 +998,22 @@ static unsigned int phylink_inband_caps(
+@@ -961,12 +1000,22 @@ static unsigned int phylink_inband_caps(
                                         phy_interface_t interface)
  {
        struct phylink_pcs *pcs;
@@ -188,7 +188,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
                return 0;
  
        return phylink_pcs_inband_caps(pcs, interface);
-@@ -1259,10 +1308,36 @@ static void phylink_major_config(struct
+@@ -1261,10 +1310,36 @@ static void phylink_major_config(struct
                        pl->major_config_failed = true;
                        return;
                }
@@ -226,7 +226,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
        phylink_pcs_neg_mode(pl, pcs, state->interface, state->advertising);
  
        phylink_dbg(pl, "major config, active %s/%s/%s\n",
-@@ -1289,11 +1364,13 @@ static void phylink_major_config(struct
+@@ -1291,11 +1366,13 @@ static void phylink_major_config(struct
        if (pcs_changed) {
                phylink_pcs_disable(pl->pcs);
  
@@ -244,7 +244,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  
                pl->pcs = pcs;
        }
-@@ -1840,8 +1917,9 @@ struct phylink *phylink_create(struct ph
+@@ -1844,8 +1921,9 @@ struct phylink *phylink_create(struct ph
                               phy_interface_t iface,
                               const struct phylink_mac_ops *mac_ops)
  {
@@ -255,7 +255,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  
        /* Validate the supplied configuration */
        if (phy_interface_empty(config->supported_interfaces)) {
-@@ -1857,9 +1935,21 @@ struct phylink *phylink_create(struct ph
+@@ -1861,9 +1939,21 @@ struct phylink *phylink_create(struct ph
        mutex_init(&pl->phydev_mutex);
        mutex_init(&pl->state_mutex);
        INIT_WORK(&pl->resolve, phylink_resolve);
@@ -277,7 +277,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  
        pl->config = config;
        if (config->type == PHYLINK_NETDEV) {
-@@ -1938,10 +2028,16 @@ EXPORT_SYMBOL_GPL(phylink_create);
+@@ -1942,10 +2032,16 @@ EXPORT_SYMBOL_GPL(phylink_create);
   */
  void phylink_destroy(struct phylink *pl)
  {
@@ -294,7 +294,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
        cancel_work_sync(&pl->resolve);
        kfree(pl);
  }
-@@ -2443,6 +2539,7 @@ static irqreturn_t phylink_link_handler(
+@@ -2447,6 +2543,7 @@ static irqreturn_t phylink_link_handler(
   */
  void phylink_start(struct phylink *pl)
  {
@@ -302,7 +302,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
        bool poll = false;
  
        ASSERT_RTNL();
-@@ -2469,6 +2566,10 @@ void phylink_start(struct phylink *pl)
+@@ -2473,6 +2570,10 @@ void phylink_start(struct phylink *pl)
  
        pl->pcs_state = PCS_STATE_STARTED;
  
@@ -313,7 +313,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
        phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_STOPPED);
  
        if (pl->cfg_link_an_mode == MLO_AN_FIXED && pl->link_gpio) {
-@@ -2513,6 +2614,8 @@ EXPORT_SYMBOL_GPL(phylink_start);
+@@ -2517,6 +2618,8 @@ EXPORT_SYMBOL_GPL(phylink_start);
   */
  void phylink_stop(struct phylink *pl)
  {
@@ -322,7 +322,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
        ASSERT_RTNL();
  
        if (pl->sfp_bus)
-@@ -2530,6 +2633,14 @@ void phylink_stop(struct phylink *pl)
+@@ -2534,6 +2637,14 @@ void phylink_stop(struct phylink *pl)
        pl->pcs_state = PCS_STATE_DOWN;
  
        phylink_pcs_disable(pl->pcs);
index e884e70f2861d21c75b70fd1354395f2988d80a5..8590372f5d55c4b4138e005a3df0c78e12612f8b 100644 (file)
@@ -29,15 +29,15 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
 
 --- a/drivers/net/phy/phylink.c
 +++ b/drivers/net/phy/phylink.c
-@@ -86,6 +86,7 @@ struct phylink {
-       bool link_failed;
+@@ -88,6 +88,7 @@ struct phylink {
        bool suspend_link_up;
+       bool force_major_config;
        bool major_config_failed;
 +      bool reconfig_interface;
        bool mac_supports_eee_ops;
        bool mac_supports_eee;
        bool phy_enable_tx_lpi;
-@@ -917,6 +918,55 @@ static void phylink_resolve_an_pause(str
+@@ -919,6 +920,55 @@ static void phylink_resolve_an_pause(str
        }
  }
  
@@ -93,7 +93,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  static unsigned int phylink_pcs_inband_caps(struct phylink_pcs *pcs,
                                    phy_interface_t interface)
  {
-@@ -1730,6 +1780,10 @@ static void phylink_resolve(struct work_
+@@ -1732,6 +1782,10 @@ static void phylink_resolve(struct work_
                if (phy)
                        link_state.link &= pl->phy_state.link;
  
@@ -104,20 +104,19 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
                /* Only update if the PHY link is up */
                if (phy && pl->phy_state.link) {
                        /* If the interface has changed, force a link down
-@@ -1763,7 +1817,8 @@ static void phylink_resolve(struct work_
-       if (pl->act_link_an_mode != MLO_AN_FIXED)
+@@ -1766,7 +1820,7 @@ static void phylink_resolve(struct work_
                phylink_apply_manual_flow(pl, &link_state);
  
--      if (mac_config && link_state.interface != pl->link_config.interface) {
-+      if ((mac_config && link_state.interface != pl->link_config.interface) ||
-+          pl->reconfig_interface) {
-               /* The interface has changed, so force the link down and then
-                * reconfigure.
+       if ((mac_config && link_state.interface != pl->link_config.interface) ||
+-          pl->force_major_config) {
++          pl->force_major_config || pl->reconfig_interface) {
+               /* The interface has changed or a forced major configuration
+                * was requested, so force the link down and then reconfigure.
                 */
-@@ -1773,6 +1828,7 @@ static void phylink_resolve(struct work_
-               }
+@@ -1777,6 +1831,7 @@ static void phylink_resolve(struct work_
                phylink_major_config(pl, false, &link_state);
                pl->link_config.interface = link_state.interface;
+               pl->force_major_config = false;
 +              pl->reconfig_interface = false;
        }
  
index 9e8f9721abd4d625d4267ed3f454ad91d90c8a38..4e7f1751e7c598aad184e04c93baede86157aa01 100644 (file)
@@ -102,7 +102,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  #include <linux/phy.h>
  #include <linux/phy_fixed.h>
  #include <linux/phylink.h>
-@@ -61,6 +62,7 @@ struct phylink {
+@@ -62,6 +63,7 @@ struct phylink {
  
        /* List of available PCS */
        struct list_head pcs_list;
@@ -110,7 +110,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  
        /* What interface are supported by the current link.
         * Can change on removal or addition of new PCS.
-@@ -1952,6 +1954,51 @@ int phylink_set_fixed_link(struct phylin
+@@ -1955,6 +1957,51 @@ int phylink_set_fixed_link(struct phylin
  }
  EXPORT_SYMBOL_GPL(phylink_set_fixed_link);
  
@@ -162,7 +162,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  /**
   * phylink_create() - create a phylink instance
   * @config: a pointer to the target &struct phylink_config
-@@ -2007,6 +2054,11 @@ struct phylink *phylink_create(struct ph
+@@ -2010,6 +2057,11 @@ struct phylink *phylink_create(struct ph
                                 pl->supported_interfaces,
                                 pcs->supported_interfaces);
  
index b707508f07ce045d4afe4f41c3df858691215568..dd32a9e9efe8f7bf3e107ee4fea9151f25b3cbf7 100644 (file)
@@ -22,7 +22,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
 
 --- a/drivers/net/phy/phylink.c
 +++ b/drivers/net/phy/phylink.c
-@@ -1031,6 +1031,12 @@ static void phylink_pcs_link_up(struct p
+@@ -1033,6 +1033,12 @@ static void phylink_pcs_link_up(struct p
                pcs->ops->pcs_link_up(pcs, neg_mode, interface, speed, duplex);
  }
  
@@ -35,7 +35,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
  static void phylink_pcs_disable_eee(struct phylink_pcs *pcs)
  {
        if (pcs && pcs->ops->pcs_disable_eee)
-@@ -1723,6 +1729,8 @@ static void phylink_link_down(struct phy
+@@ -1725,6 +1731,8 @@ static void phylink_link_down(struct phy
  
        phylink_deactivate_lpi(pl);