UPSTREAM: usb: dwc3: gadget: Account for link TRB in TRBs left
authorJohn Youn <johnyoun@synopsys.com>
Fri, 20 May 2016 00:26:15 +0000 (17:26 -0700)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 16 Aug 2016 12:48:19 +0000 (20:48 +0800)
The TRBs left calculation didn't account for the link TRB taking up one
spot.

If the trb_dequeue < trb_enqueue, then the result includes the link
TRB slot so it must be adjusted.

Change-Id: If03f89ea1f523b4bce1b5f096ae81aebc891c63f
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit 7d0a038b130cde7265d6bbc5e148734cb127f341)

drivers/usb/dwc3/gadget.c

index 09f61997b657bba1bdc95a9261ea68d4fb8fbc6c..f027d4b32997a9d34781ffd0561e259e25328eaa 100644 (file)
@@ -868,6 +868,9 @@ static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
        trbs_left = dep->trb_dequeue - dep->trb_enqueue;
        trbs_left %= DWC3_TRB_NUM;
 
+       if (dep->trb_dequeue < dep->trb_enqueue)
+               trbs_left--;
+
        return trbs_left;
 }