Hi, Jerry Zhang <zhangjerry@xxxxxxxxxx> writes: > Commit 1b9ba000 ("Allow function drivers to pause control > transfers") states that USB_GADGET_DELAYED_STATUS is only > supported if data phase is 0 bytes. > > It seems that when the length is not 0 bytes, there is no > need to explicitly delay the data stage since the transfer > is not completed until the user responds. However, when the > length is 0, there is no data stage and the transfer is > finished once setup() returns, hence there is a need to > explicitly delay completion. > > This manifests as the following bugs: > > Prior to 946ef68ad4e4 ('Let setup() return > USB_GADGET_DELAYED_STATUS'), when setup is 0 bytes, ffs > would require user to queue a 0 byte request in order to > clear setup state. However, that 0 byte request was actually > not needed and would hang and cause errors in other setup > requests. > > After the above commit, 0 byte setups work since the gadget > now accepts empty queues to ep0 to clear the delay, but all > other setups hang. > > Fixes: 946ef68ad4e4 ("Let setup() return USB_GADGET_DELAYED_STATUS") > Signed-off-by: Jerry Zhang <zhangjerry@xxxxxxxxxx> Greg, can you pick this one manually? Acked-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> -- balbi
Attachment:
signature.asc
Description: PGP signature