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

net: stmmac: add __stmmac_release() to complement __stmmac_open()



Rename stmmac_release() to __stmmac_release(), providing a new
stmmac_release() method. Update stmmac_change_mtu() to use
__stmmac_release(). Move the runtime PM handling into stmmac_open()
and stmmac_release().

This avoids stmmac_change_mtu() needlessly fiddling with the runtime
PM state, and will allow future changes to remove code from
__stmmac_open() and __stmmac_release() that should only happen when
the net device is administratively brought up or down.

Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent ff2e19d5
Loading
Loading
Loading
Loading
+25 −16
Original line number Diff line number Diff line
@@ -3965,10 +3965,6 @@ static int __stmmac_open(struct net_device *dev,
	if (!priv->tx_lpi_timer)
		priv->tx_lpi_timer = eee_timer * 1000;

	ret = pm_runtime_resume_and_get(priv->device);
	if (ret < 0)
		return ret;

	if ((!priv->hw->xpcs ||
	     xpcs_get_an_mode(priv->hw->xpcs, mode) != DW_AN_C73)) {
		ret = stmmac_init_phy(dev);
@@ -3976,7 +3972,7 @@ static int __stmmac_open(struct net_device *dev,
			netdev_err(priv->dev,
				   "%s: Cannot attach to PHY (error: %d)\n",
				   __func__, ret);
			goto init_phy_error;
			return ret;
		}
	}

@@ -4028,8 +4024,6 @@ static int __stmmac_open(struct net_device *dev,
	stmmac_release_ptp(priv);
init_error:
	phylink_disconnect_phy(priv->phylink);
init_phy_error:
	pm_runtime_put(priv->device);
	return ret;
}

@@ -4043,21 +4037,23 @@ static int stmmac_open(struct net_device *dev)
	if (IS_ERR(dma_conf))
		return PTR_ERR(dma_conf);

	ret = pm_runtime_resume_and_get(priv->device);
	if (ret < 0)
		goto err;

	ret = __stmmac_open(dev, dma_conf);
	if (ret)
	if (ret) {
		pm_runtime_put(priv->device);
err:
		free_dma_desc_resources(priv, dma_conf);
	}

	kfree(dma_conf);

	return ret;
}

/**
 *  stmmac_release - close entry point of the driver
 *  @dev : device pointer.
 *  Description:
 *  This is the stop entry point of the driver.
 */
static int stmmac_release(struct net_device *dev)
static void __stmmac_release(struct net_device *dev)
{
	struct stmmac_priv *priv = netdev_priv(dev);
	u32 chan;
@@ -4097,6 +4093,19 @@ static int stmmac_release(struct net_device *dev)

	if (stmmac_fpe_supported(priv))
		ethtool_mmsv_stop(&priv->fpe_cfg.mmsv);
}

/**
 *  stmmac_release - close entry point of the driver
 *  @dev : device pointer.
 *  Description:
 *  This is the stop entry point of the driver.
 */
static int stmmac_release(struct net_device *dev)
{
	struct stmmac_priv *priv = netdev_priv(dev);

	__stmmac_release(dev);

	pm_runtime_put(priv->device);

@@ -5895,7 +5904,7 @@ static int stmmac_change_mtu(struct net_device *dev, int new_mtu)
			return PTR_ERR(dma_conf);
		}

		stmmac_release(dev);
		__stmmac_release(dev);

		ret = __stmmac_open(dev, dma_conf);
		if (ret) {