Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
VTNET(4)		    Kernel Interfaces Manual		      VTNET(4)

NAME
       vtnet --	VirtIO Ethernet	driver

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

	     device vtnet

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

	     if_vtnet_load="YES"

DESCRIPTION
       The vtnet device	driver provides	support	for VirtIO Ethernet devices.

       If the hypervisor advertises the	appropriate features, the vtnet	driver
       supports	 TCP/UDP  checksum  offload for	both transmit and receive, TCP
       segmentation offload (TSO), TCP large receive offload  (LRO),  hardware
       VLAN tag	stripping/insertion features, a	multicast hash filter, as well
       as Jumbo	Frames (up to 9216 bytes), which can be	configured via the in-
       terface MTU setting.

       Two  flavors  of	TCP LRO	are supported: Hardware	TCP LRO, which is per-
       formed by the host providing TCP	segments larger	than the  MTU  to  the
       guest, and Software TCP LRO, which is performed by the network stack of
       the  guest  processing  TCP  segments  in  an  optimized	way.  Only one
       flavour of TCP LRO should be used.  Since hardware TCP LRO can have bad
       interactions with IP forwarding and software TCP	LRO mitigates  several
       drawbacks  of hardware TCP LRO, the default setting is to disable hard-
       ware TCP	LRO.  See the loader tunable hw.vtnet.X.lro_disable.

       TCP/UDP receive checksum	offload	cannot be configured independently for
       IPv4 and	IPv6.  Selecting an  MTU  larger  than	1500  bytes  with  the
       ifconfig(8)  utility  configures	 the  adapter  to receive and transmit
       Jumbo Frames.

       For more	information on configuring this	device,	see ifconfig(8).

LOADER TUNABLES
       Tunables	can be set at the loader(8) prompt before booting  the	kernel
       or stored in loader.conf(5).

       hw.vtnet.csum_disable

       hw.vtnet.X.csum_disable
	       This  tunable disables receive and transmit checksum offloading
	       for TCP and UDP.	 This also implies that	TCP  segmentation  of-
	       floading	 and  large receive offload are	disabled.  The default
	       value is	0.

       hw.vtnet.fixup_needs_csum

       hw.vtnet.X.fixup_needs_csum
	       This tunable enforces the calculation of	a  valid  TCP  or  UDP
	       checksum	 for packets received with VIRTIO_NET_HDR_F_NEEDS_CSUM
	       being  set  in  the  flags  field  of  the   structure	struct
	       virtio_net_hdr.	It also	marks the checksum as being correct in
	       the  mbuf packet	header.	 The default value is 0.  This tunable
	       is deprecated and will be removed in FreeBSD 16.

       hw.vtnet.tso_disable

       hw.vtnet.X.tso_disable
	       This tunable disables TCP segmentation offloading.  The default
	       value is	0.

       hw.vtnet.lro_disable

       hw.vtnet.X.lro_disable
	       This tunable disables hardware TCP LRO.	The default  value  is
	       1.

       hw.vtnet.mq_disable

       hw.vtnet.X.mq_disable
	       This tunable disables multiqueue.  The default value is 0.

       hw.vtnet.mq_max_pairs

       hw.vtnet.X.mq_max_pairs
	       This  tunable  sets  the	maximum	number of transmit and receive
	       queue pairs.  Multiple queues are only supported	when the  Mul-
	       tiqueue	feature	is negotiated.	This driver supports a maximum
	       of 8 queue pairs.  The number of	queue pairs used is the	lesser
	       of the maximum supported	by the driver and the hypervisor,  the
	       number  of  CPUs	 present in the	guest, and this	tunable	if not
	       zero.  The default value	is 0.

       hw.vtnet.tso_maxlen

       hw.vtnet.X.tso_maxlen
	       This tunable sets the TSO burst limit.  The  default  value  is
	       65535.

       hw.vtnet.rx_process_limit

       hw.vtnet.X.rx_process_limit
	       This  tunable  sets  the	number of RX segments processed	in one
	       pass.  The default value	is 1024.

       hw.vtnet.lro_entry_count

       hw.vtnet.X.lro_entry_count
	       This tunable sets the software TCP LRO entry  count.   The  de-
	       fault value is 128, the minimum value is	8.

       hw.vtnet.lro_mbufq_depth

       hw.vtnet.X.lro_mbufq_depth
	       This tunable sets the depth of the software TCP LRO mbuf	queue.
	       The default value is 0.

       hw.vtnet.altq_disable
	       This  tunable disables ALTQ support, allowing the use of	multi-
	       queue instead.  This option applies to all interfaces.  The de-
	       fault value is 0.

