From 2fc7e292e5c277938b10d50f99e8fd531fe2e8ed Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sat, 19 Jul 2008 15:59:21 +0000 Subject: [PATCH] When calculating the actual length for requests, we don't want to include the 8 byte request header. It was included in the case of outgoing request transfers before. In fact we always just want the length of the data phase, which for non-requests just happens to be the whole transfer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26508 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/busses/usb/ehci.cpp | 5 ++--- src/add-ons/kernel/busses/usb/ohci.cpp | 4 ++-- src/add-ons/kernel/busses/usb/uhci.cpp | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/add-ons/kernel/busses/usb/ehci.cpp b/src/add-ons/kernel/busses/usb/ehci.cpp index 3df536339f..8069756526 100644 --- a/src/add-ons/kernel/busses/usb/ehci.cpp +++ b/src/add-ons/kernel/busses/usb/ehci.cpp @@ -1089,11 +1089,10 @@ EHCI::FinishTransfers() transfer->data_descriptor, vector, vectorCount, &nextDataToggle); - } else { + } else if (transfer->data_descriptor) { // calculate transfered length actualLength = ReadActualLength( - (ehci_qtd *)transfer->queue_head->element_log, - &nextDataToggle); + transfer->data_descriptor, &nextDataToggle); } transfer->transfer->TransferPipe()->SetDataToggle(nextDataToggle); diff --git a/src/add-ons/kernel/busses/usb/ohci.cpp b/src/add-ons/kernel/busses/usb/ohci.cpp index ede5d50574..f580f721c9 100644 --- a/src/add-ons/kernel/busses/usb/ohci.cpp +++ b/src/add-ons/kernel/busses/usb/ohci.cpp @@ -1029,10 +1029,10 @@ OHCI::_FinishTransfers() actualLength = _ReadDescriptorChain( transfer->data_descriptor, vector, vectorCount); - } else { + } else if (transfer->data_descriptor) { // read the actual length that was sent actualLength = _ReadActualLength( - transfer->first_descriptor); + transfer->data_descriptor); } if (transfer->transfer->IsFragmented()) { diff --git a/src/add-ons/kernel/busses/usb/uhci.cpp b/src/add-ons/kernel/busses/usb/uhci.cpp index 119e4998bb..75d380d237 100644 --- a/src/add-ons/kernel/busses/usb/uhci.cpp +++ b/src/add-ons/kernel/busses/usb/uhci.cpp @@ -1225,10 +1225,10 @@ UHCI::FinishTransfers() transfer->data_descriptor, vector, vectorCount, &lastDataToggle); - } else { + } else if (transfer->data_descriptor) { // read the actual length that was sent actualLength = ReadActualLength( - transfer->first_descriptor, &lastDataToggle); + transfer->data_descriptor, &lastDataToggle); } transfer->transfer->TransferPipe()->SetDataToggle(lastDataToggle == 0);