Hi Oliver, Interesting patch, I'm going to try and add support for this to smsc95xx. A few things I noticed: > @@ -929,7 +961,11 @@ kevent (struct work_struct *work) > int retval = 0; > > clear_bit (EVENT_LINK_RESET, &dev->flags); > + status = usb_autopm_get_interface(dev->intf); > + if (status < 0) > + goto skip_reset; > if(info->link_reset && (retval = info->link_reset(dev)) < 0) { > +skip_reset: > devinfo(dev, "link reset failed (%d) usbnet usb-%s-%s, %s", > retval, > dev->udev->bus->bus_name, dev->udev->devpath, on EVENT_LINK_RESET you call usb_autopm_get_interface with no matching usb_autopm_put_interface, so you leak 1 reference count and the device never autosuspends. > @@ -958,7 +994,7 @@ static void tx_complete (struct urb *urb) > > switch (urb->status) { > case -EPIPE: > - usbnet_defer_kevent (dev, EVENT_TX_HALT); > + usbnet_defer_kevent (dev, EVENT_TX_HALT); > break; > > /* software-driven interface shutdown */ The only change here is the addition of trailing whitespace (which both checkpatch.pl and git complain about). You should run your patch through scripts/checkpatch.pl and fix these up. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html