Inconsistent Flow Control reporting in esxcli after disabling Flow Control via i40en driver module parameters.
search cancel

Inconsistent Flow Control reporting in esxcli after disabling Flow Control via i40en driver module parameters.

book

Article ID: 439518

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

After attempting to disable Flow Control on Intel adapters using the i40en driver, users may observe the following:

  • Changes applied via esxcli network nic pauseParams set are immediate but lost after a reboot.
  • Persistent changes applied via esxcli system module parameters set --module i40en --parameter-string "pause_rx=0 pause_tx=0" result in inconsistent reporting after a host reboot.
  • Running esxcli network nic pauseParams list may show one vmnic as false (Disabled) while another vmnic returns to true (Enabled), even though the module parameters are correctly set to 0.

Environment

VMware vSphere ESXi

Cause

This is a reporting inconsistency between the ESXi runtime network stack and the driver module state.

  1. The command esxcli network nic pauseParams list queries the runtime network stack. This stack is initialized during boot and does not automatically inherit its "display" state from the driver's advanced module parameters unless those parameters are explicitly pushed to the stack.
  2. The i40en driver parameters pause_rx and pause_tx are arrays. If the host has multiple ports, the parameter string must account for all ports (e.g., 0,0) to ensure consistent initialization across all physical interfaces.

Resolution

To ensure Flow Control is disabled and consistently reported across reboots, verify the operational state and use the local.sh method to synchronize the runtime reporting.

  1. The most accurate way to check if Flow Control is active at the hardware/driver level is running the below command. Examine the fields Pause RX and Pause TX. If these are false, the driver has successfully disabled Flow Control regardless of what pauseParams list displays.
    esxcli network nic get -n vmnicX
  2. Ensure Module Parameters account for all ports If using the module parameter method, ensure you provide a value for each port on the card:
    #Example for a 2-port card:
    esxcli system module parameters set --module i40en --parameter-string "pause_rx=0,0 pause_tx=0,0"
  3. In case the changes are applied via the command esxcli network nic pauseParams set, the runtime commands must be executed at every boot:
    1. Edit the /etc/rc.local.d/local.sh file.
    2. Add the following lines before the exit 0 statement:
      esxcli network nic pauseParams set -n vmnic0 --rx=false --tx=false
      esxcli network nic pauseParams set -n vmnic1 --rx=false --tx=false
    3. Save the file and reboot the host.