Merge "usb: dwc3: gadget: Properly handle failed kick_transfer"

This commit is contained in:
qctecmdr 2020-09-30 01:04:54 -07:00 committed by Gerrit - the friendly Code Review server
commit 33cc36a5ad

View file

@ -1444,6 +1444,8 @@ static void dwc3_prepare_trbs(struct dwc3_ep *dep)
}
}
static void dwc3_gadget_ep_cleanup_cancelled_requests(struct dwc3_ep *dep);
static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep)
{
struct dwc3_gadget_ep_cmd_params params;
@ -1511,14 +1513,15 @@ static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep)
return ret;
}
/*
* FIXME we need to iterate over the list of requests
* here and stop, unmap, free and del each of the linked
* requests instead of what we do now.
*/
if (req->trb)
memset(req->trb, 0, sizeof(struct dwc3_trb));
dwc3_gadget_del_and_unmap_request(dep, req, ret);
dwc3_stop_active_transfer(dwc, dep->number, true);
list_for_each_entry_safe(req, n, &dep->started_list, list)
dwc3_gadget_move_cancelled_request(req);
/* If ep isn't started, then there's no end transfer pending */
if (!(dep->flags & DWC3_EP_END_TRANSFER_PENDING))
dwc3_gadget_ep_cleanup_cancelled_requests(dep);
return ret;
}