diff --git a/src/add-ons/kernel/bus_managers/usb/Pipe.cpp b/src/add-ons/kernel/bus_managers/usb/Pipe.cpp index 624437a30e..cac95e3678 100644 --- a/src/add-ons/kernel/bus_managers/usb/Pipe.cpp +++ b/src/add-ons/kernel/bus_managers/usb/Pipe.cpp @@ -302,6 +302,11 @@ IsochronousPipe::QueueIsochronous(void *data, size_t dataLength, isochronousData->starting_frame_number = startingFrameNumber; isochronousData->flags = flags; + for (uint32 i = 0; i < isochronousData->packet_count; i++) { + isochronousData->packet_descriptors[i].actual_length = 0; + isochronousData->packet_descriptors[i].status = B_NO_INIT; + } + Transfer *transfer = new(std::nothrow) Transfer(this); if (!transfer) { delete isochronousData; diff --git a/src/add-ons/kernel/busses/usb/ohci.cpp b/src/add-ons/kernel/busses/usb/ohci.cpp index 9599d9e666..ba6f19e655 100644 --- a/src/add-ons/kernel/busses/usb/ohci.cpp +++ b/src/add-ons/kernel/busses/usb/ohci.cpp @@ -1632,12 +1632,6 @@ OHCI::_SubmitIsochronousTransfer(Transfer *transfer) if (pipe->Direction() == Pipe::Out) _WriteIsochronousDescriptorChain(firstDescriptor, transfer->Vector(), transfer->VectorCount(), transfer->IsPhysical()); - else - // Initialize the packet descriptors - for (uint32 i = 0; i < isochronousData->packet_count; i++) { - isochronousData->packet_descriptors[i].actual_length = 0; - isochronousData->packet_descriptors[i].status = B_NO_INIT; - } // Add to the transfer list ohci_endpoint_descriptor *endpoint diff --git a/src/add-ons/kernel/busses/usb/uhci.cpp b/src/add-ons/kernel/busses/usb/uhci.cpp index 303cb86369..8c3ca73bbc 100644 --- a/src/add-ons/kernel/busses/usb/uhci.cpp +++ b/src/add-ons/kernel/busses/usb/uhci.cpp @@ -1314,12 +1314,6 @@ UHCI::SubmitIsochronous(Transfer *transfer) generic_io_vec *vector = transfer->Vector(); WriteIsochronousDescriptorChain(isoRequest, isochronousData->packet_count, vector); - } else { - // Initialize the packet descriptors - for (uint32 i = 0; i < isochronousData->packet_count; i++) { - isochronousData->packet_descriptors[i].actual_length = 0; - isochronousData->packet_descriptors[i].status = B_NO_INIT; - } } TRACE("isochronous submitted size=%ld bytes, TDs=%" B_PRId32 ", " diff --git a/src/add-ons/kernel/busses/usb/xhci.cpp b/src/add-ons/kernel/busses/usb/xhci.cpp index e7438d961c..632444a4c1 100644 --- a/src/add-ons/kernel/busses/usb/xhci.cpp +++ b/src/add-ons/kernel/busses/usb/xhci.cpp @@ -1015,15 +1015,6 @@ XHCI::SubmitNormalRequest(Transfer *transfer) } if (isochronousData->starting_frame_number != NULL) *isochronousData->starting_frame_number = frame; - - // TODO: The OHCI bus driver seems to also do this for inbound - // isochronous transfers. Perhaps it should be moved into the stack? - if (directionIn) { - for (uint32 i = 0; i < isochronousData->packet_count; i++) { - isochronousData->packet_descriptors[i].actual_length = 0; - isochronousData->packet_descriptors[i].status = B_NO_INIT; - } - } } // Set the ENT (Evaluate Next TRB) bit, so that the HC will not switch