Re: [RFC] usb/dummy_hcd: use -ESHUTDOWN if an URB can not be assigned to an UDC EP

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

 



On Wed, 29 Aug 2012, Sebastian Andrzej Siewior wrote:

> > > The BULK URBs usually don't make a scene. They re-submit the complete
> > > queue length in BH so we have a little time in between. The INTR URB is
> > > more evil because usbnet's intr_complete() causes to re-submitt it
> > > immediately. That means we hardly do any progress and end up in a
> > > busy loop.
> > 
> > This sounds like a possible bug in usbnet.  If usbnet encounters
> > repeated failures while trying to communicate with a USB device, it
> > shouldn't continue to retry indefinitely.  It should eventually give
> > up, and maybe do a device reset.
> 
> So to interrupt the intr packets we need atleast
> 
> diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
> index 8531c1c..8dc3705 100644
> --- a/drivers/net/usb/usbnet.c
> +++ b/drivers/net/usb/usbnet.c
> @@ -194,6 +194,7 @@ static void intr_complete (struct urb *urb)
>  	/* software-driven interface shutdown */
>  	case -ENOENT:		/* urb killed */
>  	case -ESHUTDOWN:	/* hardware gone */
> +	case -EPIPE:
>  		netif_dbg(dev, ifdown, dev->net,
>  			  "intr shutdown, code %d\n", status);
>  		return;

No, that's not right.  For one thing, the error is -EPROTO, not -EPIPE.  
But aside from that, usbnet has a comment a little farther down:

	/* NOTE:  not throttling like RX/TX, since this endpoint
	 * already polls infrequently
	 */

Corresponding to this, there's a comment in dummy-hcd:

		case PIPE_INTERRUPT:
			/* FIXME is it urb->interval since the last xfer?
			 * this almost certainly polls too fast.
			 */

So the problem appears to be that dummy-hcd doesn't implement the right
interval for periodic transfers.  I'd accept a patch to fix that.

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