CONFIG_NET_TC_RX_COUNT

How many Rx traffic classes to have for each network device

Type: int

Help

Define how many Rx traffic classes (queues) the system should have
when receiving a network packet. The network packet priority can then
be mapped to this traffic class so that higher prioritized packets
can be processed before lower prioritized ones. Each queue is handled
by a separate thread which will need RAM for stack space.
Only increase the value from 1 if you really need this feature.
The default value is 1 which means that all the network traffic is
handled equally. In this implementation, the higher traffic class
value corresponds to lower thread priority.
If you select 0 here, then it means that all the network traffic
is pushed from the driver to application thread without any
intermediate RX queue. There is always a receive socket queue between
device driver and application. Disabling RX thread means that the
network device driver, that is typically running in IRQ context, will
handle the packet all the way to the application. This might cause
other incoming packets to be lost if the RX processing takes long
time.
Note that if USERSPACE support is enabled, then currently we need to
enable at least 1 RX thread.

Direct dependencies

!NET_RAW_MODE && NETWORKING

(Includes any dependencies from ifs and menus.)

Default

  • 1

Kconfig definition

At <Zephyr>/subsys/net/ip/Kconfig:164

Included via <Zephyr>/Kconfig:8<Zephyr>/Kconfig.zephyr:34<Zephyr>/subsys/Kconfig:39<Zephyr>/subsys/net/Kconfig:87

Menu path: (Top) → Sub Systems and OS Services → Networking → Link layer and IP networking support → IP stack

config NET_TC_RX_COUNT
    int "How many Rx traffic classes to have for each network device"
    range 1 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES <= 8 && USERSPACE
    range 0 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES <= 8
    range 1 8 if USERSPACE
    range 0 8
    default 1
    depends on !NET_RAW_MODE && NETWORKING
    help
      Define how many Rx traffic classes (queues) the system should have
      when receiving a network packet. The network packet priority can then
      be mapped to this traffic class so that higher prioritized packets
      can be processed before lower prioritized ones. Each queue is handled
      by a separate thread which will need RAM for stack space.
      Only increase the value from 1 if you really need this feature.
      The default value is 1 which means that all the network traffic is
      handled equally. In this implementation, the higher traffic class
      value corresponds to lower thread priority.
      If you select 0 here, then it means that all the network traffic
      is pushed from the driver to application thread without any
      intermediate RX queue. There is always a receive socket queue between
      device driver and application. Disabling RX thread means that the
      network device driver, that is typically running in IRQ context, will
      handle the packet all the way to the application. This might cause
      other incoming packets to be lost if the RX processing takes long
      time.
      Note that if USERSPACE support is enabled, then currently we need to
      enable at least 1 RX thread.

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