TRANSMIT QUEUE STATISTICS
       For each	transmit queue of each interface the following read-only  sta-
       tistics are provided:

       dev.vtnet.X.txqY.rescheduled
	       The number of times the transmit	interrupt handler was resched-
	       uled.

       dev.vtnet.X.txqY.tso
	       The number of times TCP segment offloading was performed.

       dev.vtnet.X.txqY.csum
	       The number of times transmit checksum offloading	for UDP	or TCP
	       was performed.

       dev.vtnet.X.txqY.omcasts
	       The number of multicast packets that were transmitted.

       dev.vtnet.X.txqY.obytes
	       The  number  of	bytes that were	transmitted (based on Ethernet
	       frames).

       dev.vtnet.X.txqY.opackets
	       The number of packets that were transmitted (Ethernet frames).

RECEIVE	QUEUE STATISTICS
       For each	receive	queue of each interface	the following  read-only  sta-
       tistics are provided:

       dev.vtnet.X.rxqY.rescheduled
	       The  number of times the	receive	interrupt handler was resched-
	       uled.

       dev.vtnet.X.rxqY.host_lro
	       The number of times TCP large receive offload was performed.

       dev.vtnet.X.rxqY.csum_failed
	       The number of times a packet with  a  request  for  receive  or
	       transmit	 checksum  offloading  was  received  and this request
	       failed.	The different reasons for the failure are  counted  by
	       dev.vtnet.X.rx_csum_inaccessible_ipproto,
	       dev.vtnet.X.rx_csum_bad_ipproto,
	       dev.vtnet.X.rx_csum_bad_ethtype,				   and
	       dev.vtnet.X.rx_csum_bad_offset.

       dev.vtnet.X.rxqY.csum
	       The number of times receive checksum offloading for UDP or  TCP
	       was performed.

       dev.vtnet.X.rxqY.ierrors
	       The number of times an error occurred during input processing.

       dev.vtnet.X.rxqY.iqdrops
	       The  number of times a packet was dropped during	input process-
	       ing.

       dev.vtnet.X.rxqY.ibytes
	       The number of bytes  that  were	received  (based  on  Ethernet
	       frames).

       dev.vtnet.X.rxqY.ipackets
	       The number of packets that were received	(Ethernet frames).

INTERFACE TRANSMIT STATISTICS
       For each	interface the following	read-only transmit statistics are pro-
       vided:

       dev.vtnet.X.tx_task_rescheduled
	       The  sum	 of  dev.vtnet.X.txqY.rescheduled  over	 all  transmit
	       queues of the interface.

       dev.vtnet.X.tx_tso_offloaded
	       The sum of dev.vtnet.X.txqY.tso over all	transmit queues	of the
	       interface.

       dev.vtnet.X.tx_csum_offloaded
	       The sum of dev.vtnet.X.txqY.csum	over all  transmit  queues  of
	       the interface.

       dev.vtnet.X.tx_defrag_failed
	       The  number  of	times  an  attempt to defragment an mbuf chain
	       failed during a transmit	operation.

       dev.vtnet.X.tx_defragged
	       The number of times an mbuf chain  was  defragmented  during  a
	       transmit	operation.

       dev.vtnet.X.tx_tso_without_csum
	       The  number of times TCP	segment	offloading was attempted with-
	       out transmit checksum offloading.

       dev.vtnet.X.tx_tso_not_tcp
	       The number of times TCP segment offloading was attempted	for  a
	       non-TCP packet.

       dev.vtnet.X.tx_csum_proto_mismatch
	       The  number  of	times  the IP protocol version of the transmit
	       checksum	offloading request did not match the IP	protocol  ver-
	       sion of the packet.

       dev.vtnet.X.tx_csum_unknown_ethtype
	       The  number of times a transmit offload operation was requested
	       for an ethernet frame for which the EtherType was neither  IPv4
	       nor IPv6	(considering simple VLAN tagging).

