HomeFreeBSD

bhyve: enable virtio-net mergeable rx buffers for tap(4)

Description

bhyve: enable virtio-net mergeable rx buffers for tap(4)

This patch adds a new netbe_peek_recvlen() function to the net
backend API. The new function allows the virtio-net receive code
to know in advance how many virtio descriptors chains will be
needed to receive the next packet. As a result, the implementation
of the virtio-net mergeable rx buffers feature becomes efficient,
so that we can enable it also with the tap(4) backend. For the
tap(4) backend, a bounce buffer is introduced to implement the
peeck_recvlen() callback, which implies an additional packet copy
on the receive datapath. In the future, it should be possible to
remove the bounce buffer (and so the additional copy), by
obtaining the length of the next packet from kevent data.

Reviewed by: grehan, aleksandr.fedorov@itglobal.com
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D23472

Details

Provenance
vmaffioneAuthored on
Reviewer
grehan
Differential Revision
D23472: bhyve: enable virtio-net mergeable rx buffers for tap(4)
Parents
rS358179: Merge ^/head r358131 through r358178.
Branches
Unknown
Tags
Unknown