Patrick Georgi | d21f68b | 2008-09-02 16:06:22 +0000 | [diff] [blame^] | 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 |