Commit 3fa2540d authored by Russell King (Oracle)'s avatar Russell King (Oracle) Committed by Jakub Kicinski
Browse files

net: fec: use phydev->eee_cfg.tx_lpi_timer



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: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tested-by: default avatarWei Fang <wei.fang@nxp.com>
Link: https://patch.msgid.link/E1tKzVS-006c67-IJ@rmk-PC.armlinux.org.uk


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 175dd907
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -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*/
+6 −10
Original line number Diff line number Diff line
@@ -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);
}