Bug 213201 - [bhyve] virtio-net requires more than one descriptor per tx operation
Summary: [bhyve] virtio-net requires more than one descriptor per tx operation
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: misc (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-virtualization (Nobody)
Depends on:
Reported: 2016-10-04 18:05 UTC by Ricardo Koller
Modified: 2021-04-27 17:30 UTC (History)
3 users (show)

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description Ricardo Koller 2016-10-04 18:05:16 UTC

We noticed that the Tx path for bhyve virtio-net devices (pci_virtio_net.c:pci_vtnet_proctx) assumes that all Tx'es will have a first descriptor with the header alone (https://svnweb.freebsd.org/base/head/usr.sbin/bhyve/pci_virtio_net.c?view=markup#l609):

	sc->pci_vtnet_tx(sc, &iov[1], n - 1, plen); // Skips the header descriptor

The issue is that the virtio 1.0 specification allows for having the net header and the data in a single descriptor. See section of the virtio spec (http://docs.oasis-open.org/virtio/virtio/v1.0/cs04/virtio-v1.0-cs04.html#x1-1680006).

Comment 1 Peter Grehan freebsd_committer 2016-10-05 21:29:49 UTC
Since bhyve doesn't advertize v1.0 support, is this still an issue ?
Comment 2 Ricardo Koller 2016-10-07 23:33:13 UTC
The oldest virtio spec I could find online is 0.9.4 (http://ozlabs.org/~rusty/virtio-spec/old/virtio-0.9.4.pdf). The section about how to add descriptors to the ring is the same as in 1.0 (section 2.4.1).
Comment 3 Ricardo Koller 2016-10-07 23:35:24 UTC
Same thing for 0.8.7. ozlabs.org/~rusty/virtio-spec/old/virtio-spec-0.8.7.pdf