Re: Multiple chatty devices on Intel 5 Series/3400 USB2 EHCI controller act erratic

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

 



On Fri, 10 Jun 2016, Alan Stern wrote:

> On Fri, 10 Jun 2016, Sean M. Pappalardo wrote:
> 
> > 
> > 
> > On 06/10/2016 11:06 AM, Alan Stern wrote:
> > > Have you tried plugging the audio
> > > devices into a USB-2 hub and plugging the hub into bus 2?
> > 
> > That works!! (I forgot, my monitor has a built-in 2-port USB2.0 hub.)
> 
> Great!
> 
> > So what's going on here? How does adding another hub layer help??
> 
> I have no clue.  The idea was suggested by the fact that your devices
> worked okay when plugged into the docking station, which has its own
> hub.

Actually, after reviewing the data files you sent I did have a thought.  
Can you try out the patch below and see if it makes any difference?

Alan Stern



Index: usb-4.x/drivers/usb/host/ehci-sched.c
===================================================================
--- usb-4.x.orig/drivers/usb/host/ehci-sched.c
+++ usb-4.x/drivers/usb/host/ehci-sched.c
@@ -861,7 +861,7 @@ done:
 static int qh_schedule(struct ehci_hcd *ehci, struct ehci_qh *qh)
 {
 	int		status = 0;
-	unsigned	uframe;
+	int		uframe;
 	unsigned	c_mask;
 	struct ehci_qh_hw	*hw = qh->hw;
 	struct ehci_tt		*tt;
@@ -893,7 +893,7 @@ static int qh_schedule(struct ehci_hcd *
 
 		for (i = qh->ps.bw_period; i > 0; --i) {
 			frame = ++ehci->random_frame & (qh->ps.bw_period - 1);
-			for (uframe = 0; uframe < 8; uframe++) {
+			for (uframe = 7; uframe >= 0; uframe--) {
 				status = check_intr_schedule(ehci,
 						frame, uframe, qh, &c_mask, tt);
 				if (status == 0)

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