patch "usb: dwc3: gadget: Ignore NoStream after End Transfer" added to usb-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
usb: dwc3: gadget: Ignore NoStream after End Transfer
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From d74dc3e9f58c28689cef1faccf918e06587367d3 Mon Sep 17 00:00:00 2001
From: Thinh Nguyen <[email protected]>
Date: Mon, 25 Oct 2021 16:21:10 -0700
Subject: usb: dwc3: gadget: Ignore NoStream after End Transfer
The End Transfer command from a stream endpoint will generate a NoStream event, and we should ignore it. Currently we set the flag DWC3_EP_IGNORE_NEXT_NOSTREAM to track this prior to sending the command, and it will be cleared on the next stream event. However, a stream event may be generated before the End Transfer command completion and prematurely clear the flag. Fix this by setting the flag on End Transfer completion instead.
--- drivers/usb/dwc3/gadget.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
drivers/usb/dwc3/gadget.c +8 -8
@@ -3352,6 +3352,14 @@ static void dwc3_gadget_endpoint_command_complete(struct dwc3_ep *dep,if (cmd !=DWC3_DEPCMD_ENDTRANSFER )return ; +/* +* The END_TRANSFER command will cause the controller to generate a +* NoStream Event, and it's not due to the host DP NoStream rejection. +* Ignore the next NoStream event. +*/ +if (dep->stream_capable) + dep->flags |=DWC3_EP_IGNORE_NEXT_NOSTREAM ; + dep->flags &= ~DWC3_EP_END_TRANSFER_PENDING ; dep->flags &= ~DWC3_EP_TRANSFER_STARTED ;dwc3_gadget_ep_cleanup_cancelled_requests (dep);
@@ -3574,14 +3582,6 @@ static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force,WARN_ON_ONCE (ret); dep->resource_index =0 ; -/* -* The END_TRANSFER command will cause the controller to generate a -* NoStream Event, and it's not due to the host DP NoStream rejection. -* Ignore the next NoStream event. -*/ -if (dep->stream_capable) - dep->flags |=DWC3_EP_IGNORE_NEXT_NOSTREAM ; -if (!interrupt) dep->flags &= ~DWC3_EP_TRANSFER_STARTED ;else
Signature · 1 line
2.34.0