CONFIG_USB_WORKQUEUE

Use a dedicate work queue in the USB subsystem

Type: bool

Help

This option provides a dedicated work queue that is used for all offloaded operations initiated by the USB subsystem. This prevents deadlock situations where tasks on the system workqueue inadvertently initiate operations that block, such as UART transmission on CDC-ACM, preventing the system work queue from making progress on the USB tasks that would release the task.

Without this the system work queue is used for all USB offloaded transfers.

Direct dependencies

USB_DEVICE_STACK

(Includes any dependencies from ifs and menus.)

Default

Kconfig definition

At <Zephyr>/subsys/usb/Kconfig:112

Included via <Zephyr>/Kconfig:8<Zephyr>/Kconfig.zephyr:34<Zephyr>/subsys/Kconfig:45

Menu path: (Top) → Sub Systems and OS Services → USB Device Support

config USB_WORKQUEUE
    bool "Use a dedicate work queue in the USB subsystem"
    default y if USB_CDC_ACM
    depends on USB_DEVICE_STACK
    help
      This option provides a dedicated work queue that is used for
      all offloaded operations initiated by the USB subsystem.
      This prevents deadlock situations where tasks on the system
      workqueue inadvertently initiate operations that block, such
      as UART transmission on CDC-ACM, preventing the system work
      queue from making progress on the USB tasks that would
      release the task.

      Without this the system work queue is used for all USB
      offloaded transfers.

(The ‘depends on’ condition includes propagated dependencies from ifs and menus.)