From: John Stultz <john.stultz@linaro.org>
To: stable@vger.kernel.org
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>,
Fei Yang <fei.yang@intel.com>,
Sam Protsenko <semen.protsenko@linaro.org>,
Felipe Balbi <balbi@kernel.org>,
linux-usb@vger.kernel.org, John Stultz <john.stultz@linaro.org>
Subject: [PATCH 4.19.y 6/9] usb: dwc3: gadget: move requests to cancelled_list
Date: Thu, 27 Jun 2019 20:52:37 +0000 [thread overview]
Message-ID: <20190627205240.38366-7-john.stultz@linaro.org> (raw)
In-Reply-To: <20190627205240.38366-1-john.stultz@linaro.org>
From: Felipe Balbi <felipe.balbi@linux.intel.com>
commit d4f1afe5e896c18ae01099a85dab5e1a198bd2a8 upstream
Whenever we have a request in flight, we can move it to the cancelled
list and later simply iterate over that list and skip over any TRBs we
find.
Cc: Fei Yang <fei.yang@intel.com>
Cc: Sam Protsenko <semen.protsenko@linaro.org>
Cc: Felipe Balbi <balbi@kernel.org>
Cc: linux-usb@vger.kernel.org
Cc: stable@vger.kernel.org # 4.19.y
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
(cherry picked from commit d4f1afe5e896c18ae01099a85dab5e1a198bd2a8)
Signed-off-by: John Stultz <john.stultz@linaro.org>
---
drivers/usb/dwc3/gadget.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 34331a9fb584..25cdce359736 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1366,6 +1366,17 @@ static void dwc3_gadget_ep_skip_trbs(struct dwc3_ep *dep, struct dwc3_request *r
}
}
+static void dwc3_gadget_ep_cleanup_cancelled_requests(struct dwc3_ep *dep)
+{
+ struct dwc3_request *req;
+ struct dwc3_request *tmp;
+
+ list_for_each_entry_safe(req, tmp, &dep->cancelled_list, list) {
+ dwc3_gadget_ep_skip_trbs(dep, req);
+ dwc3_gadget_giveback(dep, req, -ECONNRESET);
+ }
+}
+
static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
struct usb_request *request)
{
@@ -1402,8 +1413,9 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
if (!r->trb)
goto out0;
- dwc3_gadget_ep_skip_trbs(dep, r);
- goto out1;
+ dwc3_gadget_move_cancelled_request(req);
+ dwc3_gadget_ep_cleanup_cancelled_requests(dep);
+ goto out0;
}
dev_err(dwc->dev, "request %pK was not queued to %s\n",
request, ep->name);
@@ -1411,7 +1423,6 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
goto out0;
}
-out1:
dwc3_gadget_giveback(dep, req, -ECONNRESET);
out0:
--
2.17.1
next prev parent reply other threads:[~2019-06-27 20:52 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-27 20:52 [PATCH 4.19.y 0/9] Fix scheduling while atomic in dwc3_gadget_ep_dequeue John Stultz
2019-06-27 20:52 ` [PATCH 4.19.y 1/9] usb: dwc3: gadget: combine unaligned and zero flags John Stultz
2019-06-27 20:52 ` [PATCH 4.19.y 2/9] usb: dwc3: gadget: track number of TRBs per request John Stultz
2019-06-27 20:52 ` [PATCH 4.19.y 3/9] usb: dwc3: gadget: use num_trbs when skipping TRBs on ->dequeue() John Stultz
2019-06-27 20:52 ` [PATCH 4.19.y 4/9] usb: dwc3: gadget: extract dwc3_gadget_ep_skip_trbs() John Stultz
2019-06-27 20:52 ` [PATCH 4.19.y 5/9] usb: dwc3: gadget: introduce cancelled_list John Stultz
2019-06-27 20:52 ` John Stultz [this message]
2019-06-27 20:52 ` [PATCH 4.19.y 7/9] usb: dwc3: gadget: remove wait_end_transfer John Stultz
2019-06-27 20:52 ` [PATCH 4.19.y 8/9] Revert "usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup" John Stultz
2019-06-28 5:54 ` Jack Pham
2019-06-28 17:34 ` John Stultz
2019-06-27 20:52 ` [PATCH 4.19.y 9/9] usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup John Stultz
2019-06-28 10:10 ` [PATCH 4.19.y 0/9] Fix scheduling while atomic in dwc3_gadget_ep_dequeue Gopal, Saranya
2019-06-28 18:14 ` John Stultz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190627205240.38366-7-john.stultz@linaro.org \
--to=john.stultz@linaro.org \
--cc=balbi@kernel.org \
--cc=fei.yang@intel.com \
--cc=felipe.balbi@linux.intel.com \
--cc=linux-usb@vger.kernel.org \
--cc=semen.protsenko@linaro.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.