Intel® Ethernet 800 Series Linux Flow Control

Configuration Guide for RDMA Use Cases

ID 635330
Date 07/13/2023
Version 1.3
Document Table of Contents

Example 1 - 800 Series-800 Series Back-to-Back – PCP PFC with Single TC

A common benchmarking setup uses 800 Series adapters back-to-back, running a single traffic type.

Note:When using a single TC, that TC is always TC0. Application traffic runs on TC0 by default, unless explicitly configured otherwise.

Settings in this example:

  • Non-willing mode — Configure both hosts in the same way to be compatible.
  • Software DCB — Required to use non-willing mode.
  • All priorities mapped to TC0.
  • 100% bandwidth allocated to TC0.
  • PFC enabled on priority 0 — in this configuration, enabling PFC on prio 0 essentially enables it for all traffic.

Perform the following steps on both servers:

  1. Disable LFC (LFC and PFC cannot co-exist). # ethtool -A <interface> rx off tx off
  2. Verify that LFC is disabled. # ethtool -a <interface> Pause parameters for <interface>: Autonegotiate: on RX: off TX: off RX negotiated: off TX negotiated: off
  3. Configure the adapter for software DCB mode by disabling firmware DCB mode. # ethtool --set-priv-flags <interface> fw-lldp-agent off
  4. Verify that firmware DCB is disabled. # ethtool --show-priv-flags <interface> | grep fw-lldp-agent fw-lldp-agent : off
  5. Install OpenLLDP (the software that controls PFC and other DCB settings), if not already installed.
    • RHEL: # yum install lldpad
    • SLES or Ubuntu: zypper or apt-get might work (untested)
    • All operating systems:

      Download and build from source from https://github.com/intel/openlldp.

  6. Start the LLDP daemon. # lldpad -d
  7. Verify LLDP is active by showing current LLDP settings on the interface.

    These are the default llpad settings (some outputs might be different).

    Chassis ID TLV MAC: 68:05:ca:a3:89:78 Port ID TLV MAC: 68:05:ca:a3:89:78 Time to Live TLV 120 IEEE 8021QAZ ETS Configuration TLV Willing: yes CBS: not supported MAX_TCS: 8 PRIO_MAP: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 TC Bandwidth: 0% 0% 0% 0% 0% 0% 0% 0% TSA_MAP: 0:strict 1:strict 2:strict 3:strict 4:strict 5:strict 6:strict 7:strict IEEE 8021QAZ PFC TLV Willing: yes MACsec Bypass Capable: no PFC capable traffic classes: 8 PFC enabled: none End of LLDPDU TLV
  8. Enable PFC on priority 0 in non-willing mode.

    Note that enabled=0 means that PFC is enabled on priority 0, not that PFC is not enabled.

    # lldptool -Ti <interface> -V PFC willing=no enabled=0

    Output:

    willing = no prio = 0
  9. Enable ETS to map all priorities to TC0 and allocate 100% bandwidth to TC0. Note:The following is a single long command line: # lldptool -Ti <interface> -V ETS-CFG willing=no \ up2tc=0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0 \ tsa=0:ets,1:strict,2:strict,3:strict,4:strict,5:strict,6:strict,7:strict \ tcbw=100,0,0,0,0,0,0,0

    Output:

    willing = no up2tc = 0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0 TSA = 0:ets 1:strict 2:strict 3:strict 4:strict 5:strict 6:strict 7:strict tcbw = 100% 0% 0% 0% 0% 0% 0% 0%
  10. Verify new settings. # lldptool -ti <interface> Chassis ID TLV MAC: 68:05:ca:a3:89:78 Port ID TLV MAC: 68:05:ca:a3:89:78 Time to Live TLV 120 IEEE 8021QAZ ETS Configuration TLV Willing: no CBS: not supported MAX_TCS: 8 PRIO_MAP: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 TC Bandwidth: 100% 0% 0% 0% 0% 0% 0% 0% TSA_MAP: 0:ets 1:strict 2:strict 3:strict 4:strict 5:strict 6:strict 7:strict IEEE 8021QAZ PFC TLV Willing: no MACsec Bypass Capable: no PFC capable traffic classes: 8 PFC enabled: 0 End of LLDPDU TLV
  11. Repeat on other host.

    Alternatively, you could configure the other host for willing mode.

  12. Run the application.

    Run the application normally on the parent interface.

    You do not need to specify any ToS or other priority values. The application runs on TC 0, with PFC enabled.