int phylink_connect_phy(struct phylink *pl, struct phy_device *phy) { int ret; ret = phy_attach_direct(pl->netdev, phy, 0, pl->link_interface); if (ret) return ret; ret = phylink_bringup_phy(pl, phy); if (ret) phy_detach(phy); return ret; }
static int __phylink_connect_phy(struct phylink *pl, struct phy_device *phy, phy_interface_t interface) { int ret; if (WARN_ON(pl->link_an_mode == MLO_AN_FIXED || (pl->link_an_mode == MLO_AN_INBAND && phy_interface_mode_is_8023z(interface)))) return -EINVAL; if (pl->phydev) return -EBUSY; ret = phy_attach_direct(pl->netdev, phy, 0, interface); if (ret) return ret; ret = phylink_bringup_phy(pl, phy); if (ret) phy_detach(phy); return ret; }