On Thu, 27 May 2010, Alessio Sangalli wrote: > On 05/27/2010 08:20 AM, Alan Stern wrote: > > > Can you do a bisection search between those two kernels to find out > > where the problems start to appear? > > I was not able to do the bisect. Tomorrow I will try with a guy that is > much more expert than I am with git and I will see. Okay, good luck. > > I'm surprised you were able to get anything to work at all with that > > code removed. The qtd_copy_status() routine is where the driver > > determines how many bytes were transferred between the computer and the > > device. Without it, the computer would think no data was getting > > transferred. > > After some further investigation, I have found that if I change: > ehci-q.c qtd_copy_status() line 153: > > ******** > if (likely (QTD_PID (token) != 2)) > urb->actual_length += length - QTD_LENGTH (token); > ******** > int temp; > ... > if (likely (QTD_PID (token) != 2)) > temp = length - QTD_LENGTH (token); > ******** > > (I used "temp" just to execute all the code, but not modify the value of > "urb->actual_length") the problem I have with interrupts disappears!!! > Again, read performance from a memory stick goes down 3 or 4 times. Try running a test: Use usbmon to see what gets sent to and from the memory stick both with and without your change in place. Instructions are in Documentation/usb/usbmon.txt. > Any idea what could be that triggers this problem? Please note, the > problem is present only if I attach a hub; without hubs everything's > fine (but 2.6.19 was working even with hubs) No, I have no idea. Nor can I imagine why having a hub might make a difference. 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