| From fdc03438f53a00294ed9939eb3a1f6db6f3d8963 Mon Sep 17 00:00:00 2001 |
| From: Alan Stern <stern@rowland.harvard.edu> |
| Date: Tue, 28 May 2013 14:03:10 -0400 |
| Subject: USB: revert periodic scheduling bugfix |
| |
| From: Alan Stern <stern@rowland.harvard.edu> |
| |
| commit fdc03438f53a00294ed9939eb3a1f6db6f3d8963 upstream. |
| |
| This patch reverts commit 3e619d04159be54b3daa0b7036b0ce9e067f4b5d |
| (USB: EHCI: fix bug in scheduling periodic split transfers). The |
| commit was valid -- it fixed a real bug -- but the periodic scheduler |
| in ehci-hcd is in such bad shape (especially the part that handles |
| split transactions) that fixing one bug is very likely to cause |
| another to surface. That's what happened in this case; the result was |
| choppy and noisy playback on certain 24-bit audio devices. |
| |
| The only real fix will be to rewrite this entire section of code. My |
| next project... |
| |
| This fixes https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1136110. |
| |
| Thanks to Tim Richardson for extra testing and feedback, and to Joseph |
| Salisbury and Tyson Tan for tracking down the original source of the |
| problem. |
| |
| Signed-off-by: Alan Stern <stern@rowland.harvard.edu> |
| CC: Joseph Salisbury <joseph.salisbury@canonical.com> |
| CC: Tim Richardson <tim@tim-richardson.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/host/ehci-sched.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/usb/host/ehci-sched.c |
| +++ b/drivers/usb/host/ehci-sched.c |
| @@ -213,7 +213,7 @@ static inline unsigned char tt_start_ufr |
| } |
| |
| static const unsigned char |
| -max_tt_usecs[] = { 125, 125, 125, 125, 125, 125, 125, 25 }; |
| +max_tt_usecs[] = { 125, 125, 125, 125, 125, 125, 30, 0 }; |
| |
| /* carryover low/fullspeed bandwidth that crosses uframe boundries */ |
| static inline void carryover_tt_bandwidth(unsigned short tt_usecs[8]) |