zephyr/subsys/usb/device_next/class
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
..
Kconfig usb: device_next: NCM driver for usb-next 2024-10-17 15:38:00 -04:00
Kconfig.bt
Kconfig.cdc_acm
Kconfig.cdc_ecm
Kconfig.cdc_ncm usb: device_next: NCM driver for usb-next 2024-10-17 15:38:00 -04:00
Kconfig.hid
Kconfig.loopback
Kconfig.msc
Kconfig.template.instances_count
Kconfig.uac2
bt_hci.c
loopback.c
usbd_cdc_acm.c usb: device_next: cdc_acm: Prevent polling for buffer in TX 2024-10-22 22:46:59 -04:00
usbd_cdc_ecm.c
usbd_cdc_ncm.c usb: device_next: NCM driver for usb-next 2024-10-17 15:38:00 -04:00
usbd_hid.c
usbd_hid_api.c
usbd_hid_internal.h
usbd_hid_macros.h
usbd_msc.c
usbd_msc.ld
usbd_msc_scsi.c
usbd_msc_scsi.h
usbd_uac2.c
usbd_uac2_macros.h usb: device_next: uac2: Generate Feature Unit descriptor 2024-10-15 19:03:49 +01:00