Provide the standard VirtIO interface for network devices
vdev virtio-net options
For a list of options available to all vdevs, see Common vdev options at the beginning of this chapter.
Normally the device appears as a PCI device, but if you specify the loc and intr options, the guest will see it as a memory-mapped I/O device at the specified location.
Feature bits are used to specify the features that are exposed to a peer in a network. They can be defined for each individual virtio-net interface (i.e., each peer connection can have its own feature set).
Peerfeats defines the maximum set of features that will be negotiated between the two TCP stacks connected as peers. The peerfeats bits are specified in Virtual I/O Device (VIRTIO) Version 1.0, Section 5.1.3 (see the document repository at oasis-open.org). This maximum set of bits is currently set at 0x7fc3. The current QNX Neutrino OS TCP stack provided with QNX SDP 7.0 supports a subset of the maximum set. This subset is 0x19c3, or:
0001 1001 1100 0011
with the least-significant bit (bit zero) on the right.
Of particular interest are the bits that support checksumming and Transmit Segmentation Offload (TSO); both these features are supported in the QNX TCP stack (see the table below).
The default peerfeats value for a peer interface is 0x0000.
You should limit the feature bits to the features supported by the guests. For example, if you are configuring two QNX Neutrino OS 7.0 guests to connect as peers, you should specify 0x19c3 as the value for the peerfeats option's mask in the VM configuration for each guest.
When using the peerfeats option:
If you are configuring a peer connection to a QNX io-pkt-* bridge, you must set the peerfeats option to 0x0 (zero) to disable all features on both peer nodes.
If one of the peers is in the hypervisor host, configure its interface to disable checksums for TCP/IP and UDP, as follows:
ifconfig vp0 -tcp4csum -udp4csum -udp6csum -tcp6csum
This is required so that the host bridge does not incorrectly discard or delay packets. Note, however, that you disable checksums only for receiving IP (-rx), so you can still transfer packets with checksums out. If the peer node is properly configured, it should have checksums disabled and be able to receive your packets.
The table below lists the recommended feature set for guest-to-guest and guest-to host connections:
Bit | Name | Feature |
---|---|---|
0 | VIRTIO_NET_F_CSUM | Device handles packets with partial (or no) checksum. |
1 | VIRTIO_NET_F_GUEST_CSUM | Driver handles packets with partial (or no) checksum. |
The table below lists the recommended feature set for guest-to-guest connections only:
Bit | Name | Feature |
---|---|---|
7 | VIRTIO_NET_F_GUEST_TSO4 | Driver can receive TSOv4. |
8 | VIRTIO_NET_F_GUEST_TSO6 | Driver can receive TSOv6. |
11 | VIRTIO_NET_F_HOST_TSO4 | Device can receive TSOv4. |
12 | VIRTIO_NET_F_HOST_TSO6 | Device can receive TSOv6. |
For more information about using the virtio-net vdev, see Networking in the Using a QNX Hypervisor System chapter.