Intel® Ethernet Controller E810 Application Device Queues (ADQ)

Configuration Guide

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

Adapter Preparation

The following variable is used in the examples in this section:

$iface The interface in use (PF).
Note:$iface in this section refers to the Physical Function (PF) interface. If using VFs, the commands in this section must be applied to the PF interface first, before spawning VF interfaces (as explained in ADQ Configuration on SR-IOV Virtual Functions).
  1. Reload the ice driver to remove any previous TC configuration. rmmod ice sleep 2 modprobe ice
  2. Make sure the interface is up with an IP Address assigned (either through configuration files or ifconfig/ip commands).
  3. Enable hardware TC offload on the interface. ethtool -K $iface hw-tc-offload on Note:There is a known issue that allows ADQ configuration to be applied on a VF interface when the hw-tc-offload flag is disabled (set to off) on the VF interface. For details, see Fixed and Known Issues - Read First.
  4. Disable LLDP on the interface. (This is the default setting and the following command should not be necessary.) ethtool --set-priv-flags $iface fw-lldp-agent off
  5. Enable channel-pkt-inspect-optimize on the interface. ethtool --set-priv-flags $iface channel-pkt-inspect-optimize on Note:If the ADQ setup includes independent pollers, this flag must be set to off.
  6. [Optional] Enable busy poll private flag(s) for large I/O block size.

    The ice driver version 1.1.0 or later includes two private flags that optimize performance of Rx packet processing during ADQ configuration with busy_​poll. These flags should be enabled for applications using large I/O block size. Workloads that benefit from having these two flags turned on include AF_​XDP and NVMe/TCP using large block I/O.

    The first flag is recommended for applications using 64K (or greater) I/O block size:

    ethtool --set-priv-flags $iface channel-pkt-clean-bp-stop on

    The second flag is recommended for applications using 128K (or greater) I/O block size:

    ethtool --set-priv-flags $iface channel-pkt-clean-bp-stop-cfg on Note:Both flags must be set to on for the second flag to be enabled. Note:If the ADQ setup includes independent pollers, both bp-stop flags must be set to off.
  7. Verify settings. ethtool -k $iface | grep "hw-tc" ethtool --show-priv-flags $iface

    Example output (ice-1.8.x):

    hw-tc-offload: on Private flags for ens8f0: link-down-on-close : off fw-lldp-agent : off channel-inline-fd-mark : off channel-pkt-inspect-optimize : on channel-pkt-clean-bp-stop : off channel-pkt-clean-bp-stop-cfg: off vf-true-promisc-support : off mdd-auto-reset-vf : off vf-vlan-pruning : off legacy-rx : off cgu_fast_lock : off dpll_monitor : off extts_filter : off

Example:

For convenience, the commands in this section are condensed below.

Note:Most workloads do not require the activation of two bp-stop flags, which are only required for larger block I/O in ADQ1.0. Note:If the ADQ setup includes independent pollers (ADQ2.0), two bp-stop flags must be set to off. #Variables iface= #The interfact in use #Settings rmmod ice sleep 2 modprobe ice ethtool -K $iface hw-tc-offload on ethtool --set-priv-flags $iface fw-lldp-agent off ethtool --set-priv-flags $iface channel-pkt-inspect-optimize on ethtool --set-priv-flags $iface channel-pkt-clean-bp-stop off ethtool --set-priv-flags $iface channel-pkt-clean-bp-stop-cfg off ethtool -k $iface | grep "hw-tc" ethtool --show-priv-flags $iface Note:If the interface is not set to come back up automatically, it might be necessary to set the interface up and reset the IP Address.