On 10 December 2012 12:09, Oliver Neukum <oliver@xxxxxxxxxx> wrote: > So this is a problem with remote wakeup on older hardware? Exactly, the older hardware revisions can't reliably do it. >> Unfortunately we don't know if the connected device supports >> this feature until we query its ID register at runtime. >> >> Suggestions on how best to indicate this capability at runtime >> instead of compile-time would be appreciated, so we don't have >> to repeatedly fail if accidentally enabled. Or maybe this is >> actually the best way? > > If this is a problem with remote wakeup, you should up the > pm counter (usb_autopm_get_noresume()) in .manage_power > That was the reason I implemented this is a callback and not as > a helper in usbnet. Thanks, so something like this should do the job? static int smsc95xx_manage_power(struct usbnet *dev, int on) { struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]); dev->intf->needs_remote_wakeup = on; if (pdata->features & FEATURE_AUTOSUSPEND) return 0; /* this chip revision doesn't support autosuspend */ netdev_info(dev->net, "hardware doesn't support USB autosuspend\n"); if (on) usb_autopm_get_interface_no_resume(dev->intf); else usb_autopm_put_interface_no_suspend(dev->intf); return 0; } -- 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