mirror of
https://github.com/torvalds/linux.git
synced 2024-12-05 18:41:23 +00:00
usb: dwc3: gadget: use num_trbs when skipping TRBs on ->dequeue()
Now that we track how many TRBs a request uses, it's easier to skip over them in case of a call to usb_ep_dequeue(). Let's do so and simplify the code a bit. Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
09fe1f8d7e
commit
c3acd59014
@ -1502,6 +1502,8 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
|
||||
break;
|
||||
}
|
||||
if (r == req) {
|
||||
int i;
|
||||
|
||||
/* wait until it is processed */
|
||||
dwc3_stop_active_transfer(dep, true);
|
||||
|
||||
@ -1539,32 +1541,12 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
|
||||
if (!r->trb)
|
||||
goto out0;
|
||||
|
||||
if (r->num_pending_sgs) {
|
||||
for (i = 0; i < r->num_trbs; i++) {
|
||||
struct dwc3_trb *trb;
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; i < r->num_pending_sgs; i++) {
|
||||
trb = r->trb + i;
|
||||
trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
|
||||
dwc3_ep_inc_deq(dep);
|
||||
}
|
||||
|
||||
if (r->needs_extra_trb) {
|
||||
trb = r->trb + r->num_pending_sgs + 1;
|
||||
trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
|
||||
dwc3_ep_inc_deq(dep);
|
||||
}
|
||||
} else {
|
||||
struct dwc3_trb *trb = r->trb;
|
||||
|
||||
trb = r->trb + i;
|
||||
trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
|
||||
dwc3_ep_inc_deq(dep);
|
||||
|
||||
if (r->needs_extra_trb) {
|
||||
trb = r->trb + 1;
|
||||
trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
|
||||
dwc3_ep_inc_deq(dep);
|
||||
}
|
||||
}
|
||||
goto out1;
|
||||
}
|
||||
@ -1575,8 +1557,6 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
|
||||
}
|
||||
|
||||
out1:
|
||||
/* giveback the request */
|
||||
|
||||
dwc3_gadget_giveback(dep, req, -ECONNRESET);
|
||||
|
||||
out0:
|
||||
|
Loading…
Reference in New Issue
Block a user