usb: dwc3: ep0: fix for possible early delayed_status
authorFelipe Balbi <balbi@ti.com>
Thu, 8 Dec 2011 11:56:27 +0000 (13:56 +0200)
committerFelipe Balbi <balbi@ti.com>
Mon, 12 Dec 2011 09:48:47 +0000 (11:48 +0200)
commit68d3e668d245bb8300c7c6ddbc8508ddfe352e0f
tree544c200d4c45a2755cad9e711aac70a9bfa1d4a2
parentc90bfaece97c18d1ad66b9d4c717b1cb55a647ad
usb: dwc3: ep0: fix for possible early delayed_status

There is a very small possibility (previously unimagined
by us) that the whole Mass Storage delayed status happens
rather early, before we even get our XferNotReady event.

In that case, we will be queueing a request to ep0 while
we're still on Setup Phase and we would be waiting for
another usb_ep_queue() forever.

Handle such cases by clearing dwc->delayed_status so that
we start control status from the next XferNotReady like
there was no wait for Delayed Status.

Tested against Linux 3.2-rc3 and USB30CV tool from USB-IF
(on a Windows XP with USB3 PCIe card).

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