aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/uhci-hcd.h
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2006-05-12 11:19:19 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-06-21 18:04:11 -0400
commit59e29ed91cff90b27d393c7a3d3ac9c3fcaea7dd (patch)
tree5003afaca5960954fe25a2fe6401f43fef48f8bb /drivers/usb/host/uhci-hcd.h
parentb1869000a60b0c72022811f24110a52d3e300b1e (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.h5
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