INTERFACE RECEIVE STATISTICS
       For  each interface the following read-only receive statistics are pro-
       vided:

       dev.vtnet.X.rx_task_rescheduled
	       The sum of dev.vtnet.X.rxqY.rescheduled over all	receive	queues
	       of the interface.

       dev.vtnet.X.rx_csum_offloaded
	       The sum of dev.vtnet.X.rxqY.csum	over all receive queues	of the
	       interface.

       dev.vtnet.X.rx_csum_failed
	       The sum of dev.vtnet.X.rxqY.csum_failed over all	receive	queues
	       of the interface.

       dev.vtnet.X.rx_csum_inaccessible_ipproto
	       The number of times a packet with  a  request  for  receive  or
	       transmit	checksum offloading was	received where the IP protocol
	       was not accessible.

       dev.vtnet.X.rx_csum_bad_offset
	       The   number   of   times   fixing  the	checksum  required  by
	       hw.vtnet.fixup_needs_csum  or  hw.vtnet.X.fixup_needs_csum  was
	       attempted  for  a  packet  where	the csum is not	located	in the
	       first mbuf.

       dev.vtnet.X.rx_csum_bad_ipproto
	       The number of times a packet with  a  request  for  receive  or
	       transmit	checksum offloading was	received where the IP protocol
	       was neither TCP nor UDP.

       dev.vtnet.X.rx_csum_bad_ethtype
	       The  number  of	times  a  packet with a	request	for receive or
	       transmit	checksum offloading was	received where	the  EtherType
	       was neither IPv4	nor IPv6.

       dev.vtnet.X.rx_mergeable_failed
	       The number of times receiving a mergable	buffer failed.

       dev.vtnet.X.rx_enq_replacement_failed
	       The  number of times the	enqueuing the replacement receive mbuf
	       chain failed.

       dev.vtnet.X.rx_frame_too_large
	       The number of times the frame was loger	than  the  mbuf	 chain
	       during large receive offload without mergeable buffers.

       dev.vtnet.X.mbuf_alloc_failed
	       The  number of times an mbuf cluster allocation for the receive
	       buffer failed.

INTERFACE CONFIGURATION	PARAMETER
       For each	interface the following	read-only configuration	parameters are
       provided:

       dev.vtnet.X.act_vq_pairs
	       The number of active virtqueue pairs.

       dev.vtnet.X.req_vq_pairs
	       The number of requested virtqueue pairs.

       dev.vtnet.X.max_vq_pairs
	       The maximum number of supported virtqueue pairs.

SEE ALSO
       arp(4), netintro(4), ng_ether(4), virtio(4), vlan(4), ifconfig(8)

HISTORY
       The vtnet driver	was written by Bryan Venteicher	 <bryanv@FreeBSD.org>.
       It first	appeared in FreeBSD 9.0.

CAVEATS
       The  vtnet  driver only supports	LRO when the hypervisor	advertises the
       mergeable buffer	feature.

FreeBSD	15.0		      September	30, 2025		      VTNET(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vtnet&sektion=4&manpath=FreeBSD+15.0-RELEASE+and+Ports>

home | help