zephyr/subsys/usb/device_next
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
..
class usb: device_next: cdc_acm: Prevent polling for buffer in TX 2024-10-22 22:46:59 -04:00
CMakeLists.txt usb: device_next: NCM driver for usb-next 2024-10-17 15:38:00 -04:00
Kconfig
usbd_ch9.c
usbd_ch9.h
usbd_class.c
usbd_class.h
usbd_class_api.h
usbd_config.c
usbd_config.h
usbd_core.c usb: device_next: USB reset clears remote wakeup permission 2024-10-08 05:59:29 -04:00
usbd_data.ld
usbd_desc.c
usbd_desc.h
usbd_device.c
usbd_device.h
usbd_endpoint.c usb: device_next: respect bMaxPacketSize0 in control transfers 2024-10-02 14:54:04 +01:00
usbd_endpoint.h
usbd_init.c
usbd_init.h
usbd_interface.c
usbd_interface.h
usbd_msg.c
usbd_msg.h
usbd_shell.c