linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [v2,1/2] usb: dwc3: gadget: Set maxpacket size for ep0 IN
@ 2018-01-11  8:16 Felipe Balbi
  0 siblings, 0 replies; 4+ messages in thread
From: Felipe Balbi @ 2018-01-11  8:16 UTC (permalink / raw)
  To: Thinh Nguyen; +Cc: John Youn, stable

Hi,

Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> There are 2 control endpoint structures for DWC3. However, the driver
> only updates the OUT direction control endpoint structure during
> ConnectDone event. DWC3 driver needs to update the endpoint max packet
> size for control IN endpoint as well. If the max packet size is not
> properly set, then the driver will incorrectly calculate the data
> transfer size and fail to send ZLP for HS/FS 3-stage control read
> transfer.
>
> The fix is simply to update the max packet size for the ep0 IN direction
> during ConnectDone event.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>

missing Fixes tag

^ permalink raw reply	[flat|nested] 4+ messages in thread
* [v2,1/2] usb: dwc3: gadget: Set maxpacket size for ep0 IN
@ 2018-01-12  8:25 Felipe Balbi
  0 siblings, 0 replies; 4+ messages in thread
From: Felipe Balbi @ 2018-01-12  8:25 UTC (permalink / raw)
  To: Thinh Nguyen; +Cc: John Youn, stable@vger.kernel.org

Hi,

Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> Hi,
>
> On 1/11/2018 12:16 AM, Felipe Balbi wrote:
>> 
>> Hi,
>> 
>> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>>> There are 2 control endpoint structures for DWC3. However, the driver
>>> only updates the OUT direction control endpoint structure during
>>> ConnectDone event. DWC3 driver needs to update the endpoint max packet
>>> size for control IN endpoint as well. If the max packet size is not
>>> properly set, then the driver will incorrectly calculate the data
>>> transfer size and fail to send ZLP for HS/FS 3-stage control read
>>> transfer.
>>>
>>> The fix is simply to update the max packet size for the ep0 IN direction
>>> during ConnectDone event.
>>>
>>> Cc: stable@vger.kernel.org
>>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>> 
>> missing Fixes tag
>
> This bug has been there since the beginning. There's no particular 
> commit that it fixes.

yes there is; the very first one ;-)

^ permalink raw reply	[flat|nested] 4+ messages in thread
* [v2,1/2] usb: dwc3: gadget: Set maxpacket size for ep0 IN
@ 2018-01-11 19:57 Thinh Nguyen
  0 siblings, 0 replies; 4+ messages in thread
From: Thinh Nguyen @ 2018-01-11 19:57 UTC (permalink / raw)
  To: Felipe Balbi, Thinh Nguyen, linux-usb@vger.kernel.org
  Cc: John Youn, stable@vger.kernel.org

Hi,

On 1/11/2018 12:16 AM, Felipe Balbi wrote:
> 
> Hi,
> 
> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>> There are 2 control endpoint structures for DWC3. However, the driver
>> only updates the OUT direction control endpoint structure during
>> ConnectDone event. DWC3 driver needs to update the endpoint max packet
>> size for control IN endpoint as well. If the max packet size is not
>> properly set, then the driver will incorrectly calculate the data
>> transfer size and fail to send ZLP for HS/FS 3-stage control read
>> transfer.
>>
>> The fix is simply to update the max packet size for the ep0 IN direction
>> during ConnectDone event.
>>
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
> 
> missing Fixes tag

This bug has been there since the beginning. There's no particular 
commit that it fixes.

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

^ permalink raw reply	[flat|nested] 4+ messages in thread
* [v2,1/2] usb: dwc3: gadget: Set maxpacket size for ep0 IN
@ 2018-01-10 21:11 Thinh Nguyen
  0 siblings, 0 replies; 4+ messages in thread
From: Thinh Nguyen @ 2018-01-10 21:11 UTC (permalink / raw)
  To: Felipe Balbi, Thinh Nguyen, linux-usb; +Cc: John Youn, stable

There are 2 control endpoint structures for DWC3. However, the driver
only updates the OUT direction control endpoint structure during
ConnectDone event. DWC3 driver needs to update the endpoint max packet
size for control IN endpoint as well. If the max packet size is not
properly set, then the driver will incorrectly calculate the data
transfer size and fail to send ZLP for HS/FS 3-stage control read
transfer.

The fix is simply to update the max packet size for the ep0 IN direction
during ConnectDone event.

Cc: stable@vger.kernel.org
Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
---
 drivers/usb/dwc3/gadget.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 639dd1b163a0..21abea0ac622 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2744,6 +2744,8 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc)
 		break;
 	}
 
+	dwc->eps[1]->endpoint.maxpacket = dwc->gadget.ep0->maxpacket;
+
 	/* Enable USB2 LPM Capability */
 
 	if ((dwc->revision > DWC3_REVISION_194A) &&

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-01-12  8:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-11  8:16 [v2,1/2] usb: dwc3: gadget: Set maxpacket size for ep0 IN Felipe Balbi
  -- strict thread matches above, loose matches on Subject: below --
2018-01-12  8:25 Felipe Balbi
2018-01-11 19:57 Thinh Nguyen
2018-01-10 21:11 Thinh Nguyen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).