Messages in this thread Patch in this message |  | | From | Markus Baier <> | | Subject | [PATCH net] net: usb: asix: ax88772: re-add usbnet_link_change() in phylink callbacks | | Date | Fri, 1 May 2026 18:39:41 +0200 |
| |
Commit e0bffe3e6894 ("net: asix: ax88772: migrate to phylink") replaced the asix_adjust_link() PHY callback with phylink's mac_link_up() and mac_link_down() handlers, but did not carry over the usbnet_link_change() notification that commit 805206e66fab ("net: asix: fix "can't send until first packet is send" issue") had added.
As a result, the original symptom returns: when the link comes up, usbnet is never notified, so the RX URB submission stays dormant until some other event (e.g. a transmitted packet triggering the status endpoint interrupt) wakes it up.
This is reproducible with the Apple A1277 USB Ethernet Adapter (05ac:1402, AX88772A based) on a Banana Pro using a static IPv4 configuration. After bringing the interface up, no incoming packets are received until the first outgoing frame triggers usbnet's RX path.
Restore the link change notification, gated on a carrier transition so the call remains idempotent if the status endpoint also reports the change later.
Fixes: e0bffe3e6894 ("net: asix: ax88772: migrate to phylink") Assisted-by: Claude:claude-opus-4-7 Signed-off-by: Markus Baier <Markus.Baier@soslab.tu-darmstadt.de> ---
Transparency notice: The English formulation of this bug report was prepared with AI assistance. The actual system testing and verification of the issue were performed manually without AI involvement. The bug was originally located via git bisect between v5.13 (good) and v5.14 (first bad), pointing to commit e532a096be0e ("net: usb: asix: ax88772: add phylib support"). Commit 805206e66fab later fixed this in v5.19, but commit e0bffe3e6894 (phylink migration in v6.x) re-introduced the same symptom by replacing the asix_adjust_link() callback path without porting the usbnet_link_change() call to the new phylink mac_link_up/down handlers.
First Tested on Linux 6.18.18-gentoo with Apple A1277 USB Ethernet Adapter (05ac:1402, AX88772A based) on a Banana Pro (Allwinner A20). Later on Linux 7.1.0-rc1 with identical hardware setup.
drivers/net/usb/asix_devices.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c index df0bcfedddbc..293ef80c4e30 100644 --- a/drivers/net/usb/asix_devices.c +++ b/drivers/net/usb/asix_devices.c @@ -756,6 +756,7 @@ static void ax88772_mac_link_down(struct phylink_config *config, struct usbnet *dev = netdev_priv(to_net_dev(config->dev)); asix_write_medium_mode(dev, 0, 0); + usbnet_link_change(dev, false, false); } static void ax88772_mac_link_up(struct phylink_config *config, @@ -786,6 +787,7 @@ static void ax88772_mac_link_up(struct phylink_config *config, m |= AX_MEDIUM_RFC; asix_write_medium_mode(dev, m, 0); + usbnet_link_change(dev, true, false); } static const struct phylink_mac_ops ax88772_phylink_mac_ops = { -- 2.52.0
|  |