]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
usb: dwc3: fix TRB completion when multiple TRBs are started
authorFelipe Balbi <balbi@ti.com>
Thu, 4 Sep 2014 15:28:10 +0000 (10:28 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 5 Oct 2014 20:41:06 +0000 (13:41 -0700)
commit2b3a58058b0f7523f0907cfd8f22bbd315335964
tree9599ad794d216470dd2d7f7ab20cbcbf67277904
parente8b1e9604f97d8c74c84b3754e8ca9ad7e41b38a
usb: dwc3: fix TRB completion when multiple TRBs are started

commit 0b93a4c838fa10370d72f86fe712426ac63804de upstream.

After commit 2ec2a8be (usb: dwc3: gadget:
always enable IOC on bulk/interrupt transfers)
we created a situation where it was possible to
hang a bulk/interrupt endpoint if we had more
than one pending request in our queue and they
were both started with a single Start Transfer
command.

The problems triggers because we had not enabled
Transfer In Progress event for those endpoints
and we were not able to process early giveback
of requests completed without LST bit set.

Fix the problem by finally enabling Xfer In Progress
event for all endpoint types, except control.

Fixes: 2ec2a8be (usb: dwc3: gadget: always
enable IOC on bulk/interrupt transfers)
Reported-by: Pratyush Anand <pratyush.anand@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/gadget.c