aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-sched.c
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2013-03-22 13:31:45 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-25 16:35:05 -0400
commit6e018751a35f6ef7ad04eb8006b5886b6a7c47f5 (patch)
treee1dde22b7aa1ac3566ebbbd29b78df611e05c572 /drivers/usb/host/ehci-sched.c
parent7655e3160c78a18c2ecf7bf4dee0bbfe58575c7f (diff)
USB: EHCI: convert singly-linked lists to list_heads
This patch (as1664) converts ehci-hcd's async_unlink, async_iaa, and intr_unlink from singly-linked lists to standard doubly-linked list_heads. Originally it didn't seem necessary to use list_heads, because items are always added to and removed from these lists in FIFO order. But now with more list processing going on, it's easier to use the standard routines than continue with a roll-your-own approach. I don't know if the code ends up being notably shorter, but the patterns will be more familiar to any kernel hacker. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/ehci-sched.c')
-rw-r--r--drivers/usb/host/ehci-sched.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index e7a2dbd27b1e..c833febf8df0 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -620,17 +620,13 @@ static void start_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh)
620 qh->unlink_cycle = ehci->intr_unlink_cycle; 620 qh->unlink_cycle = ehci->intr_unlink_cycle;
621 621
622 /* New entries go at the end of the intr_unlink list */ 622 /* New entries go at the end of the intr_unlink list */
623 if (ehci->intr_unlink) 623 list_add_tail(&qh->unlink_node, &ehci->intr_unlink);
624 ehci->intr_unlink_last->unlink_next = qh;
625 else
626 ehci->intr_unlink = qh;
627 ehci->intr_unlink_last = qh;
628 624
629 if (ehci->intr_unlinking) 625 if (ehci->intr_unlinking)
630 ; /* Avoid recursive calls */ 626 ; /* Avoid recursive calls */
631 else if (ehci->rh_state < EHCI_RH_RUNNING) 627 else if (ehci->rh_state < EHCI_RH_RUNNING)
632 ehci_handle_intr_unlinks(ehci); 628 ehci_handle_intr_unlinks(ehci);
633 else if (ehci->intr_unlink == qh) { 629 else if (ehci->intr_unlink.next == &qh->unlink_node) {
634 ehci_enable_event(ehci, EHCI_HRTIMER_UNLINK_INTR, true); 630 ehci_enable_event(ehci, EHCI_HRTIMER_UNLINK_INTR, true);
635 ++ehci->intr_unlink_cycle; 631 ++ehci->intr_unlink_cycle;
636 } 632 }