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