diff --git a/drivers/usb/dwc_otg_310/dwc_otg_pcd_intr.c b/drivers/usb/dwc_otg_310/dwc_otg_pcd_intr.c index 46ba82353633..9837b49db273 100644 --- a/drivers/usb/dwc_otg_310/dwc_otg_pcd_intr.c +++ b/drivers/usb/dwc_otg_310/dwc_otg_pcd_intr.c @@ -2404,7 +2404,8 @@ static void complete_ep(dwc_otg_pcd_ep_t *ep) /* Check if the whole transfer was completed, * if no, setup transfer for next portion of data */ - if (ep->dwc_ep.xfer_len < ep->dwc_ep.total_len) { + if (ep->dwc_ep.xfer_len < ep->dwc_ep.total_len && + deptsiz.b.xfersize == 0) { dwc_otg_ep_start_transfer(core_if, &ep->dwc_ep); } else if (ep->dwc_ep.sent_zlp) {