zephyr/subsys/usb
Vincent van der Locht 5cbd1f6c39 usb: device_next: cdc_acm: Prevent polling for buffer in TX
In case the host doesn't pull the new data from the endpoint, the work task
would schedule itself again delayed (at the max. priority). When there is
no terminal program or active application reading the endpoint this
results in a constant polling of the endpoint burning up to 5% of the
CPU cycles.

By using a atomic flag for tx busy, the polling is solved and changed into
a postponed execution of the next work task which saves up to 5% of
CPU cycles and allows a better real-time behavior for other tasks.

Secondly, if the TX interrupt is disabled but there is still data in the TX
FIFO (ring buffer), the implementation will continue to trigger subsequent
TX work and attempt to flush the data to the host.

Signed-off-by: Vincent van der Locht <vincent@synchronicit.nl>
2024-10-22 22:46:59 -04:00
..
device usb: cdc_acm: disable logging if used for shell with logging 2024-10-07 17:11:44 +01:00
device_next usb: device_next: cdc_acm: Prevent polling for buffer in TX 2024-10-22 22:46:59 -04:00
host
usb_c
CMakeLists.txt