Hi Anton,

On Wed, Dec 18, 2013 at 12:11:33PM +0800, Felipe Balbi wrote:
> Hi,
> 
> On Tue, Dec 17, 2013 at 03:59:31PM +0900, Anton Tikhomirov wrote:
> > In accordance with specification, when sent data length is
> 
> please mention section of specification.
> 
> > an exact multiple of wMaxPacketSize for the pipe and less
> > than requested by host, the function shall return a zero-length
> > packet (ZLP) to indicate the end of the Data stage to a USB host.
> 
> hmm... so in USB3 mode that would be host requesting 513 bytes and us
> sending only 512.

Curious, what was the use case when you encountered above situation?

Wouldn't something simple as follows be able to resolve it?

diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 95f7649..8b419aa 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -924,6 +924,10 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
 
                ret = dwc3_ep0_start_trans(dwc, dep->number, req->request.dma,
                                req->request.length, DWC3_TRBCTL_CONTROL_DATA);
+               if (req->zero && !ret)
+                       ret = dwc3_ep0_start_trans(dwc, dep->number,
+                                       dwc->ctrl_req_addr, 0,
+                                       DWC3_TRBCTL_CONTROL_DATA);
        }
 
        WARN_ON(ret < 0);

Regards
Pratyush
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to