Commit 27755ff8 authored by Ioana Ciornei's avatar Ioana Ciornei Committed by David S. Miller

net: phylink: Add phylink_mac_link_{up, down} wrapper functions

This is a cosmetic patch that reduces the clutter in phylink_resolve
around calling the .mac_link_up/.mac_link_down driver callbacks.  In a
further patch this logic will be extended to emit notifications in case
a net device does not exist.
Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c920f745
...@@ -395,6 +395,34 @@ static const char *phylink_pause_to_str(int pause) ...@@ -395,6 +395,34 @@ static const char *phylink_pause_to_str(int pause)
} }
} }
static void phylink_mac_link_up(struct phylink *pl,
struct phylink_link_state link_state)
{
struct net_device *ndev = pl->netdev;
pl->ops->mac_link_up(ndev, pl->link_an_mode,
pl->phy_state.interface,
pl->phydev);
netif_carrier_on(ndev);
netdev_info(ndev,
"Link is Up - %s/%s - flow control %s\n",
phy_speed_to_str(link_state.speed),
phy_duplex_to_str(link_state.duplex),
phylink_pause_to_str(link_state.pause));
}
static void phylink_mac_link_down(struct phylink *pl)
{
struct net_device *ndev = pl->netdev;
netif_carrier_off(ndev);
pl->ops->mac_link_down(ndev, pl->link_an_mode,
pl->phy_state.interface);
netdev_info(ndev, "Link is Down\n");
}
static void phylink_resolve(struct work_struct *w) static void phylink_resolve(struct work_struct *w)
{ {
struct phylink *pl = container_of(w, struct phylink, resolve); struct phylink *pl = container_of(w, struct phylink, resolve);
...@@ -443,24 +471,10 @@ static void phylink_resolve(struct work_struct *w) ...@@ -443,24 +471,10 @@ static void phylink_resolve(struct work_struct *w)
} }
if (link_state.link != netif_carrier_ok(ndev)) { if (link_state.link != netif_carrier_ok(ndev)) {
if (!link_state.link) { if (!link_state.link)
netif_carrier_off(ndev); phylink_mac_link_down(pl);
pl->ops->mac_link_down(ndev, pl->link_an_mode, else
pl->phy_state.interface); phylink_mac_link_up(pl, link_state);
netdev_info(ndev, "Link is Down\n");
} else {
pl->ops->mac_link_up(ndev, pl->link_an_mode,
pl->phy_state.interface,
pl->phydev);
netif_carrier_on(ndev);
netdev_info(ndev,
"Link is Up - %s/%s - flow control %s\n",
phy_speed_to_str(link_state.speed),
phy_duplex_to_str(link_state.duplex),
phylink_pause_to_str(link_state.pause));
}
} }
if (!link_state.link && pl->mac_link_dropped) { if (!link_state.link && pl->mac_link_dropped) {
pl->mac_link_dropped = false; pl->mac_link_dropped = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment