]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: fec: use phydev->eee_cfg.tx_lpi_timer
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 10 Dec 2024 12:38:26 +0000 (12:38 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 12 Dec 2024 04:23:52 +0000 (20:23 -0800)
Rather than maintaining a private copy of the LPI timer, make use of
the LPI timer maintained by phylib. In any case, phylib overwrites the
value of tx_lpi_timer set by the driver in phy_ethtool_get_eee().

Note that feb->eee.tx_lpi_timer is initialised to zero, which is just
the same with phylib's copy, so there should be no functional change.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tested-by: Wei Fang <wei.fang@nxp.com>
Link: https://patch.msgid.link/E1tKzVS-006c67-IJ@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/fec.h
drivers/net/ethernet/freescale/fec_main.c

index 1cca0425d49397bbdb97f2c058bd759f9e602f17..c81f2ea588f2667a70950c9dc0f808e17b78d5d7 100644 (file)
@@ -671,8 +671,6 @@ struct fec_enet_private {
        unsigned int tx_time_itr;
        unsigned int itr_clk_rate;
 
-       /* tx lpi eee mode */
-       struct ethtool_keee eee;
        unsigned int clk_ref_rate;
 
        /* ptp clock period in ns*/
index 1b55047c0237cbea4e44a5a8335af5c11e2325f8..b2daed55bf6c6afc6b1fded58fb4e610423c97f4 100644 (file)
@@ -2045,14 +2045,14 @@ static int fec_enet_us_to_tx_cycle(struct net_device *ndev, int us)
        return us * (fep->clk_ref_rate / 1000) / 1000;
 }
 
-static int fec_enet_eee_mode_set(struct net_device *ndev, bool enable)
+static int fec_enet_eee_mode_set(struct net_device *ndev, u32 lpi_timer,
+                                bool enable)
 {
        struct fec_enet_private *fep = netdev_priv(ndev);
-       struct ethtool_keee *p = &fep->eee;
        unsigned int sleep_cycle, wake_cycle;
 
        if (enable) {
-               sleep_cycle = fec_enet_us_to_tx_cycle(ndev, p->tx_lpi_timer);
+               sleep_cycle = fec_enet_us_to_tx_cycle(ndev, lpi_timer);
                wake_cycle = sleep_cycle;
        } else {
                sleep_cycle = 0;
@@ -2105,7 +2105,9 @@ static void fec_enet_adjust_link(struct net_device *ndev)
                        napi_enable(&fep->napi);
                }
                if (fep->quirks & FEC_QUIRK_HAS_EEE)
-                       fec_enet_eee_mode_set(ndev, phy_dev->enable_tx_lpi);
+                       fec_enet_eee_mode_set(ndev,
+                                             phy_dev->eee_cfg.tx_lpi_timer,
+                                             phy_dev->enable_tx_lpi);
        } else {
                if (fep->link) {
                        netif_stop_queue(ndev);
@@ -3181,7 +3183,6 @@ static int
 fec_enet_get_eee(struct net_device *ndev, struct ethtool_keee *edata)
 {
        struct fec_enet_private *fep = netdev_priv(ndev);
-       struct ethtool_keee *p = &fep->eee;
 
        if (!(fep->quirks & FEC_QUIRK_HAS_EEE))
                return -EOPNOTSUPP;
@@ -3189,8 +3190,6 @@ fec_enet_get_eee(struct net_device *ndev, struct ethtool_keee *edata)
        if (!netif_running(ndev))
                return -ENETDOWN;
 
-       edata->tx_lpi_timer = p->tx_lpi_timer;
-
        return phy_ethtool_get_eee(ndev->phydev, edata);
 }
 
@@ -3198,7 +3197,6 @@ static int
 fec_enet_set_eee(struct net_device *ndev, struct ethtool_keee *edata)
 {
        struct fec_enet_private *fep = netdev_priv(ndev);
-       struct ethtool_keee *p = &fep->eee;
 
        if (!(fep->quirks & FEC_QUIRK_HAS_EEE))
                return -EOPNOTSUPP;
@@ -3206,8 +3204,6 @@ fec_enet_set_eee(struct net_device *ndev, struct ethtool_keee *edata)
        if (!netif_running(ndev))
                return -ENETDOWN;
 
-       p->tx_lpi_timer = edata->tx_lpi_timer;
-
        return phy_ethtool_set_eee(ndev->phydev, edata);
 }