mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 18:16:41 +07:00
dpaa2-eth: Use stored link settings
Whenever a link state change occurs, we get notified and save the new link settings in the device's private data. In ethtool get_link_ksettings, use the stored state instead of interrogating the firmware each time. Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f7fe7e3d19
commit
cce62943c0
@ -1222,9 +1222,8 @@ static int link_state_update(struct dpaa2_eth_priv *priv)
|
||||
|
||||
/* Chech link state; speed / duplex changes are not treated yet */
|
||||
if (priv->link_state.up == state.up)
|
||||
return 0;
|
||||
goto out;
|
||||
|
||||
priv->link_state = state;
|
||||
if (state.up) {
|
||||
netif_carrier_on(priv->net_dev);
|
||||
netif_tx_start_all_queues(priv->net_dev);
|
||||
@ -1236,6 +1235,9 @@ static int link_state_update(struct dpaa2_eth_priv *priv)
|
||||
netdev_info(priv->net_dev, "Link Event: state %s\n",
|
||||
state.up ? "up" : "down");
|
||||
|
||||
out:
|
||||
priv->link_state = state;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -78,23 +78,14 @@ static int
|
||||
dpaa2_eth_get_link_ksettings(struct net_device *net_dev,
|
||||
struct ethtool_link_ksettings *link_settings)
|
||||
{
|
||||
struct dpni_link_state state = {0};
|
||||
int err = 0;
|
||||
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
|
||||
|
||||
err = dpni_get_link_state(priv->mc_io, 0, priv->mc_token, &state);
|
||||
if (err) {
|
||||
netdev_err(net_dev, "ERROR %d getting link state\n", err);
|
||||
goto out;
|
||||
}
|
||||
|
||||
link_settings->base.autoneg = AUTONEG_DISABLE;
|
||||
if (!(state.options & DPNI_LINK_OPT_HALF_DUPLEX))
|
||||
if (!(priv->link_state.options & DPNI_LINK_OPT_HALF_DUPLEX))
|
||||
link_settings->base.duplex = DUPLEX_FULL;
|
||||
link_settings->base.speed = state.rate;
|
||||
link_settings->base.speed = priv->link_state.rate;
|
||||
|
||||
out:
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void dpaa2_eth_get_strings(struct net_device *netdev, u32 stringset,
|
||||
|
Loading…
Reference in New Issue
Block a user