Enabling Flow Control with VMware ESX 4.x


This tutorial will go hand in hand with Enabling Jumbo Frames with VMware ESX 4, for support of iSCSI and NFS storage networks.

You will want to setup your storage network with each end point, being the ESX hosts and Storage unit, with Flow control send only and the Data switches in between with Flowcontrol receive only.

This is how we configure flowcontrol on an ESX host with either Intel or Broadcom Adapaters

Intel Adapters

To configure Flowcontrol on an ESX host we have to jump into the CLI and type in:

esxcfg-module -s FlowControl=x,x,x,x e1000

Each x represents an Intel adapter in the ESX host. So the first x would be adapater 1, the second x will be adapter 2, etc

The options to set for x are:

0 – meaning no flow control

1 – Receive only

2 – Transmit only

3 – Receive and Transmit

esxcfg-module -s FlowControl=x,x,x,x e1000

For example if I want to disable flowcontrol on my Intel adapater 1 but enable Transmit only on adapter 2 we would use the following syntax:

esxcfg-module -s FlowControl=0,2 e1000

We can then verify the settings with this command:

esxcfg-module -g e1000

where we will get an output of:

e1000 enabled = 1 options = ‘FlowControl=0,2’

Broadcom Adapters

To enable flowcontrol on a broadcom adapter we use the syntax below replacing vmnic# with your vmnic number:

ethtool -A vmnic# autoneg on rx on tx on

For example to enable vmnic1 for flowcontrol we will use the following command:

ethtool -A vmnic1 autoneg on rx on tx on

To disable any component of flowcontrol on a broadcom adapter simply replace on with off. So if I was to disable flowcontrol on an adapter I would type the following:

ethtool -A vmnic1 autoneg off rx off tx off

This command is not persistent across reboots, therefore we must add the above command into the /etc/rc.local file

All the tutorials included on this site are performed in a lab environment to simulate a real world production scenario. As everything is done to provide the most accurate steps to date, we take no responsibility if you implement any of these steps in a production environment.