diff options
author | Karsten Wiese <fzu@wemgehoertderstaat.de> | 2007-12-31 00:55:05 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-02-01 17:35:02 -0500 |
commit | 3b6fcfd0664aeac6ae2fd1231f04b3ed24723c1e (patch) | |
tree | 91f6bf59435039eefcd4a931bed274a0b33882f1 /drivers/usb | |
parent | 91bc4d31e81b15aa6e2d075307b8727041f2e2d1 (diff) |
USB: ehci saves some memory in ISO transfer descriptors
In the EHCI driver, itd->usecs[8] is used in periodic_usecs(), indexed by
uframe. For an ITD's unused uframes it is 0, else it contains the same
value as itd->stream->usecs. To check if an ITD's uframe is used, we can
instead test itd->hw_transaction[uframe]: if used, it will be nonzero no
matter what endianess is used.
This patch replaces those two uses, eliminates itd->usecs[], and saves
eight bytes from each ITD.
Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/host/ehci-sched.c | 4 | ||||
-rw-r--r-- | drivers/usb/host/ehci.h | 1 |
2 files changed, 2 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index 1c771045ccaa..1a94e6cec419 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c | |||
@@ -119,7 +119,8 @@ periodic_usecs (struct ehci_hcd *ehci, unsigned frame, unsigned uframe) | |||
119 | q = &q->fstn->fstn_next; | 119 | q = &q->fstn->fstn_next; |
120 | break; | 120 | break; |
121 | case Q_TYPE_ITD: | 121 | case Q_TYPE_ITD: |
122 | usecs += q->itd->usecs [uframe]; | 122 | if (q->itd->hw_transaction[uframe]) |
123 | usecs += q->itd->stream->usecs; | ||
123 | hw_p = &q->itd->hw_next; | 124 | hw_p = &q->itd->hw_next; |
124 | q = &q->itd->itd_next; | 125 | q = &q->itd->itd_next; |
125 | break; | 126 | break; |
@@ -1536,7 +1537,6 @@ itd_link_urb ( | |||
1536 | uframe = next_uframe & 0x07; | 1537 | uframe = next_uframe & 0x07; |
1537 | frame = next_uframe >> 3; | 1538 | frame = next_uframe >> 3; |
1538 | 1539 | ||
1539 | itd->usecs [uframe] = stream->usecs; | ||
1540 | itd_patch(ehci, itd, iso_sched, packet, uframe); | 1540 | itd_patch(ehci, itd, iso_sched, packet, uframe); |
1541 | 1541 | ||
1542 | next_uframe += stream->interval; | 1542 | next_uframe += stream->interval; |
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index f83472856a80..42969e9d8c44 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h | |||
@@ -602,7 +602,6 @@ struct ehci_itd { | |||
602 | unsigned frame; /* where scheduled */ | 602 | unsigned frame; /* where scheduled */ |
603 | unsigned pg; | 603 | unsigned pg; |
604 | unsigned index[8]; /* in urb->iso_frame_desc */ | 604 | unsigned index[8]; /* in urb->iso_frame_desc */ |
605 | u8 usecs[8]; | ||
606 | } __attribute__ ((aligned (32))); | 605 | } __attribute__ ((aligned (32))); |
607 | 606 | ||
608 | /*-------------------------------------------------------------------------*/ | 607 | /*-------------------------------------------------------------------------*/ |