Re: about possible port reset when disconnect

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

 



On Thu, 3 Apr 2014, vichy wrote:

> I add more description.
> in Below #1, since connect status is zero, handshake will fail with
> return -ETIMEDOUT.
> Then go to #2 error label.
> and finally hub_port_status  get -32, -EPIPE.
> 
> 1. Platform-ehci Platform-ehci.0: port 1 reset error -110
>     the -110 is due to below handshake timeout.
>           retval = handshake(ehci, status_reg,
>                      PORT_RESET, 0, 1000);
>           if (retval != 0) {
>                  ehci_err (ehci, "port %d reset error %d\n",
>                      wIndex + 1, retval);
>                  goto error;
>              }

Right -- although the handshake shouldn't time out.  That's a bug in
the hardware.

>  2. hub 4-0:1.0: hub_port_status failed (err = -32)
>      the -32 is due to below error label we set retval = -EPIPE
>      error:
>          /* "stall" on error */
>          retval = -EPIPE;

But...  This will happen only the first time we get the port status.  
After that, ehci->reset_done[wIndex] will be 0 and so handshake() won't 
get called.

hub_port_status() calls get_port_status(), which performs the operation
up to 3 times.  The first time it will fail with -EPIPE, but what about
the second time?

Alan Stern

--
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