---
name: "vmx"
section: "4freebsd"
platform: "linux"
package: "freebsd-manpages"
version: "12.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/if_vmx/4freebsd"
---

# vmx(4freebsd)

VMware VMXNET3 Virtual Interface Controller device

Part of [if\_vmx(4freebsd)](/if_vmx/4freebsd.md).

## NAME

**vmx** – VMware VMXNET3 Virtual Interface Controller device

## SYNOPSIS

To compile this driver into the kernel, place the following lines in your kernel configuration file:

**device iflib** **device vmx**

Alternatively, to load the driver as a module at boot time, place the following line in [loader.conf(5)](/loader.conf/5.md):

```
if_vmx_load="YES"
```

## DESCRIPTION

The **vmx** driver provides support for the VMXNET3 virtual NIC available in virtual machines by VMware. It appears as a simple Ethernet device but is actually a virtual network interface to the underlying host operating system.

This driver supports the **VMXNET3** driver protocol, as an alternative to the emulated [pcn(4)](/pcn/4.md), [em(4)](/em/4.md) interfaces also available in the VMware environment. The **vmx** driver is optimized for the virtual machine, it can provide advanced capabilities depending on the underlying host operating system and the physical network interface controller of the host. The **vmx** driver supports features like multiqueue support, IPv6 checksum offloading, MSI/MSI-X support and hardware VLAN tagging in VMware's VLAN Guest Tagging (VGT) mode.

The **vmx** driver supports VMXNET3 VMware virtual NICs provided by the virtual machine hardware version 7 or newer, as provided by the following products:

- VMware ESX/ESXi 4.0 and newer

- VMware Server 2.0 and newer

- VMware Workstation 6.5 and newer

- VMware Fusion 2.0 and newer

For more information on configuring this device, see [ifconfig(8)](/ifconfig/8.md).

## MULTIPLE QUEUES

The **vmx** driver supports multiple transmit and receive queues. Multiple queues are only supported by certain VMware products, such as ESXi. The number of queues allocated depends on the presence of MSI-X, the number of configured CPUs, and the tunables listed below. FreeBSD does not enable MSI-X support on VMware by default. The *hw.pci.honor\_msi\_blacklist* tunable must be disabled to enable MSI-X support.

## LOADER TUNABLES

Tunables can be set at the [loader(8)](/loader/8.md) prompt before booting the kernel or stored in [loader.conf(5)](/loader.conf/5.md).

- *hw.vmx.txnqueue*

  - *hw.vmx.**X**.txnqueue*

  Maximum number of transmit queues allocated by default by the driver. The default value is 8. The maximum supported by the VMXNET3 virtual NIC is 8.

- *hw.vmx.rxnqueue*

  - *hw.vmx.**X**.rxnqueue*

  Maximum number of receive queues allocated by default by the driver. The default value is 8. The maximum supported by the VMXNET3 virtual NIC is 16.

- *hw.vmx.txndesc*

  - *hw.vmx.**X**.txndesc*

  Number of transmit descriptors allocated by the driver. The default value is 512. The value must be a multiple of 32, and the maximum is 4096.

- *hw.vmx.rxndesc*

  - *hw.vmx.**X**.rxndesc*

  Number of receive descriptors per ring allocated by the driver. The default value is 256. The value must be a multiple of 32, and the maximum is 2048. There are two rings so the actual usage is doubled.

## EXAMPLES

The following entry must be added to the VMware configuration file to provide the **vmx** device:

```
ethernet0.virtualDev = "vmxnet3"
```

## SEE ALSO

[altq(4)](/altq/4.md), [arp(4)](/arp/4.md), [em(4)](/em/4.md), [netintro(4)](/netintro/4.md), [ng\_ether(4)](/ng_ether/4.md), [pcn(4)](/pcn/4.md), [vlan(4)](/vlan/4.md), [ifconfig(8)](/ifconfig/8.md)

## AUTHORS

The **vmx** driver was ported from OpenBSD and significantly rewritten by Bryan Venteicher ⟨*bryanv@freebsd.org*⟩. The OpenBSD driver was written by Tsubai Masanari.
