1- handle error conditions 2- handle disconnect more gracefully (ie. make calling layer aware that the device doesn't exist somehow) 3- usbhub: 4 - proper client enumeration (esp. detach) 5 - change detection 6 - power management 7- handle interrupts more cleverly: 8 create a new queue for the interrupt with a couple of TD sequences, 9 - each ending with "breadth first" flag 10 - linked as a chain 11 add that queue at the appropriate times in front of the default structure so the max latency is honored 12 - only one intr chain per framelist item, so it must be arranged appropriately 13 reads from usb device just look at "invalidated" tds and the results they got 14 handled tds get reactivated as a ring structure 15 - added as child of the oldest td 16 - queue header already dropped the td, so no issue there 17 18 this setup ensures that: 19 - the max latency of the device is honored 20 - the client knows the right order of the data 21 - there is no need for an interrupt handler 22 - but must be polled at least max latency * num tds times -> more tds = less time pressure 23