On Tue, Nov 19, 2024 at 02:46:59PM +0100, Krzysztof Hałasa wrote: > Hi, > > ASIX AX88772B based USB 10/100 Ethernet adapter doesn't come > up ("carrier off"), despite the built-in 100BASE-FX PHY positive link > indication. > > The problem appears to be in usbnet.c framework: > > void usbnet_link_change(struct usbnet *dev, bool link, bool need_reset) > { > /* update link after link is reseted */ > if (link && !need_reset) > netif_carrier_on(dev->net); > else > netif_carrier_off(dev->net); > > if (need_reset && link) > usbnet_defer_kevent(dev, EVENT_LINK_RESET); > else > usbnet_defer_kevent(dev, EVENT_LINK_CHANGE); > } static int ax88772_phylink_setup(struct usbnet *dev) { struct asix_common_private *priv = dev->driver_priv; phy_interface_t phy_if_mode; struct phylink *phylink; priv->phylink_config.dev = &dev->net->dev; priv->phylink_config.type = PHYLINK_NETDEV; priv->phylink_config.mac_capabilities = MAC_SYM_PAUSE | MAC_ASYM_PAUSE | MAC_10 | MAC_100; etc. This device is using phylink to manage the PHY. phylink will than manage the carrier. It assumes it is solely responsible for the carrier. So i think your fix is wrong. You probably should be removing all code in this driver which touches the carrier. Andrew