diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2006-05-12 11:19:19 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-21 18:04:11 -0400 |
commit | 59e29ed91cff90b27d393c7a3d3ac9c3fcaea7dd (patch) | |
tree | 5003afaca5960954fe25a2fe6401f43fef48f8bb /drivers/usb/host/uhci-hcd.h | |
parent | b1869000a60b0c72022811f24110a52d3e300b1e (diff) |
[PATCH] UHCI: Remove non-iso TDs as they are used
This patch (as680) frees non-isochronous TDs as they are used, rather
than all at once when an URB is complete. Although not a terribly
important change in itself, it opens the door to a later enhancement
that will reduce storage requirements by allocating only a limited
number of TDs at any time for each endpoint queue.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/uhci-hcd.h')
-rw-r--r-- | drivers/usb/host/uhci-hcd.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h index 8e5778650493..3093ca250942 100644 --- a/drivers/usb/host/uhci-hcd.h +++ b/drivers/usb/host/uhci-hcd.h | |||
@@ -129,6 +129,7 @@ struct uhci_qh { | |||
129 | struct list_head queue; /* Queue of urbps for this QH */ | 129 | struct list_head queue; /* Queue of urbps for this QH */ |
130 | struct uhci_qh *skel; /* Skeleton for this QH */ | 130 | struct uhci_qh *skel; /* Skeleton for this QH */ |
131 | struct uhci_td *dummy_td; /* Dummy TD to end the queue */ | 131 | struct uhci_td *dummy_td; /* Dummy TD to end the queue */ |
132 | struct uhci_td *post_td; /* Last TD completed */ | ||
132 | 133 | ||
133 | unsigned int unlink_frame; /* When the QH was unlinked */ | 134 | unsigned int unlink_frame; /* When the QH was unlinked */ |
134 | int state; /* QH_STATE_xxx; see above */ | 135 | int state; /* QH_STATE_xxx; see above */ |
@@ -136,7 +137,7 @@ struct uhci_qh { | |||
136 | 137 | ||
137 | unsigned int initial_toggle:1; /* Endpoint's current toggle value */ | 138 | unsigned int initial_toggle:1; /* Endpoint's current toggle value */ |
138 | unsigned int needs_fixup:1; /* Must fix the TD toggle values */ | 139 | unsigned int needs_fixup:1; /* Must fix the TD toggle values */ |
139 | unsigned int is_stopped:1; /* Queue was stopped by an error */ | 140 | unsigned int is_stopped:1; /* Queue was stopped by error/unlink */ |
140 | } __attribute__((aligned(16))); | 141 | } __attribute__((aligned(16))); |
141 | 142 | ||
142 | /* | 143 | /* |
@@ -456,8 +457,6 @@ struct urb_priv { | |||
456 | struct list_head td_list; | 457 | struct list_head td_list; |
457 | 458 | ||
458 | unsigned fsbr : 1; /* URB turned on FSBR */ | 459 | unsigned fsbr : 1; /* URB turned on FSBR */ |
459 | unsigned short_transfer : 1; /* URB got a short transfer, no | ||
460 | * need to rescan */ | ||
461 | }; | 460 | }; |
462 | 461 | ||
463 | 462 | ||