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:
parent
f092c24049
commit
ec6d67e39f
1 changed files with 8 additions and 4 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue