diff --git a/drivers/usb/usbport/device.c b/drivers/usb/usbport/device.c index f1cb04eb47f..7ba54f594e4 100644 --- a/drivers/usb/usbport/device.c +++ b/drivers/usb/usbport/device.c @@ -1377,6 +1377,12 @@ USBPORT_InitializeDevice(IN PUSBPORT_DEVICE_HANDLE DeviceHandle, (MaxPacketSize == 16) || (MaxPacketSize == 32) || (MaxPacketSize == 64)); + + if (DeviceHandle->DeviceSpeed == UsbHighSpeed && + DeviceHandle->DeviceDescriptor.bDeviceClass == USB_DEVICE_CLASS_HUB) + { + DeviceHandle->Flags |= DEVICE_HANDLE_FLAG_USB2HUB; + } } else { @@ -1761,10 +1767,14 @@ USBPORT_RestoreDevice(IN PDEVICE_OBJECT FdoDevice, } } - if (NewDeviceHandle->Flags & DEVICE_HANDLE_FLAG_INITIALIZED) + if (NewDeviceHandle->Flags & DEVICE_HANDLE_FLAG_USB2HUB) { DPRINT1("USBPORT_RestoreDevice: FIXME Transaction Translator\n"); NewDeviceHandle->TtCount = OldDeviceHandle->TtCount; + +#ifndef NDEBUG + DbgBreakPoint(); +#endif } while (!IsListEmpty(&OldDeviceHandle->PipeHandleList)) diff --git a/drivers/usb/usbport/usbport.h b/drivers/usb/usbport/usbport.h index 3bba591f069..940c944c485 100644 --- a/drivers/usb/usbport/usbport.h +++ b/drivers/usb/usbport/usbport.h @@ -104,7 +104,7 @@ /* Device handle Flags (USBPORT_DEVICE_HANDLE) */ #define DEVICE_HANDLE_FLAG_ROOTHUB 0x00000002 #define DEVICE_HANDLE_FLAG_REMOVED 0x00000008 -#define DEVICE_HANDLE_FLAG_INITIALIZED 0x00000010 +#define DEVICE_HANDLE_FLAG_USB2HUB 0x00000010 /* Endpoint Flags (USBPORT_ENDPOINT) */ #define ENDPOINT_FLAG_DMA_TYPE 0x00000001