int phylink_ethtool_set_eee(struct phylink *pl, struct ethtool_eee *eee) { int ret = -EOPNOTSUPP; WARN_ON(!lockdep_rtnl_is_held()); if (pl->phydev) ret = phy_ethtool_set_eee(pl->phydev, eee); return ret; }
/** * phylink_ethtool_set_eee() - set the energy efficient ethernet parameters * @pl: a pointer to a &struct phylink returned from phylink_create() * @eee: a pointer to a &struct ethtool_eee for the desired parameters */ int phylink_ethtool_set_eee(struct phylink *pl, struct ethtool_eee *eee) { int ret = -EOPNOTSUPP; ASSERT_RTNL(); if (pl->phydev) ret = phy_ethtool_set_eee(pl->phydev, eee); return ret; }
static int dsa_slave_set_eee(struct net_device *dev, struct ethtool_eee *e) { struct dsa_slave_priv *p = netdev_priv(dev); struct dsa_switch *ds = p->parent; int ret; if (!ds->drv->set_eee) return -EOPNOTSUPP; ret = ds->drv->set_eee(ds, p->port, p->phy, e); if (ret) return ret; if (p->phy) ret = phy_ethtool_set_eee(p->phy, e); return ret; }
static int sxgbe_set_eee(struct net_device *dev, struct ethtool_eee *edata) { struct sxgbe_priv_data *priv = netdev_priv(dev); priv->eee_enabled = edata->eee_enabled; if (!priv->eee_enabled) { sxgbe_disable_eee_mode(priv); } else { /* We are asking for enabling the EEE but it is safe * to verify all by invoking the eee_init function. * In case of failure it will return an error. */ priv->eee_enabled = sxgbe_eee_init(priv); if (!priv->eee_enabled) return -EOPNOTSUPP; /* Do not change tx_lpi_timer in case of failure */ priv->tx_lpi_timer = edata->tx_lpi_timer; } return phy_ethtool_set_eee(priv->phydev, edata); }