summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrew Melnychenko <andrew@daynix.com>2021-05-14 14:48:33 +0300
committerJason Wang <jasowang@redhat.com>2021-06-04 15:25:46 +0800
commit0145c3934895e2cb2b8bd679ca274bc5f7e76de7 (patch)
tree8a09cf572d7634ac3e70250684b8a7cfaa5565ba /include
parent46627f41b6b781885c64a2b12814060a7ca8da36 (diff)
downloadqemu-0145c3934895e2cb2b8bd679ca274bc5f7e76de7.zip
virtio-net: Added eBPF RSS to virtio-net.
When RSS is enabled the device tries to load the eBPF program to select RX virtqueue in the TUN. If eBPF can be loaded the RSS will function also with vhost (works with kernel 5.8 and later). Software RSS is used as a fallback with vhost=off when eBPF can't be loaded or when hash population requested by the guest. Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com> Signed-off-by: Andrew Melnychenko <andrew@daynix.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/hw/virtio/virtio-net.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
index 7e96d193aa..824a69c23f 100644
--- a/include/hw/virtio/virtio-net.h
+++ b/include/hw/virtio/virtio-net.h
@@ -21,6 +21,8 @@
#include "qemu/option_int.h"
#include "qom/object.h"
+#include "ebpf/ebpf_rss.h"
+
#define TYPE_VIRTIO_NET "virtio-net-device"
OBJECT_DECLARE_SIMPLE_TYPE(VirtIONet, VIRTIO_NET)
@@ -130,6 +132,7 @@ typedef struct VirtioNetRscChain {
typedef struct VirtioNetRssData {
bool enabled;
+ bool enabled_software_rss;
bool redirect;
bool populate_hash;
uint32_t hash_types;
@@ -209,6 +212,7 @@ struct VirtIONet {
Notifier migration_state;
VirtioNetRssData rss_data;
struct NetRxPkt *rx_pkt;
+ struct EBPFRSSContext ebpf_rss;
};
void virtio_net_set_netclient_name(VirtIONet *n, const char *name,