ChangeSet 1.2181.4.12, 2005/03/17 17:34:04-08:00, [EMAIL PROTECTED]

        [PATCH] USB: ehci and short in-bulk transfers with 20KB+ urbs
        
        This changes handling of short bulk IN transfers with URB buffers that 
require
        two or more transfer descriptors.  The case is rare in most systems, 
since few
        drivers use such large buffers (bigger than 20KB, assuming 4K-aligned).
        
        The existing code misbehave on at least NEC's EHCI 0.95 silicon, where 
it seems
        to hit a new variant of a silicon quirk relating to dummy TDs.  Symptom 
of the
        misbehavior is that the host stops polling on the IN endpoint, and the 
URB queue
        no longer progresses.
        
        This fix uses simpler logic to detect those short reads, dodging that 
quirk.
        
        Signed-off-by: David Brownell <[EMAIL PROTECTED]>
        Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>



 ehci-q.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)


diff -Nru a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
--- a/drivers/usb/host/ehci-q.c 2005-03-30 15:06:39 -08:00
+++ b/drivers/usb/host/ehci-q.c 2005-03-30 15:06:39 -08:00
@@ -338,10 +338,11 @@
                        if ((token & QTD_STS_HALT) != 0) {
                                stopped = 1;
 
-                       /* magic dummy for some short reads; qh won't advance */
+                       /* magic dummy for some short reads; qh won't advance.
+                        * that silicon quirk can kick in with this dummy too.
+                        */
                        } else if (IS_SHORT_READ (token)
-                                       && (qh->hw_alt_next & QTD_MASK)
-                                               == ehci->async->hw_alt_next) {
+                                       && !(qtd->hw_alt_next & EHCI_LIST_END)) 
{
                                stopped = 1;
                                goto halt;
                        }
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to