xref: /freebsd/share/man/man4/vtnet.4 (revision 383e7290c0b5f25c5377cfce07debef7d59f76a3)
1.\" Copyright (c) 2011 Bryan Venteicher
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.Dd July 29, 2025
26.Dt VTNET 4
27.Os
28.Sh NAME
29.Nm vtnet
30.Nd VirtIO Ethernet driver
31.Sh SYNOPSIS
32To compile this driver into the kernel,
33place the following lines in your
34kernel configuration file:
35.Bd -ragged -offset indent
36.Cd "device vtnet"
37.Ed
38.Pp
39Alternatively, to load the driver as a
40module at boot time, place the following line in
41.Xr loader.conf 5 :
42.Bd -literal -offset indent
43if_vtnet_load="YES"
44.Ed
45.Sh DESCRIPTION
46The
47.Nm
48device driver provides support for VirtIO Ethernet devices.
49.Pp
50If the hypervisor advertises the appropriate features, the
51.Nm
52driver supports TCP/UDP checksum offload for both transmit and receive,
53TCP segmentation offload (TSO), TCP large receive offload (LRO),
54hardware VLAN tag stripping/insertion features, a multicast hash filter,
55as well as Jumbo Frames (up to 9216 bytes), which can be
56configured via the interface MTU setting.
57Selecting an MTU larger than 1500 bytes with the
58.Xr ifconfig 8
59utility configures the adapter to receive and transmit Jumbo Frames.
60.Pp
61For more information on configuring this device, see
62.Xr ifconfig 8 .
63.Sh LOADER TUNABLES
64Tunables can be set at the
65.Xr loader 8
66prompt before booting the kernel or stored in
67.Xr loader.conf 5 .
68.Bl -tag -width "xxxxxx"
69.It Va hw.vtnet.csum_disable
70.It Va hw.vtnet. Ns Ar X Ns Va .csum_disable
71This tunable disables receive and send checksum offload.
72The default value is 0.
73.It Va hw.vtnet.fixup_needs_csum
74.It Va hw.vtnet. Ns Ar X Ns Va .fixup_needs_csum
75This tunable enforces the calculation of a valid checksum for NEEDS_CSUM
76packets.
77The default value is 0.
78.It Va hw.vtnet.tso_disable
79.It Va hw.vtnet. Ns Ar X Ns Va .tso_disable
80This tunable disables TSO.
81The default value is 0.
82.It Va hw.vtnet.lro_disable
83.It Va hw.vtnet. Ns Ar X Ns Va .lro_disable
84This tunable disables LRO.
85The default value is 0.
86.It Va hw.vtnet.mq_disable
87.It Va hw.vtnet. Ns Ar X Ns Va .mq_disable
88This tunable disables multiqueue.
89The default value is 0.
90.It Va hw.vtnet.mq_max_pairs
91.It Va hw.vtnet. Ns Ar X Ns Va .mq_max_pairs
92This tunable sets the maximum number of transmit and receive queue pairs.
93Multiple queues are only supported when the Multiqueue feature is negotiated.
94This driver supports a maximum of 8 queue pairs.
95The number of queue pairs used is the lesser of the maximum supported by the
96driver and the hypervisor, the number of CPUs present in the guest, and this
97tunable if not zero.
98The default value is 0.
99.It Va hw.vtnet.tso_maxlen
100.It Va hw.vtnet. Ns Ar X Ns Va .tso_maxlen
101This tunable sets the TSO burst limit.
102The default value is 65535.
103.It Va hw.vtnet.rx_process_limit
104.It Va hw.vtnet. Ns Ar X Ns Va .rx_process_limit
105This tunable sets the number of RX segments processed in one pass.
106The default value is 1024.
107.It Va hw.vtnet.lro_entry_count
108.It Va hw.vtnet. Ns Ar X Ns Va .lro_entry_count
109This tunable sets the software LRO entry count.
110The default value is 128, the minimum value is 8.
111.It Va hw.vtnet.lro_mbufq_depth
112.It Va hw.vtnet. Ns Ar X Ns Va .lro_mbufq_depth
113This tunable sets the depth of the software LRO mbuf queue.
114The default value is 0.
115.It Va hw.vtnet.altq_disable
116This tunable disables ALTQ support, allowing the use of multiqueue instead.
117This option applies to all interfaces.
118The default value is 0.
119.El
120.Sh SEE ALSO
121.Xr arp 4 ,
122.Xr netintro 4 ,
123.Xr ng_ether 4 ,
124.Xr virtio 4 ,
125.Xr vlan 4 ,
126.Xr ifconfig 8
127.Sh HISTORY
128The
129.Nm
130driver was written by
131.An Bryan Venteicher Aq Mt bryanv@FreeBSD.org .
132It first appeared in
133.Fx 9.0 .
134.Sh CAVEATS
135The
136.Nm
137driver only supports LRO when the hypervisor advertises the
138mergeable buffer feature.
139