USB: EHCI: report actual_length for iso transfers

This patch (as1259b) makes ehci-hcd return the total number of bytes
transferred in urb->actual_length for Isochronous transfers.
Until now, the actual_length value was unaccountably left at 0.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Alan Stern 2009-06-29 14:34:59 -04:00 committed by Greg Kroah-Hartman
parent f092c24049
commit ec6d67e39f

View file

@ -1619,11 +1619,14 @@ itd_complete (
desc->status = -EPROTO; desc->status = -EPROTO;
/* HC need not update length with this error */ /* HC need not update length with this error */
if (!(t & EHCI_ISOC_BABBLE)) if (!(t & EHCI_ISOC_BABBLE)) {
desc->actual_length = EHCI_ITD_LENGTH (t); desc->actual_length = EHCI_ITD_LENGTH(t);
urb->actual_length += desc->actual_length;
}
} else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) { } else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) {
desc->status = 0; desc->status = 0;
desc->actual_length = EHCI_ITD_LENGTH (t); desc->actual_length = EHCI_ITD_LENGTH(t);
urb->actual_length += desc->actual_length;
} else { } else {
/* URB was too late */ /* URB was too late */
desc->status = -EXDEV; desc->status = -EXDEV;
@ -2014,7 +2017,8 @@ sitd_complete (
desc->status = -EPROTO; desc->status = -EPROTO;
} else { } else {
desc->status = 0; desc->status = 0;
desc->actual_length = desc->length - SITD_LENGTH (t); desc->actual_length = desc->length - SITD_LENGTH(t);
urb->actual_length += desc->actual_length;
} }
stream->depth -= stream->interval << 3; stream->depth -= stream->interval << 3;