Commit 5fde7eda authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'net-add-and-use-phy_disable_eee'

Heiner Kallweit says:

====================
net: add and use phy_disable_eee

If a MAC driver doesn't support EEE, then the PHY shouldn't advertise it.
Add phy_disable_eee() for this purpose, and use it in cpsw driver.
====================

Link: https://patch.msgid.link/5139374e-7151-4d0d-8ba9-9ec3d9b52f67@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents e8f33238 c9f5a5da
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -635,6 +635,8 @@ static void cpsw_slave_open(struct cpsw_slave *slave, struct cpsw_priv *priv)

	slave->phy = phy;

	phy_disable_eee(slave->phy);

	phy_attached_info(slave->phy);

	phy_start(slave->phy);
@@ -1225,7 +1227,6 @@ static const struct ethtool_ops cpsw_ethtool_ops = {
	.get_link_ksettings	= cpsw_get_link_ksettings,
	.set_link_ksettings	= cpsw_set_link_ksettings,
	.get_eee	= cpsw_get_eee,
	.set_eee	= cpsw_set_eee,
	.nway_reset	= cpsw_nway_reset,
	.get_ringparam = cpsw_get_ringparam,
	.set_ringparam = cpsw_set_ringparam,
+0 −12
Original line number Diff line number Diff line
@@ -434,18 +434,6 @@ int cpsw_get_eee(struct net_device *ndev, struct ethtool_keee *edata)
		return -EOPNOTSUPP;
}

int cpsw_set_eee(struct net_device *ndev, struct ethtool_keee *edata)
{
	struct cpsw_priv *priv = netdev_priv(ndev);
	struct cpsw_common *cpsw = priv->cpsw;
	int slave_no = cpsw_slave_index(cpsw, priv);

	if (cpsw->slaves[slave_no].phy)
		return phy_ethtool_set_eee(cpsw->slaves[slave_no].phy, edata);
	else
		return -EOPNOTSUPP;
}

int cpsw_nway_reset(struct net_device *ndev)
{
	struct cpsw_priv *priv = netdev_priv(ndev);
+2 −1
Original line number Diff line number Diff line
@@ -778,6 +778,8 @@ static void cpsw_slave_open(struct cpsw_slave *slave, struct cpsw_priv *priv)

	slave->phy = phy;

	phy_disable_eee(slave->phy);

	phy_attached_info(slave->phy);

	phy_start(slave->phy);
@@ -1209,7 +1211,6 @@ static const struct ethtool_ops cpsw_ethtool_ops = {
	.get_link_ksettings	= cpsw_get_link_ksettings,
	.set_link_ksettings	= cpsw_set_link_ksettings,
	.get_eee		= cpsw_get_eee,
	.set_eee		= cpsw_set_eee,
	.nway_reset		= cpsw_nway_reset,
	.get_ringparam		= cpsw_get_ringparam,
	.set_ringparam		= cpsw_set_ringparam,
+0 −1
Original line number Diff line number Diff line
@@ -497,7 +497,6 @@ int cpsw_get_link_ksettings(struct net_device *ndev,
int cpsw_set_link_ksettings(struct net_device *ndev,
			    const struct ethtool_link_ksettings *ecmd);
int cpsw_get_eee(struct net_device *ndev, struct ethtool_keee *edata);
int cpsw_set_eee(struct net_device *ndev, struct ethtool_keee *edata);
int cpsw_nway_reset(struct net_device *ndev);
void cpsw_get_ringparam(struct net_device *ndev,
			struct ethtool_ringparam *ering,
+16 −0
Original line number Diff line number Diff line
@@ -3003,6 +3003,22 @@ void phy_support_eee(struct phy_device *phydev)
}
EXPORT_SYMBOL(phy_support_eee);

/**
 * phy_disable_eee - Disable EEE for the PHY
 * @phydev: Target phy_device struct
 *
 * This function is used by MAC drivers for MAC's which don't support EEE.
 * It disables EEE on the PHY layer.
 */
void phy_disable_eee(struct phy_device *phydev)
{
	linkmode_zero(phydev->supported_eee);
	linkmode_zero(phydev->advertising_eee);
	phydev->eee_cfg.tx_lpi_enabled = false;
	phydev->eee_cfg.eee_enabled = false;
}
EXPORT_SYMBOL_GPL(phy_disable_eee);

/**
 * phy_support_sym_pause - Enable support of symmetrical pause
 * @phydev: target phy_device struct
Loading