When MISSED_ISOC is set, BUSY is also set. Since, we are handling
MISSED_ISOC as a separate case in third scenario, therefore handle only
BUSY but not MISSED_ISOC in second scenario.

Signed-off-by: Pratyush Anand <[email protected]>
---
 drivers/usb/dwc3/gadget.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 0ead4cd..800944f 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1139,7 +1139,8 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, 
struct dwc3_request *req)
         *    core may not see the modified TRB(s).
         */
        if (usb_endpoint_xfer_isoc(dep->endpoint.desc) &&
-                       (dep->flags & DWC3_EP_BUSY)) {
+                       (dep->flags & DWC3_EP_BUSY) &&
+                       !(dep->flags & DWC3_EP_MISSED_ISOC)) {
                WARN_ON_ONCE(!dep->resource_index);
                ret = __dwc3_gadget_kick_transfer(dep, dep->resource_index,
                                false);
-- 
1.7.5.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to