RE: [PATCH] usb:solve resume usb device identification problem

From: Lipengcheng
Date: Mon Jul 11 2016 - 21:49:20 EST



Hi,
> -----Original Message-----
> From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx]
> Sent: Monday, July 11, 2016 10:51 PM
> To: Lipengcheng
> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; baolu.lu@xxxxxxxxxxxxxxx; chasemetzger15@xxxxxxxxx; mathias.nyman@xxxxxxxxxxxxxxx;
> oneukum@xxxxxxxx; jun.li@xxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH] usb:solve resume usb device identification problem
>
> On Mon, 11 Jul 2016, Pengcheng Li wrote:
>
> > A usb device in the connection state. Then host is suspend and resume.
> > But the usb device could not be at the right speed. We should be reset
> > the reset.
> >
> > Signed-off-by: Pengcheng Li <lpc.li@xxxxxxxxxxxxx>
>
> Why wouldn't the USB device be at the right speed?
>
For example, some USB3 devices are resume, the device may be in USB 2.0 Device States. We should have USB 2.0 reset and
make the device into the right speed.

> You should _not_ reset the device if it is at the right speed.
>
> > @@ -3512,6 +3512,10 @@ int usb_port_resume(struct usb_device *udev, pm_message_t msg)
> > }
> > }
> >
> > + retval = hub_port_reset(hub, port1, udev, HUB_ROOT_RESET_TIME, false);
> > + if (retval < 0)
> > + hub_port_disable(hub, port1, 0);
> > +
>
> Most of the time (for example, for non-USB3 devices) this would be wrong.
>
Yes, USB3 devices have this problem. So far, USB2 device can not find this problem.
I mainly refer to the reset process of usb enumeration process.
> Alan Stern

Thanks,
Pengcheng Li