This is a note to let you know that I've just added the patch titled usb: dwc3: gadget: fix skip LINK_TRB on ISOC to the 3.8-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: usb-dwc3-gadget-fix-skip-link_trb-on-isoc.patch and it can be found in the queue-3.8 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 915e202aeeb59e272992a6364c910aaef3073544 Mon Sep 17 00:00:00 2001 From: Pratyush Anand <pratyush.anand@xxxxxx> Date: Mon, 14 Jan 2013 15:59:35 +0530 Subject: usb: dwc3: gadget: fix skip LINK_TRB on ISOC From: Pratyush Anand <pratyush.anand@xxxxxx> commit 915e202aeeb59e272992a6364c910aaef3073544 upstream. When we reach to link trb, we just need to increase free_slot and then calculate TRB. Return is not correct, as it will cause wrong TRB DMA address to fetch in case of update transfer. Signed-off-by: Pratyush Anand <pratyush.anand@xxxxxx> Signed-off-by: Felipe Balbi <balbi@xxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/usb/dwc3/gadget.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -754,21 +754,18 @@ static void dwc3_prepare_one_trb(struct struct dwc3 *dwc = dep->dwc; struct dwc3_trb *trb; - unsigned int cur_slot; - dev_vdbg(dwc->dev, "%s: req %p dma %08llx length %d%s%s\n", dep->name, req, (unsigned long long) dma, length, last ? " last" : "", chain ? " chain" : ""); - trb = &dep->trb_pool[dep->free_slot & DWC3_TRB_MASK]; - cur_slot = dep->free_slot; - dep->free_slot++; - /* Skip the LINK-TRB on ISOC */ - if (((cur_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) && + if (((dep->free_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) && usb_endpoint_xfer_isoc(dep->endpoint.desc)) - return; + dep->free_slot++; + + trb = &dep->trb_pool[dep->free_slot & DWC3_TRB_MASK]; + dep->free_slot++; if (!req->trb) { dwc3_gadget_move_request_queued(req); Patches currently in stable-queue which might be from pratyush.anand@xxxxxx are queue-3.8/usb-dwc3-gadget-fix-missed-isoc.patch queue-3.8/usb-dwc3-enable-usb2-lpm-only-when-connected-as-usb2.0.patch queue-3.8/usb-dwc3-gadget-fix-isoc-end-transfer-condition.patch queue-3.8/usb-dwc3-gadget-fix-skip-link_trb-on-isoc.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html