https://git.reactos.org/?p=reactos.git;a=commitdiff;h=754f749cfd5ec4b406592…
commit 754f749cfd5ec4b40659293eb3d5d7ac96dbbdea
Author: Vadim Galyant <vgal(a)rambler.ru>
AuthorDate: Wed Nov 29 21:50:43 2017 +0900
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sun Jan 21 19:35:42 2018 +0100
[USBPORT] Add USB2_GetOverhead().
---
drivers/usb/usbport/usb2.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/usb/usbport/usb2.c b/drivers/usb/usbport/usb2.c
index 11429ec108..3755fb4e80 100644
--- a/drivers/usb/usbport/usb2.c
+++ b/drivers/usb/usbport/usb2.c
@@ -10,6 +10,54 @@
//#define NDEBUG
#include <debug.h>
+ULONG
+NTAPI
+USB2_GetOverhead(IN PUSB2_TT_ENDPOINT TtEndpoint)
+{
+ ULONG TransferType;
+ ULONG Direction;
+ ULONG DeviceSpeed;
+ ULONG Overhead;
+ ULONG HostDelay;
+
+ TransferType = TtEndpoint->TtEndpointParams.TransferType;
+ Direction = TtEndpoint->TtEndpointParams.Direction;
+ DeviceSpeed = TtEndpoint->TtEndpointParams.Direction;
+
+ HostDelay = TtEndpoint->Tt->HcExtension->HcDelayTime;
+
+ if (DeviceSpeed == UsbHighSpeed)
+ {
+ if (Direction == USBPORT_TRANSFER_DIRECTION_OUT)
+ {
+ if (TransferType == USBPORT_TRANSFER_TYPE_ISOCHRONOUS)
+ Overhead = HostDelay + USB2_HS_ISOCHRONOUS_OUT_OVERHEAD;
+ else
+ Overhead = HostDelay + USB2_HS_INTERRUPT_OUT_OVERHEAD;
+ }
+ else
+ {
+ if (TransferType == USBPORT_TRANSFER_TYPE_ISOCHRONOUS)
+ Overhead = HostDelay + USB2_HS_ISOCHRONOUS_IN_OVERHEAD;
+ else
+ Overhead = HostDelay + USB2_HS_ISOCHRONOUS_OUT_OVERHEAD;
+ }
+ }
+ else if (DeviceSpeed == UsbFullSpeed)
+ {
+ if (TransferType == USBPORT_TRANSFER_TYPE_ISOCHRONOUS)
+ Overhead = HostDelay + USB2_FS_ISOCHRONOUS_OVERHEAD;
+ else
+ Overhead = HostDelay + USB2_FS_INTERRUPT_OVERHEAD;
+ }
+ else
+ {
+ Overhead = HostDelay + USB2_LS_INTERRUPT_OVERHEAD;
+ }
+
+ return Overhead;
+}
+
VOID
NTAPI
USB2_InitTtEndpoint(IN PUSB2_TT_ENDPOINT TtEndpoint,