mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-31 12:23:31 +00:00
[USBOHCI]
- Don't allocate buffer twice - Cleanup endpoint / general transfer descriptors svn path=/branches/usb-bringup/; revision=51892
This commit is contained in:
@@ -167,6 +167,8 @@ CUSBQueue::AddUSBRequest(
|
||||
//
|
||||
// request not supported, please try later
|
||||
//
|
||||
DPRINT1("Request Type %x not supported\n", Type);
|
||||
ASSERT(FALSE);
|
||||
return Status;
|
||||
}
|
||||
|
||||
@@ -389,7 +391,7 @@ CUSBQueue::TransferDescriptorCompletionCallback(
|
||||
//
|
||||
// FIXME: check if complete
|
||||
//
|
||||
|
||||
ASSERT(Request->IsRequestComplete());
|
||||
//
|
||||
// release request
|
||||
//
|
||||
|
||||
@@ -706,7 +706,7 @@ CUSBRequest::BuildControlTransferDescriptor(
|
||||
//
|
||||
// now create the data descriptor
|
||||
//
|
||||
Status = CreateGeneralTransferDescriptor(&DataDescriptor, m_TransferBufferLength);
|
||||
Status = CreateGeneralTransferDescriptor(&DataDescriptor, 0);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
//
|
||||
@@ -924,6 +924,8 @@ VOID
|
||||
CUSBRequest::CompletionCallback(
|
||||
struct _OHCI_ENDPOINT_DESCRIPTOR * OutDescriptor)
|
||||
{
|
||||
POHCI_GENERAL_TD TransferDescriptor, NextTransferDescriptor;
|
||||
|
||||
DPRINT1("CUSBRequest::CompletionCallback\n");
|
||||
|
||||
//
|
||||
@@ -938,6 +940,45 @@ CUSBRequest::CompletionCallback(
|
||||
// FIXME: cleanup descriptors
|
||||
//
|
||||
|
||||
//
|
||||
// get first general transfer descriptor
|
||||
//
|
||||
TransferDescriptor = (POHCI_GENERAL_TD)OutDescriptor->HeadLogicalDescriptor;
|
||||
|
||||
while(TransferDescriptor)
|
||||
{
|
||||
//
|
||||
// get next
|
||||
//
|
||||
NextTransferDescriptor = (POHCI_GENERAL_TD)TransferDescriptor->NextLogicalDescriptor;
|
||||
|
||||
//
|
||||
// is there a buffer associated
|
||||
//
|
||||
if (TransferDescriptor->BufferSize)
|
||||
{
|
||||
//
|
||||
// release buffer
|
||||
//
|
||||
m_DmaManager->Release(TransferDescriptor->BufferLogical, TransferDescriptor->BufferSize);
|
||||
}
|
||||
|
||||
//
|
||||
// release descriptor
|
||||
//
|
||||
m_DmaManager->Release(TransferDescriptor, sizeof(OHCI_GENERAL_TD));
|
||||
|
||||
//
|
||||
// move to next
|
||||
//
|
||||
TransferDescriptor = NextTransferDescriptor;
|
||||
}
|
||||
|
||||
//
|
||||
// release endpoint descriptor
|
||||
//
|
||||
m_DmaManager->Release(OutDescriptor, sizeof(OHCI_ENDPOINT_DESCRIPTOR));
|
||||
|
||||
//
|
||||
// signal completion event
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user