]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
xhci: allow TRACE to work with EVENT ring dequeue
authorAdam Wallis <awallis@codeaurora.org>
Thu, 5 Oct 2017 08:21:47 +0000 (11:21 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Oct 2017 09:01:58 +0000 (11:01 +0200)
inc_deq() currently bails earlier for EVENT rings than the common return
point of the function, due to the fact that EVENT rings do not have
link TRBs. The unfortunate side effect of this is that the very useful
trace_xhci_inc_deq() function is not called/usable for EVENT ring
debug.

This patch provides a refactor by removing the multiple return exit
points into a single return which additionally allows for all rings to
use the trace function.

Signed-off-by: Adam Wallis <awallis@codeaurora.org>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-ring.c

index 15afe1e37816724f8604506bbc03ac2c2058e8a8..4764121ba2b1e8cc7d0d5ecfcdca6d3223b70e72 100644 (file)
@@ -171,13 +171,13 @@ static void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring)
        if (ring->type == TYPE_EVENT) {
                if (!last_trb_on_seg(ring->deq_seg, ring->dequeue)) {
                        ring->dequeue++;
-                       return;
+                       goto out;
                }
                if (last_trb_on_ring(ring, ring->deq_seg, ring->dequeue))
                        ring->cycle_state ^= 1;
                ring->deq_seg = ring->deq_seg->next;
                ring->dequeue = ring->deq_seg->trbs;
-               return;
+               goto out;
        }
 
        /* All other rings have link trbs */
@@ -190,6 +190,7 @@ static void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring)
                ring->dequeue = ring->deq_seg->trbs;
        }
 
+out:
        trace_xhci_inc_deq(ring);
 
        return;