On Thu, 2015-07-23 at 15:09 +0800, Hayes Wang wrote: > Set needs_remote_wakeup only when the device supports it. > > Signed-off-by: Hayes Wang <hayeswang@xxxxxxxxxxx> > --- > drivers/net/usb/r8152.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c > index e3a0110..eff1f25 100644 > --- a/drivers/net/usb/r8152.c > +++ b/drivers/net/usb/r8152.c > @@ -4059,7 +4059,8 @@ static int rtl8152_probe(struct usb_interface *intf, > break; > } > > - intf->needs_remote_wakeup = 1; > + if (udev->actconfig->desc.bmAttributes & USB_CONFIG_ATT_WAKEUP) > + intf->needs_remote_wakeup = 1; Hi, this is most likely wrong. Usbcore does check for a device's ability to do remote wakeup and will block a runtime suspend if it detects that a remote wakeup would be required but the device cannot deliver. (static int autosuspend_check()) So by removing the flag in the probe() method means that devices will suspend during operations without remote wakeup requested. Thus an incoming packet cannot wake them up. If you remove setting the flag on probe() you need to set it at open() [and reset on close()], as devices which cannot do remote wakeup must only be suspended when they are down. Regards Oliver -- 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