u32                     timeout = 500;
        u32                     reg;
 
+       int                     cmd_status = 0;
        int                     susphy = false;
        int                     ret = -EINVAL;
 
-       trace_dwc3_gadget_ep_cmd(dep, cmd, params);
-
        /*
         * Synopsys Databook 2.60a states, on section 6.3.2.5.[1-8], that if
         * we're issuing an endpoint command, we must check if
        do {
                reg = dwc3_readl(dep->regs, DWC3_DEPCMD);
                if (!(reg & DWC3_DEPCMD_CMDACT)) {
-                       int cmd_status = DWC3_DEPCMD_STATUS(reg);
+                       cmd_status = DWC3_DEPCMD_STATUS(reg);
 
                        dwc3_trace(trace_dwc3_gadget,
                                        "Command Complete --> %d",
                dwc3_trace(trace_dwc3_gadget,
                                "Command Timed Out");
                ret = -ETIMEDOUT;
+               cmd_status = -ETIMEDOUT;
        }
 
+       trace_dwc3_gadget_ep_cmd(dep, cmd, params, cmd_status);
+
        if (unlikely(susphy)) {
                reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0));
                reg |= DWC3_GUSB2PHYCFG_SUSPHY;
 
 
 DECLARE_EVENT_CLASS(dwc3_log_gadget_ep_cmd,
        TP_PROTO(struct dwc3_ep *dep, unsigned int cmd,
-               struct dwc3_gadget_ep_cmd_params *params),
-       TP_ARGS(dep, cmd, params),
+               struct dwc3_gadget_ep_cmd_params *params, int cmd_status),
+       TP_ARGS(dep, cmd, params, cmd_status),
        TP_STRUCT__entry(
                __dynamic_array(char, name, DWC3_MSG_MAX)
                __field(unsigned int, cmd)
                __field(u32, param0)
                __field(u32, param1)
                __field(u32, param2)
+               __field(int, cmd_status)
        ),
        TP_fast_assign(
                snprintf(__get_str(name), DWC3_MSG_MAX, "%s", dep->name);
                __entry->param0 = params->param0;
                __entry->param1 = params->param1;
                __entry->param2 = params->param2;
+               __entry->cmd_status = cmd_status;
        ),
-       TP_printk("%s: cmd '%s' [%d] params %08x %08x %08x",
+       TP_printk("%s: cmd '%s' [%d] params %08x %08x %08x --> status: %s",
                __get_str(name), dwc3_gadget_ep_cmd_string(__entry->cmd),
                __entry->cmd, __entry->param0,
-               __entry->param1, __entry->param2
+               __entry->param1, __entry->param2,
+               dwc3_ep_cmd_status_string(__entry->cmd_status)
        )
 );
 
 DEFINE_EVENT(dwc3_log_gadget_ep_cmd, dwc3_gadget_ep_cmd,
        TP_PROTO(struct dwc3_ep *dep, unsigned int cmd,
-               struct dwc3_gadget_ep_cmd_params *params),
-       TP_ARGS(dep, cmd, params)
+               struct dwc3_gadget_ep_cmd_params *params, int cmd_status),
+       TP_ARGS(dep, cmd, params, cmd_status)
 );
 
 DECLARE_EVENT_CLASS(dwc3_log_trb,