+ SMask = USB2_GetSMASK(Endpoint->TtEndpoint);
+ EndpointProperties->InterruptScheduleMask = SMask;
+
+ CMask = USB2_GetCMASK(Endpoint->TtEndpoint);
+ EndpointProperties->SplitCompletionMask = CMask;
+
+ AllocedBusTime = TtEndpoint->CalcBusTime;
+
+ EndpointBandwidth = USB2_MICROFRAMES * AllocedBusTime;
+ EndpointProperties->UsbBandwidth = EndpointBandwidth;
+
+ ActualPeriod = Endpoint->TtEndpoint->ActualPeriod;
+ EndpointProperties->Period = ActualPeriod;
+
+ ScheduleOffset = Endpoint->TtEndpoint->StartFrame;
+ EndpointProperties->ScheduleOffset = ScheduleOffset;
+
+ Factor = USB2_FRAMES / ActualPeriod;
+ ASSERT(Factor);
+
+ n = ScheduleOffset * Factor;
+
+ if (TtExtension)
+ {
+ for (ix = 0; ix < Factor; ix++)
+ {
+ TtExtension->Bandwidth[n + ix] -= EndpointBandwidth;
+ }
+ }
+ else
+ {
+ for (ix = 1; ix < Factor; ix++)
+ {
+ FdoExtension->Bandwidth[n + ix] -= EndpointBandwidth;
+ }
+ }
+
+ USBPORT_DumpingEndpointProperties(EndpointProperties);
+ USBPORT_DumpingTtEndpoint(Endpoint->TtEndpoint);
+
+ if (AllocedBusTime >= (USB2_FS_MAX_PERIODIC_ALLOCATION / 2))
+ {
+ DPRINT1("USBPORT_AllocateBandwidthUSB2: AllocedBusTime >= 0.5 * MAX_ALLOCATION \n");
+ }