Alan, You can see from attached usbmon log: Line 259: submission of SETUP packet for SetFeature(Device Remote-Wakeup) Line 261-299: submission of IN EP6 (CDC-ECM Bulk IN endpoint) Line 300: Completion of SETUP packet Line 301-305: submission of IN EP6 (CDC-ECM Bulk IN endpoint) Line 308-368: completion of all IN EP6 tokens ? Is this helpful ? Regards, Nicolas. -----Original Message----- From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx] Sent: 21 September 2009 22:19 To: Nicolas Chevillot; Oliver Neukum Cc: Greg Heinrich; USB list; Carl Nordbeck; Martin Chabot Subject: Re: [rft]aggressive autosuspend for cdc-ether On Mon, 21 Sep 2009, Oliver Neukum wrote: > Am Montag, 21. September 2009 18:29:32 schrieb Nicolas Chevillot: > > Oliver, > > > > I have been investigating the reasons why our device does not work well > > with USB Autosuspend while using ECM. > > > > I used a USB Analyzer to trace the USB activity and found out that after > > the SetFeature(Device Remote-Wakeup) transfer that precedes USB Suspend, > > an IN token is received on EP6 which is the Bulk IN used by ECM. > > > > We know there is a bug in the USB PHY we use that puts our system in a > > locked state when NAK is sent prior to enter USB Suspend. > > In any case, the IN EP6 IN token should not be sent after the host sends > > SetFeature(Device Remote-Wakeup). > > > > Do you have any idea where this additional IN EP6 IN could come from? > > And if it would be easy to patch? > > I have no idea whence the IN comes. REMOTE_WAKEUP is the last thing > that's requested before the parent's port is suspended: > > if (udev->do_remote_wakeup) { > status = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), > USB_REQ_SET_FEATURE, USB_RECIP_DEVICE, > USB_DEVICE_REMOTE_WAKEUP, 0, > NULL, 0, > USB_CTRL_SET_TIMEOUT); > if (status) > dev_dbg(&udev->dev, "won't remote wakeup, status %d\n", > status); > } > > /* see 7.1.7.6 */ > status = set_port_feature(hub->hdev, port1, USB_PORT_FEAT_SUSPEND); > > Can you verify all URBs are unlinked before the device is supended? On a hunch > put an medelay(50) into usbnet_suspend right before the return statement. It wouldn't hurt to collect a usbmon trace showing everything from plug-in to suspend. That would let us verify whether all the URBs really had been cancelled. Alan Stern -- ****************************************************************************************** This e-mail (including any attachments) is intended only for the recipient(s) named above. It may contain confidential or privileged information and should not be read, copied or otherwise used by any other person. If you are not a named recipient, please contact the sender by telephone (+44-1454-284800) and destroy the original message. Any statement and/or opinion not related to this company's business and expressed in this message is that of the author and does not necessarily reflect those of Icera. This company does not take any responsibility for the views of the author in any matter not related to the company's objective. ****************************************************************************************** -- 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