Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 3585243d authored by Gilad Broner's avatar Gilad Broner
Browse files

usb: dwc3: bulk out endpoint optimization



For bulk transfers, the current implementation uses TRB allocation
"on demand". That is, it recieves an XferNotReady event is the trigger
to prepare an array of TRBs to use for the upcoming transfer, with the
last TRB set with the LST bit which will trigger an XferComplete event.
A transfer, in many cases, consists of small packets. As such, for each
of the TRBs set up an XferComplete event is received.
This results in thousands of interrupts a second and a high cpu usage.
The optimization sets the CSP (continue on short packet) bit for all the
TRBs set up for the transfer to avoid those notifications, and relies on
the XferComplete event of the last TRB to denote the end of the transfer,
reducing the number of interrupt by orders of magnitude to several dozens.
To avoid potential starvation when a small number of packets is
transfered a timer was added to notify on completed TRBs that are pending.

CRs-fixed: 654261
Change-Id: I337965b677280b0b663423cab06d483e1d17a7a5
Signed-off-by: default avatarGilad Broner <gbroner@codeaurora.org>
parent f9b51e25
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment