On 31/08/2026 4:30 pm, Andrew Lunn wrote:
quoted
+static void ax88179a_status(struct usbnet *dev, struct urb *urb)
+{
+ struct ax88179_data *data = dev->driver_priv;
+ struct ax88179_int_data *event;
+ u32 link;
+
+ if (urb->actual_length < 8)
+ return;
+
+ event = urb->transfer_buffer;
+ le32_to_cpus((void *)&event->intdata1);
+
+ link = (((__force u32)event->intdata1) & AX_INT_PPLS_LINK) >> 16;
+
+ if (netif_carrier_ok(dev->net) != link) {
phylink will not like this. It is supposed to be in control of the
carrier.
quoted
+ usbnet_link_change(dev, link, 1);
This also seems to change the carrier under some conditions.
quoted
+ phylink_mac_interrupt(data->phylink);
Is this not sufficient to make phylink change the carrier once the
status has been read from the PHY?
Yes, indeed. This is actually the only thing that needs to be done
in ax88179a_status(). Will fix in the next round.
Birger