Intel® Ethernet Controller E810 Application Device Queues (ADQ)

Configuration Guide

ID 609008
Date 04/03/2023
Version 2.8
Document Table of Contents

ADQ PF Known Issues

  • Latest RHEL* and SLES* distributions have kernels with back-ported support for Application Device Queues (ADQ). For all other OS distributions, you must use LTS Linux kernel v4.19.58 or higher to use ADQ. The latest out-of-tree driver is required for ADQ on all operating systems. For more details, see Software Requirements and Install OS.
  • ADQ configuration must be cleared following the steps in Clear the ADQ Configuration. The following issues might result if steps are not executed in the correct order:
    • Removing a Traffic Class (TC) qdisc prior to deleting a TC filter will cause the qdisc to be deleted from hardware and leave an unusable TC filter in software.
    • Deleting a ntuple rule after deleting the TC qdisc, then re-enabling ntuple, might leave the system in an unusable state that requires a forced reboot to clear.

    Mitigation: Follow the steps in Clear the ADQ Configuration.

  • ADQ configuration is not supported on a bonded or teamed Intel® E810 Network adapter interface. Issuing the ethtool or tc commands to a bonded E810 interface will result in error messages from the ice driver to indicate the operation is not supported.
  • If the application should stall for some reason when using application dependent polling, this can cause a queue stall for application-specific queues for up to two seconds.

    Mitigation: Recommend configuration of only one application per TC channel.

  • DCB and ADQ are mutually exclusive and cannot coexist. A switch with DCB enabled might remove the ADQ configuration from the device.

    Mitigation: Do not enable DCB on the switch ports being used for ADQ. Disable LLDP on the interface by turning off firmware LLDP agent using:

    ethtool --set-priv-flags $iface fw-lldp-agent off

    Alternatively, use independent poller configuration that is not dependent on the application returning to drain the queues.

    Note (unrelated to Intel drivers): The 5.8.0 Linux kernel introduced a bug that broke the interrupt affinity setting mechanism.

    Mitigation: Use an earlier or later version of the kernel to avoid this error.

  • Core-level reset of an ADQ-configured PF port (rare events usually triggered by other failures in the NIC/ice driver) results in loss of ADQ configuration. To recover, reapply ADQ configuration to the PF interface.
  • When the number of queues is increased using ethtool -L, the new queues will have the same interrupt moderation settings as queue 0 (i.e., Tx queue 0 for new Tx queues and Rx queue 0 for new Rx queues). This can be changed using the ethtool per-queue coalesce commands.
  • To fully release hardware resources and have all supported filter type combinations available, the ice driver must be unloaded and re-loaded.
  • When using multiple TCs for ADQ application traffic, adding ntuple rules to the first queue of TC2 or higher does not work as expected. The ethtool ntuple rule fails for the first queue. This does not affect ntuple rules on TC1.
  • TC filters can unexpectedly match packets which use IP protocols other than what is specified as the ip_​proto argument in the tc filter add command. For example, UDP packets may be matched on a TCP TC filter created with ip_​proto tcp without any L4 port matches.
  • Creating more than 10k TC filters on an interface can result in errors talking to the kernel and the filters fail to get created. (The maximum number of supported TC filters is 32k.)
  • TC filters do not function correctly when GTP encryption is enabled in the TC filter add command (enc_​key_​id 1).This causes traffic to go to default TC 0.

    Mitigation: Use ice driver version 1.11.x and later