1.\" 2.\" Copyright (c) 2006,2013 Reyk Floeter <reyk@openbsd.org> 3.\" 4.\" Permission to use, copy, modify, and distribute this software for any 5.\" purpose with or without fee is hereby granted, provided that the above 6.\" copyright notice and this permission notice appear in all copies. 7.\" 8.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15.\" 16.\" $OpenBSD: src/share/man/man4/vmx.4,v 1.1 2013/05/31 20:18:44 reyk Exp $ 17.\" 18.\" $FreeBSD$ 19.\" 20.Dd December 26, 2020 21.Dt VMX 4 22.Os 23.Sh NAME 24.Nm vmx 25.Nd VMware VMXNET3 Virtual Interface Controller device 26.Sh SYNOPSIS 27To compile this driver into the kernel, 28place the following lines in your 29kernel configuration file: 30.Bd -ragged -offset indent 31.Cd "device iflib" 32.Cd "device vmx" 33.Ed 34.Pp 35Alternatively, to load the driver as a 36module at boot time, place the following line in 37.Xr loader.conf 5 : 38.Bd -literal -offset indent 39if_vmx_load="YES" 40.Ed 41.Sh DESCRIPTION 42The 43.Nm 44driver provides support for the VMXNET3 virtual NIC available in virtual 45machines by VMware. 46It appears as a simple Ethernet device but is actually a virtual network 47interface to the underlying host operating system. 48.Pp 49This driver supports the 50.Ic VMXNET3 51driver protocol, as an alternative to the emulated 52.Xr le 4 , 53.Xr em 4 54interfaces also available in the VMware environment. 55The 56.Nm 57driver is optimized for the virtual machine, it can provide advanced 58capabilities depending on the underlying host operating system and 59the physical network interface controller of the host. 60The 61.Nm 62driver supports features like multiqueue support, IPv6 63checksum offloading, MSI/MSI-X support and hardware VLAN tagging in 64VMware's VLAN Guest Tagging (VGT) mode. 65.Pp 66The 67.Nm 68driver supports VMXNET3 VMware virtual NICs provided by the virtual 69machine hardware version 7 or newer, as provided by the following 70products: 71.Pp 72.Bl -bullet -compact -offset indent 73.It 74VMware ESX/ESXi 4.0 and newer 75.It 76VMware Server 2.0 and newer 77.It 78VMware Workstation 6.5 and newer 79.It 80VMware Fusion 2.0 and newer 81.El 82.Pp 83For more information on configuring this device, see 84.Xr ifconfig 8 . 85.Sh MULTIPLE QUEUES 86The 87.Nm 88driver supports multiple transmit and receive queues. 89Multiple queues are only supported by certain VMware products, such as ESXi. 90The number of queues allocated depends on the presence of MSI-X, 91the number of configured CPUs, 92and the tunables listed below. 93.Fx 94does not enable MSI-X support on VMware by default. 95The 96.Va hw.pci.honor_msi_blacklist 97tunable must be disabled to enable MSI-X support. 98.Sh LOADER TUNABLES 99Tunables can be set at the 100.Xr loader 8 101prompt before booting the kernel or stored in 102.Xr loader.conf 5 . 103.Bl -tag -width indent 104.It Va hw.vmx.txnqueue 105.It Va hw.vmx. Ns Ar X Ns Va .txnqueue 106Maximum number of transmit queues allocated by default by the driver. 107The default value is 8. 108The maximum supported by the VMXNET3 virtual NIC is 8. 109.It Va hw.vmx.rxnqueue 110.It Va hw.vmx. Ns Ar X Ns Va .rxnqueue 111Maximum number of receive queues allocated by default by the driver. 112The default value is 8. 113The maximum supported by the VMXNET3 virtual NIC is 16. 114.It Va hw.vmx.txndesc 115.It Va hw.vmx. Ns Ar X Ns Va .txndesc 116.Pp 117Number of transmit descriptors allocated by the driver. 118The default value is 512. 119The value must be a multiple of 32, and the maximum is 4096. 120.It Va hw.vmx.rxndesc 121.It Va hw.vmx. Ns Ar X Ns Va .rxndesc 122.Pp 123Number of receive descriptors per ring allocated by the driver. 124The default value is 256. 125The value must be a multiple of 32, and the maximum is 2048. 126There are two rings so the actual usage is doubled. 127.El 128.Sh EXAMPLES 129The following entry must be added to the VMware configuration file 130to provide the 131.Nm 132device: 133.Bd -literal -offset indent 134ethernet0.virtualDev = "vmxnet3" 135.Ed 136.Sh SEE ALSO 137.Xr altq 4 , 138.Xr arp 4 , 139.Xr em 4 , 140.Xr iflib 4 , 141.Xr netintro 4 , 142.Xr ng_ether 4 , 143.Xr le 4 , 144.Xr vlan 4 , 145.Xr ifconfig 8 146.Sh AUTHORS 147.An -nosplit 148The 149.Nm 150driver was ported from 151.Ox 152and significantly rewritten by 153.An Bryan Venteicher Aq Mt bryanv@freebsd.org . 154The 155.Ox 156driver was written by 157.An Tsubai Masanari . 158