On 20-04-27 15:27:41, Thinh Nguyen wrote: > A transfer is composed of one or more usb_requests. Currently, only the > function driver knows this based on its implementation and its class > protocol. However, some usb controllers need to know this to update its > resources. For example, the DWC3 controller needs this info to update > its internal resources and initiate different streams. > > Introduce a new field is_last to usb_request to inform the controller > driver whether the request is the last of its transfer. > > Signed-off-by: Thinh Nguyen <thinhn@xxxxxxxxxxxx> > --- > include/linux/usb/gadget.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h > index e959c09a97c9..742c52f7e470 100644 > --- a/include/linux/usb/gadget.h > +++ b/include/linux/usb/gadget.h > @@ -50,6 +50,7 @@ struct usb_ep; > * @short_not_ok: When reading data, makes short packets be > * treated as errors (queue stops advancing till cleanup). > * @dma_mapped: Indicates if request has been mapped to DMA (internal) > + * @is_last: Indicates if this request is the last of a transfer. Would you please describe the use case for it, and what's 'transfer' and 'request' in your use case? Peter > * @complete: Function called when request completes, so this request and > * its buffer may be re-used. The function will always be called with > * interrupts disabled, and it must not sleep. > @@ -108,6 +109,7 @@ struct usb_request { > unsigned zero:1; > unsigned short_not_ok:1; > unsigned dma_mapped:1; > + unsigned is_last:1; > > void (*complete)(struct usb_ep *ep, > struct usb_request *req); > -- > 2.11.0 > -- Thanks, Peter Chen