usb: dwc3: ep0: ignore XferNotReady(STATUS) when we're not expecting it
authorFelipe Balbi <balbi@ti.com>
Mon, 23 Jul 2012 06:09:32 +0000 (09:09 +0300)
committerFelipe Balbi <balbi@ti.com>
Fri, 3 Aug 2012 06:28:25 +0000 (09:28 +0300)
Databook doesn't say we should stall if we
get XferNotReady(STATUS) while we're expecting
something else.

Instead of stalling and restarting, tests have
proven that ignoring the event is far more
effective.

This problem has been caught while rewriting
ep0 handling in order we pass Link Layer TD7.6.

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/ep0.c

index d4b38c72a0ac30d93ba6689163148fb5c1faa7af..39abc589187a609f5802253167e9be1a0a8ab087 100644 (file)
@@ -953,19 +953,13 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
                break;
 
        case DEPEVT_STATUS_CONTROL_STATUS:
+               if (dwc->ep0_next_event != DWC3_EP0_NRDY_STATUS)
+                       return;
+
                dev_vdbg(dwc->dev, "Control Status\n");
 
                dwc->ep0state = EP0_STATUS_PHASE;
 
-               if (dwc->ep0_next_event != DWC3_EP0_NRDY_STATUS) {
-                       dev_vdbg(dwc->dev, "Expected %d got %d\n",
-                                       dwc->ep0_next_event,
-                                       DWC3_EP0_NRDY_STATUS);
-
-                       dwc3_ep0_stall_and_restart(dwc);
-                       return;
-               }
-
                if (dwc->delayed_status) {
                        WARN_ON_ONCE(event->endpoint_number != 1);
                        dev_vdbg(dwc->dev, "Mass Storage delayed status\n");
This page took 0.025446 seconds and 5 git commands to generate.