RE: [rft]aggressive autosuspend for cdc-ether

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux