Skip to content

Commit

Permalink
usb: dwc3: gadget: properly account queued requests
Browse files Browse the repository at this point in the history
Some requests could be accounted for multiple
times. Let's fix that so each and every requests is
accounted for only once.

Cc: <stable@vger.kernel.org> # v4.8
Fixes: 55a0237 ("usb: dwc3: gadget: use allocated/queued reqs for LST bit")
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  • Loading branch information
Felipe Balbi committed Oct 17, 2016
1 parent 6c83f77 commit a9c3ca5
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions drivers/usb/dwc3/gadget.c
Original file line number Diff line number Diff line change
Expand Up @@ -783,6 +783,7 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
req->trb = trb;
req->trb_dma = dwc3_trb_dma_offset(dep, trb);
req->first_trb_index = dep->trb_enqueue;
dep->queued_requests++;
}

dwc3_ep_inc_enq(dep);
Expand Down Expand Up @@ -833,8 +834,6 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,

trb->ctrl |= DWC3_TRB_CTRL_HWO;

dep->queued_requests++;

trace_dwc3_prepare_trb(dep, trb);
}

Expand Down Expand Up @@ -1861,8 +1860,11 @@ static int __dwc3_cleanup_done_trbs(struct dwc3 *dwc, struct dwc3_ep *dep,
unsigned int s_pkt = 0;
unsigned int trb_status;

dep->queued_requests--;
dwc3_ep_inc_deq(dep);

if (req->trb == trb)
dep->queued_requests--;

trace_dwc3_complete_trb(dep, trb);

/*
Expand Down

0 comments on commit a9c3ca5

Please sign in to comment.