1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
<table class="head">
<tr>
<td class="head-ltitle">VMX(4)</td>
<td class="head-vol">Device Drivers Manual</td>
<td class="head-rtitle">VMX(4)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">vmx</code> — <span class="Nd">VMware
VMXNET3 Virtual Interface Controller device</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp">To compile this driver into the kernel, place the following lines
in your kernel configuration file:</p>
<div class="Bd Pp Bd-indent"><code class="Cd">device iflib</code>
<br/>
<code class="Cd">device vmx</code></div>
<p class="Pp">Alternatively, to load the driver as a module at boot time, place
the following line in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>if_vmx_load="YES"</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The <code class="Nm">vmx</code> 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.</p>
<p class="Pp">This driver supports the <code class="Ic">VMXNET3</code> driver
protocol, as an alternative to the emulated <a class="Xr">le(4)</a>,
<a class="Xr">em(4)</a> interfaces also available in the VMware environment.
The <code class="Nm">vmx</code> 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 <code class="Nm">vmx</code> 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.</p>
<p class="Pp">The <code class="Nm">vmx</code> driver supports VMXNET3 VMware
virtual NICs provided by the virtual machine hardware version 7 or newer, as
provided by the following products:</p>
<p class="Pp"></p>
<ul class="Bl-bullet Bd-indent Bl-compact">
<li>VMware ESX/ESXi 4.0 and newer</li>
<li>VMware Server 2.0 and newer</li>
<li>VMware Workstation 6.5 and newer</li>
<li>VMware Fusion 2.0 and newer</li>
</ul>
<p class="Pp">For more information on configuring this device, see
<a class="Xr">ifconfig(8)</a>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="MULTIPLE_QUEUES"><a class="permalink" href="#MULTIPLE_QUEUES">MULTIPLE
QUEUES</a></h1>
<p class="Pp">The <code class="Nm">vmx</code> 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. <span class="Ux">FreeBSD</span> does not enable MSI-X support on
VMware by default. The <var class="Va">hw.pci.honor_msi_blacklist</var>
tunable must be disabled to enable MSI-X support.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="LOADER_TUNABLES"><a class="permalink" href="#LOADER_TUNABLES">LOADER
TUNABLES</a></h1>
<p class="Pp">Tunables can be set at the <a class="Xr">loader(8)</a> prompt
before booting the kernel or stored in <a class="Xr">loader.conf(5)</a>.</p>
<dl class="Bl-tag">
<dt id="hw.vmx.txnqueue"><var class="Va">hw.vmx.txnqueue</var></dt>
<dd style="width: auto;"> </dd>
<dt id="hw.vmx."><var class="Va">hw.vmx.</var><var class="Ar">X</var><var class="Va">.txnqueue</var></dt>
<dd>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.</dd>
<dt id="hw.vmx.rxnqueue"><var class="Va">hw.vmx.rxnqueue</var></dt>
<dd style="width: auto;"> </dd>
<dt id="hw.vmx.~2"><var class="Va">hw.vmx.</var><var class="Ar">X</var><var class="Va">.rxnqueue</var></dt>
<dd>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.</dd>
<dt id="hw.vmx.txndesc"><var class="Va">hw.vmx.txndesc</var></dt>
<dd style="width: auto;"> </dd>
<dt id="hw.vmx.~3"><var class="Va">hw.vmx.</var><var class="Ar">X</var><var class="Va">.txndesc</var></dt>
<dd>
<p class="Pp">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.</p>
</dd>
<dt id="hw.vmx.rxndesc"><var class="Va">hw.vmx.rxndesc</var></dt>
<dd style="width: auto;"> </dd>
<dt id="hw.vmx.~4"><var class="Va">hw.vmx.</var><var class="Ar">X</var><var class="Va">.rxndesc</var></dt>
<dd>
<p class="Pp">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.</p>
</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
<p class="Pp">The following entry must be added to the VMware configuration file
to provide the <code class="Nm">vmx</code> device:</p>
<div class="Bd Pp Bd-indent Li">
<pre>ethernet0.virtualDev = "vmxnet3"</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr">altq(4)</a>, <a class="Xr">arp(4)</a>,
<a class="Xr">em(4)</a>, <a class="Xr">iflib(4)</a>,
<a class="Xr">le(4)</a>, <a class="Xr">netintro(4)</a>,
<a class="Xr">ng_ether(4)</a>, <a class="Xr">vlan(4)</a>,
<a class="Xr">ifconfig(8)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp">The <code class="Nm">vmx</code> driver was ported from
<span class="Ux">OpenBSD</span> and significantly rewritten by
<span class="An">Bryan Venteicher</span>
<<a class="Mt" href="mailto:bryanv@freebsd.org">bryanv@freebsd.org</a>>.
The <span class="Ux">OpenBSD</span> driver was written by
<span class="An">Tsubai Masanari</span>.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">December 26, 2020</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|