Re: mceusb xhci issue?

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

 



On Thu Aug 11 16:18, Alan Stern wrote:
> I never received any replies to this message.  Should the patch I 
> suggested be merged?
>

Hello,

I applied this updated patch to the fedora23 4.7.2 kernel and the mceusb
transceiver works as expected.

Thanks,

Wade

> 
> 
> On Tue, 12 Jul 2016, Alan Stern wrote:
> 
> > On Sat, 9 Jul 2016, Mauro Carvalho Chehab wrote:
> > 
> > > C/C linux-usb Mailing list:
> > > 
> > > 
> > > Em Wed, 18 May 2016 08:52:28 -0600
> > > Wade Berrier <wberrier@xxxxxxxxx> escreveu:
> > 
> > ...
> > 
> > > > > That message above links to some other threads describing the issue.
> > > > > Here's a post with a patch that supposedly works:
> > > > > 
> > > > > http://www.gossamer-threads.com/lists/mythtv/users/587930
> > > > > 
> > > > > No idea if that's the "correct" way to fix this.
> > > > > 
> > > > > I'll be trying that out and then report back...  
> > > > 
> > > > Indeed, this patch does fix the issue:
> > > > 
> > > > ----------------------
> > > > 
> > > > diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c
> > > > index 31ccdcc..03321d4 100644
> > > > --- a/drivers/usb/core/config.c
> > > > +++ b/drivers/usb/core/config.c
> > > > @@ -247,7 +247,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum,
> > > >  			/* For low-speed, 10 ms is the official minimum.
> > > >  			 * But some "overclocked" devices might want faster
> > > >  			 * polling so we'll allow it. */
> > > > -			n = 32;
> > > > +			n = 10;
> > > >  			break;
> > > >  		}
> > > >  	} else if (usb_endpoint_xfer_isoc(d)) {
> > > > 
> > > > 
> > > > ----------------------
> > > > 
> > > > Is this change appropriate to be pushed upstream?  Where to go from
> > > > here?
> > > 
> > > This issue is at the USB core. So, it should be reported to the
> > > linux-usb mailing list. 
> > > 
> > > The people there should help about how to proceed to get this
> > > fixed upstream.
> > 
> > Here's a proper version of that patch.  If this is okay, it can be 
> > merged.
> > 
> > Alan Stern
> > 
> > 
> > 
> > Index: usb-4.x/drivers/usb/core/config.c
> > ===================================================================
> > --- usb-4.x.orig/drivers/usb/core/config.c
> > +++ usb-4.x/drivers/usb/core/config.c
> > @@ -213,8 +213,10 @@ static int usb_parse_endpoint(struct dev
> >  	memcpy(&endpoint->desc, d, n);
> >  	INIT_LIST_HEAD(&endpoint->urb_list);
> >  
> > -	/* Fix up bInterval values outside the legal range. Use 32 ms if no
> > -	 * proper value can be guessed. */
> > +	/*
> > +	 * Fix up bInterval values outside the legal range.
> > +	 * Use 10 or 8 ms if no proper value can be guessed.
> > +	 */
> >  	i = 0;		/* i = min, j = max, n = default */
> >  	j = 255;
> >  	if (usb_endpoint_xfer_int(d)) {
> > @@ -223,13 +225,15 @@ static int usb_parse_endpoint(struct dev
> >  		case USB_SPEED_SUPER_PLUS:
> >  		case USB_SPEED_SUPER:
> >  		case USB_SPEED_HIGH:
> > -			/* Many device manufacturers are using full-speed
> > +			/*
> > +			 * Many device manufacturers are using full-speed
> >  			 * bInterval values in high-speed interrupt endpoint
> >  			 * descriptors. Try to fix those and fall back to a
> > -			 * 32 ms default value otherwise. */
> > +			 * 8 ms default value otherwise.
> > +			 */
> >  			n = fls(d->bInterval*8);
> >  			if (n == 0)
> > -				n = 9;	/* 32 ms = 2^(9-1) uframes */
> > +				n = 7;	/* 8 ms = 2^(7-1) uframes */
> >  			j = 16;
> >  
> >  			/*
> > @@ -247,7 +251,7 @@ static int usb_parse_endpoint(struct dev
> >  			/* For low-speed, 10 ms is the official minimum.
> >  			 * But some "overclocked" devices might want faster
> >  			 * polling so we'll allow it. */
> > -			n = 32;
> > +			n = 10;
> >  			break;
> >  		}
> >  	} else if (usb_endpoint_xfer_isoc(d)) {
> > @@ -255,10 +259,10 @@ static int usb_parse_endpoint(struct dev
> >  		j = 16;
> >  		switch (to_usb_device(ddev)->speed) {
> >  		case USB_SPEED_HIGH:
> > -			n = 9;		/* 32 ms = 2^(9-1) uframes */
> > +			n = 7;		/* 8 ms = 2^(7-1) uframes */
> >  			break;
> >  		default:		/* USB_SPEED_FULL */
> > -			n = 6;		/* 32 ms = 2^(6-1) frames */
> > +			n = 4;		/* 8 ms = 2^(4-1) frames */
> >  			break;
> >  		}
> >  	}
> 
> 
--
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