|
@@ -1379,6 +1379,9 @@ int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol)
|
|
unsigned transfer_in_flight;
|
|
unsigned transfer_in_flight;
|
|
unsigned started;
|
|
unsigned started;
|
|
|
|
|
|
|
|
+ if (dep->flags & DWC3_EP_STALL)
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
if (dep->number > 1)
|
|
if (dep->number > 1)
|
|
trb = dwc3_ep_prev_trb(dep, dep->trb_enqueue);
|
|
trb = dwc3_ep_prev_trb(dep, dep->trb_enqueue);
|
|
else
|
|
else
|
|
@@ -1400,6 +1403,8 @@ int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol)
|
|
else
|
|
else
|
|
dep->flags |= DWC3_EP_STALL;
|
|
dep->flags |= DWC3_EP_STALL;
|
|
} else {
|
|
} else {
|
|
|
|
+ if (!(dep->flags & DWC3_EP_STALL))
|
|
|
|
+ return 0;
|
|
|
|
|
|
ret = dwc3_send_clear_stall_ep_cmd(dep);
|
|
ret = dwc3_send_clear_stall_ep_cmd(dep);
|
|
if (ret)
|
|
if (ret)
|