diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-09-23 16:32:51 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-09-23 16:32:51 -0400 |
commit | c04ee4b1136e462722567cf6e76bb35a181574a7 (patch) | |
tree | 58dbc5ad8be3e1eae398ee463f8a11ac84662487 /drivers/usb/host/ehci-q.c | |
parent | dc4fea795bf7e3f80dbfa3a40b8ab89427e9aed5 (diff) |
Revert "Revert "USB: EHCI: support running URB giveback in tasklet context""
This reverts commit 3b8d7321ed4b8511e17048303b806ffcc2806077, which
brings back commit 428aac8a81058e2303677a8fbf26670229e51d3a as it should
be working for the 3.13-rc1 merge window now that Alan's other fixes are
here in the tree already.
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Ming Lei <ming.lei@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/ehci-q.c')
-rw-r--r-- | drivers/usb/host/ehci-q.c | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c index a7f776a13eb1..e321804c3475 100644 --- a/drivers/usb/host/ehci-q.c +++ b/drivers/usb/host/ehci-q.c | |||
@@ -247,8 +247,6 @@ static int qtd_copy_status ( | |||
247 | 247 | ||
248 | static void | 248 | static void |
249 | ehci_urb_done(struct ehci_hcd *ehci, struct urb *urb, int status) | 249 | ehci_urb_done(struct ehci_hcd *ehci, struct urb *urb, int status) |
250 | __releases(ehci->lock) | ||
251 | __acquires(ehci->lock) | ||
252 | { | 250 | { |
253 | if (usb_pipetype(urb->pipe) == PIPE_INTERRUPT) { | 251 | if (usb_pipetype(urb->pipe) == PIPE_INTERRUPT) { |
254 | /* ... update hc-wide periodic stats */ | 252 | /* ... update hc-wide periodic stats */ |
@@ -274,11 +272,8 @@ __acquires(ehci->lock) | |||
274 | urb->actual_length, urb->transfer_buffer_length); | 272 | urb->actual_length, urb->transfer_buffer_length); |
275 | #endif | 273 | #endif |
276 | 274 | ||
277 | /* complete() can reenter this HCD */ | ||
278 | usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb); | 275 | usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb); |
279 | spin_unlock (&ehci->lock); | ||
280 | usb_hcd_giveback_urb(ehci_to_hcd(ehci), urb, status); | 276 | usb_hcd_giveback_urb(ehci_to_hcd(ehci), urb, status); |
281 | spin_lock (&ehci->lock); | ||
282 | } | 277 | } |
283 | 278 | ||
284 | static int qh_schedule (struct ehci_hcd *ehci, struct ehci_qh *qh); | 279 | static int qh_schedule (struct ehci_hcd *ehci, struct ehci_qh *qh); |