usb: dwc3: trace: print enqueue/dequeue pointers too
authorFelipe Balbi <balbi@kernel.org>
Wed, 29 Jan 2020 07:20:19 +0000 (09:20 +0200)
committerFelipe Balbi <balbi@kernel.org>
Sun, 15 Mar 2020 09:06:39 +0000 (11:06 +0200)
By printing enqueue/dequeue pointers, we can make sure that our TRB
handling is correct. We've had a recent situation where we were not
always dequeueing all TRBs in an SG list and this helped figure out
what the problem was.

Signed-off-by: Felipe Balbi <balbi@kernel.org>
drivers/usb/dwc3/trace.h

index 9edff17..3054b89 100644 (file)
@@ -227,6 +227,8 @@ DECLARE_EVENT_CLASS(dwc3_log_trb,
                __field(u32, size)
                __field(u32, ctrl)
                __field(u32, type)
+               __field(u32, enqueue)
+               __field(u32, dequeue)
        ),
        TP_fast_assign(
                __assign_str(name, dep->name);
@@ -236,9 +238,12 @@ DECLARE_EVENT_CLASS(dwc3_log_trb,
                __entry->size = trb->size;
                __entry->ctrl = trb->ctrl;
                __entry->type = usb_endpoint_type(dep->endpoint.desc);
+               __entry->enqueue = dep->trb_enqueue;
+               __entry->dequeue = dep->trb_dequeue;
        ),
-       TP_printk("%s: trb %p buf %08x%08x size %s%d ctrl %08x (%c%c%c%c:%c%c:%s)",
-               __get_str(name), __entry->trb, __entry->bph, __entry->bpl,
+       TP_printk("%s: trb %p (E%d:D%d) buf %08x%08x size %s%d ctrl %08x (%c%c%c%c:%c%c:%s)",
+               __get_str(name), __entry->trb, __entry->enqueue,
+               __entry->dequeue, __entry->bph, __entry->bpl,
                ({char *s;
                int pcm = ((__entry->size >> 24) & 3) + 1;
                switch (__entry->type) {