since v1:
* refactored virtio-net
* moved hunks for ebpf mmap()
* added qmp enum for eBPF id.
Andrew Melnychenko (5):
ebpf: Added eBPF map update through mmap.
ebpf: Added eBPF initialization by fds.
virtio-net: Added property to load eBPF RSS with fds.
qmp: Added new command to retrieve
g QEMU. Overall, requesting the eBPF object from
QEMU itself solves possible failures with acceptable effort.
Links:
[PATCH 3/5] qmp: Added the helper stamp check.
https://lore.kernel.org/all/20230219162100.174318-4-and...@daynix.com/
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss.c | 117
It allows using file descriptors of eBPF provided
outside of QEMU.
QEMU may be run without capabilities for eBPF and run
RSS program provided by management tool(g.e. libvirt).
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 ++
ebpf/ebpf_rss.c | 27
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 55
Updated section name, so libbpf should init/gues proper
program type without specifications during open/load.
Also, added map_flags with explicitly declared BPF_F_MMAPABLE.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1460 ---
tools/ebpf
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss.c | 117
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 54
- some TCP/UDP packets
may be considered fragmented if DF flag is set.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1343 ---
meson.build | 10 +-
tools/ebpf/rss.bpf.c|7 +-
3 files changed, 687 insertions(+), 673
virtio-net
Changes since v1:
* refactored virtio-net
* moved hunks for ebpf mmap()
* added qmp enum for eBPF id.
Andrew Melnychenko (5):
ebpf: Added eBPF map update through mmap.
ebpf: Added eBPF initialization by fds.
virtio-net: Added property to load eBPF RSS with fds.
qmp: Added new
It allows using file descriptors of eBPF provided
outside of QEMU.
QEMU may be run without capabilities for eBPF and run
RSS program provided by management tool(g.e. libvirt).
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 ++
ebpf/ebpf_rss.c | 27
g QEMU. Overall, requesting the eBPF object from
QEMU itself solves possible failures with acceptable effort.
Links:
[PATCH 3/5] qmp: Added the helper stamp check.
https://lore.kernel.org/all/20230219162100.174318-4-and...@daynix.com/
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c
There was an issue with Qemu build with "--disable-system".
The traces could be generated and the build fails.
The traces were 'cut out' for previous patches, and overall,
the 'system' source set should be used like in pre-'eBPF blob' patches.
Sign
There was an issue with Qemu build with "--disable-system".
The traces could be generated and the build fails.
The traces were 'cut out' for previous patches, and overall,
the 'system' source set should be used like in pre-'eBPF blob' patches.
Sign
.
* Libvirt requests eBPF blob through QMP.
* Libvirt loads blob for virtio-net.
* Libvirt launches the QEMU with eBPF fds passed.
Andrew Melnychenko (4):
ebpf: Added eBPF initialization by fds and map update.
virtio-net: Added property to load eBPF RSS with fds.
ebpf: Added declaration
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 +++
ebpf/ebpf_rss.c | 120
Added command "request-ebpf". This command returns
eBPF program encoded base64. The program taken from the
skeleton and essentially is an ELF object that can be
loaded in the future with libbpf.
Signed-off-by: Andrew Melnychenko
---
monitor/qmp-cmds.c | 17 +
qapi
Updated section name, so libbpf should init/gues proper
program type without specifications during open/load.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1469 ---
tools/ebpf/rss.bpf.c|2 +-
2 files changed, 741 insertions(+), 730
Now, the binary objects may be retrieved by id/name.
It would require for future qmp commands that may require specific
eBPF blob.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c | 48
ebpf/ebpf.h | 25 +
ebpf
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 77
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 55
It allows using file descriptors of eBPF provided
outside of QEMU.
QEMU may be run without capabilities for eBPF and run
RSS program provided by management tool(g.e. libvirt).
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 ++
ebpf/ebpf_rss.c | 27
Added command "request-ebpf". This command returns
eBPF program encoded base64. The program taken from the
skeleton and essentially is an ELF object that can be
loaded in the future with libbpf.
Signed-off-by: Andrew Melnychenko
---
monitor/qmp-cmds.c | 16
qapi
through mmap()
call, so it should not require additional capabilities to bpf* calls.
eBPF file descriptors can be passed to QEMU from parent process or by unix
socket with sendfd() qmp command.
Changes since v1:
* refactored code.
* eBPF program ids implemented as enums
Andrew Melnychenko (6):
ebpf
Now, the binary objects may be retrieved by id.
It would require for future qmp commands that may require specific
eBPF blob.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c | 54
ebpf/ebpf.h | 31 +++
ebpf
Updated section name, so libbpf should init/gues proper
program type without specifications during open/load.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1469 ---
tools/ebpf/rss.bpf.c|2 +-
2 files changed, 741 insertions(+), 730
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss.c | 117
)
Andrew Melnychenko (5):
ebpf: Added eBPF initialization by fds and map update.
virtio-net: Added property to load eBPF RSS with fds.
ebpf: Added declaration/initialization routines.
qmp: Added new command to retrieve eBPF blob.
ebpf: Updated eBPF program and skeleton.
ebpf/ebpf.c
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 96
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 +++
ebpf/ebpf_rss.c | 120
Updated section name, so libbpf should init/gues proper
program type without specifications during open/load.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1469 ---
tools/ebpf/rss.bpf.c|2 +-
2 files changed, 741 insertions(+), 730
Added command "request-ebpf". This command returns
eBPF program encoded base64. The program taken from the
skeleton and essentially is an ELF object that can be
loaded in the future with libbpf.
Signed-off-by: Andrew Melnychenko
---
monitor/qmp-cmds.c | 16
qapi
Now, the binary objects may be retrieved by id/name.
It would require for future qmp commands that may require specific
eBPF blob.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c | 54
ebpf/ebpf.h | 31
Added a function to check the stamp in the helper.
eBPF helper should have a special symbol that generates during the build.
QEMU checks the helper and determines that it fits, so the helper
will produce proper output.
Signed-off-by: Andrew Melnychenko
---
meson.build
no reason yet to build eBPF loader and helper for non-Linux systems,
even if libbpf is present.
Signed-off-by: Andrew Melnychenko
---
ebpf/qemu-ebpf-rss-helper.c | 132
meson.build | 37 ++
2 files changed, 156 insertions(+), 13
refactored helper.
Andrew Melnychenko (5):
ebpf: Added eBPF initialization by fds and map update.
virtio-net: Added property to load eBPF RSS with fds.
qmp: Added the helper stamp check.
ebpf_rss_helper: Added helper for eBPF RSS.
qmp: Added find-ebpf-rss-helper command.
ebpf/ebpf_
eck the stamp of the helper to make sure
that eBPF program is valid.
Signed-off-by: Andrew Melnychenko
---
monitor/qmp-cmds.c | 28
qapi/misc.json | 42 ++
2 files changed, 70 insertions(+)
diff --git a/monitor/qmp-cmds.c
libvirt.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 +++
ebpf/ebpf_rss.c | 120 ++-
ebpf/ebpf_rss.h | 10
3 files changed, 113 insertions(+), 23 deletions(-)
diff --git a/ebpf/ebpf_rss-stub.c b/ebpf/ebpf_rss-stub.c
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 77
g QEMU. Overall, requesting the eBPF object from
QEMU itself solves possible failures with acceptable effort.
Links:
[PATCH 3/5] qmp: Added the helper stamp check.
https://lore.kernel.org/all/20230219162100.174318-4-and...@daynix.com/
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 63
- some TCP/UDP packets
may be considered fragmented if DF flag is set.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1343 ---
meson.build | 10 +-
tools/ebpf/rss.bpf.c|7 +-
3 files changed, 687 insertions(+), 673
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss.c | 120
red virtio-net
* moved hunks for ebpf mmap()
* added qmp enum for eBPF id.
Andrew Melnychenko (5):
ebpf: Added eBPF map update through mmap.
ebpf: Added eBPF initialization by fds.
virtio-net: Added property to load eBPF RSS with fds.
qmp: Added new command to retrieve eBPF blob.
ebp
It allows using file descriptors of eBPF provided
outside of QEMU.
QEMU may be run without capabilities for eBPF and run
RSS program provided by management tool(g.e. libvirt).
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 9 +++--
ebpf/ebpf_rss.c | 27
command
* refactored virtio-net
Changes since v1:
* refactored virtio-net
* moved hunks for ebpf mmap()
* added qmp enum for eBPF id.
Andrew Melnychenko (5):
ebpf: Added eBPF map update through mmap.
ebpf: Added eBPF initialization by fds.
virtio-net: Added property to load eBPF RSS
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 55
It allows using file descriptors of eBPF provided
outside of QEMU.
QEMU may be run without capabilities for eBPF and run
RSS program provided by management tool(g.e. libvirt).
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 ++
ebpf/ebpf_rss.c | 27
g QEMU. Overall, requesting the eBPF object from
QEMU itself solves possible failures with acceptable effort.
Links:
[PATCH 3/5] qmp: Added the helper stamp check.
https://lore.kernel.org/all/20230219162100.174318-4-and...@daynix.com/
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c
Updated section name, so libbpf should init/gues proper
program type without specifications during open/load.
Also, added map_flags with explicitly declared BPF_F_MMAPABLE.
Which would require kernel 5.5+.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1460
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss.c | 117
eBPF id.
Andrew Melnychenko (6):
ebpf: Added eBPF map update through mmap.
ebpf: Added eBPF initialization by fds.
virtio-net: Added property to load eBPF RSS with fds.
ebpf: Added declaration/initialization routines.
qmp: Added new command to retrieve eBPF blob.
ebpf: Updated eBPF
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 55
Updated section name, so libbpf should init/gues proper
program type without specifications during open/load.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1469 ---
tools/ebpf/rss.bpf.c|2 +-
2 files changed, 741 insertions(+), 730
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss.c | 117
It allows using file descriptors of eBPF provided
outside of QEMU.
QEMU may be run without capabilities for eBPF and run
RSS program provided by management tool(g.e. libvirt).
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 ++
ebpf/ebpf_rss.c | 27
Now, the binary objects may be retrieved by id.
It would require for future qmp commands that may require specific
eBPF blob.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c | 70
ebpf/ebpf.h | 31 +
ebpf
g the eBPF object from
QEMU itself solves possible failures with very little effort.
Links:
[PATCH 3/5] qmp: Added the helper stamp check.
https://lore.kernel.org/all/20230219162100.174318-4-and...@daynix.com/
Signed-off-by: Andrew Melnychenko
---
qapi/ebpf.json
)
Changes since v2:
* moved/refactored QMP command
* refactored virtio-net
Changes since v1:
* refactored virtio-net
* moved hunks for ebpf mmap()
* added qmp enum for eBPF id.
Andrew Melnychenko (6):
ebpf: Added eBPF map update through mmap.
ebpf: Added eBPF initialization by fds.
virtio-net
Added command "request-ebpf". This command returns
eBPF program encoded base64. The program taken from the
skeleton and essentially is an ELF object that can be
loaded in the future with libbpf.
Signed-off-by: Andrew Melnychenko
---
qapi/ebpf.json
Updated section name, so libbpf should init/gues proper
program type without specifications during open/load.
Signed-off-by: Andrew Melnychenko
---
ebpf/rss.bpf.skeleton.h | 1469 ---
tools/ebpf/rss.bpf.c|2 +-
2 files changed, 741 insertions(+), 730
Now, the binary objects may be retrieved by id.
It would require for future qmp commands that may require specific
eBPF blob.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c | 70
ebpf/ebpf.h | 31 +
ebpf
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss.c | 117
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 55
It allows using file descriptors of eBPF provided
outside of QEMU.
QEMU may be run without capabilities for eBPF and run
RSS program provided by management tool(g.e. libvirt).
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 ++
ebpf/ebpf_rss.c | 27
g QEMU. Overall, requesting the eBPF object from
QEMU itself solves possible failures with acceptable effort.
Links:
[PATCH 3/5] qmp: Added the helper stamp check.
https://lore.kernel.org/all/20230219162100.174318-4-and...@daynix.com/
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf.c
Changed eBPF map updates through mmaped array.
Mmaped arrays provide direct access to map data.
It should omit using bpf_map_update_elem() call,
which may require capabilities that are not present.
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss.c | 117
the build if bpf disabled
* rebased to the last master
* refactored according to review
Changes since v2:
* moved/refactored QMP command
* refactored virtio-net
Changes since v1:
* refactored virtio-net
* moved hunks for ebpf mmap()
* added qmp enum for eBPF id.
Andrew Melnychenko (5
It allows using file descriptors of eBPF provided
outside of QEMU.
QEMU may be run without capabilities for eBPF and run
RSS program provided by management tool(g.e. libvirt).
Signed-off-by: Andrew Melnychenko
---
ebpf/ebpf_rss-stub.c | 6 ++
ebpf/ebpf_rss.c | 27
eBPF RSS program and maps may now be passed during initialization.
Initially was implemented for libvirt to launch qemu without permissions,
and initialized eBPF program through the helper.
Signed-off-by: Andrew Melnychenko
---
hw/net/virtio-net.c| 55
Updated section name, so libbpf should init/gues proper
program type without specifications during open/load.
Also, added map_flags with explicitly declared BPF_F_MMAPABLE.
Added check for BPF_F_MMAPABLE flag to meson script and
requirements to libbpf version.
Signed-off-by: Andrew Melnychenko
From: Andrew
Additional code that will be used for eBPF setting steering routine.
Signed-off-by: Andrew Melnychenko
---
net/tap-linux.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/tap-linux.h b/net/tap-linux.h
index 2f36d100fc..1d06fe0de6 100644
--- a/net/tap-linux.h
+++ b/net/tap
enditovich
Signed-off-by: Andrew Melnychenko
---
tools/ebpf/Makefile.ebpf | 22 ++
tools/ebpf/rss.bpf.c | 552 +++
2 files changed, 574 insertions(+)
create mode 100755 tools/ebpf/Makefile.ebpf
create mode 100644 tools/ebpf/rss.bpf.c
diff --git a/
hash population requested by the guest.
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
hw/net/vhost_net.c | 3 +
hw/net/virtio-net.c| 115 -
include/hw/virtio/virtio-net.h | 4 ++
net/vhost-vdpa.c
From: Andrew
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
MAINTAINERS | 8
1 file changed, 8 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 5e4be6b667..0f74778ed7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3304,6 +3304,14 @@ F: include/hw
This set of patches introduces the usage of eBPF for packet steering
and RSS hash calculation:
* RSS(Receive Side Scaling) is used to distribute network packets to
guest virtqueues by calculating packet hash
* Additionally adding support for the usage of RSS with vhost
The eBPF works on kernels 5.
From: Andrew
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
docs/devel/ebpf_rss.rst | 125
docs/devel/index.rst| 1 +
2 files changed, 126 insertions(+)
create mode 100644 docs/devel/ebpf_rss.rst
diff --git a/docs/devel
From: Andrew
For now, that method supported only by Linux TAP.
Linux TAP uses TUNSETSTEERINGEBPF ioctl.
Signed-off-by: Andrew Melnychenko
---
include/net/net.h | 2 ++
net/tap-bsd.c | 5 +
net/tap-linux.c | 13 +
net/tap-solaris.c | 5 +
net/tap-stub.c| 5
: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
configure | 8 +-
ebpf/ebpf_rss-stub.c| 40
ebpf/ebpf_rss.c | 165
ebpf/ebpf_rss.h | 44 +
ebpf/meson.build| 1 +
ebpf/rss.bpf.skeleton.h | 423
ebian, libbpf is pressent but doesn't
resolved as dependency by meson(may be pkg-config issues?).
On those systems qemu will be build without eBPF RSS steering.
The patch privedes changes for containers that able to build qemu
with libbpf: Alpine, Centos8 and Fedora.
Andrew Melnychenko (1):
Ad
The series of patches for eBPF RSS adds libbpf dependency for qemu.
https://lists.gnu.org/archive/html/qemu-devel/2021-03/msg08887.html
With this patch, libbpf added:
Alpine - added libbpf-dev
Centos 8 - added libbpf-devel
Fedora - added libbpf-devel
Signed-off-by: Andrew Melnychenko
From: Andrew
Additional code that will be used for eBPF setting steering routine.
Signed-off-by: Andrew Melnychenko
---
net/tap-linux.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/tap-linux.h b/net/tap-linux.h
index 2f36d100fc..1d06fe0de6 100644
--- a/net/tap-linux.h
+++ b/net/tap
This set of patches introduces the usage of eBPF for packet steering
and RSS hash calculation:
* RSS(Receive Side Scaling) is used to distribute network packets to
guest virtqueues by calculating packet hash
* Additionally adding support for the usage of RSS with vhost
The eBPF works on kernels 5.
From: Andrew
For now, that method supported only by Linux TAP.
Linux TAP uses TUNSETSTEERINGEBPF ioctl.
Signed-off-by: Andrew Melnychenko
---
include/net/net.h | 2 ++
net/tap-bsd.c | 5 +
net/tap-linux.c | 13 +
net/tap-solaris.c | 5 +
net/tap-stub.c| 5
hash population requested by the guest.
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
hw/net/vhost_net.c | 3 +
hw/net/virtio-net.c| 115 -
include/hw/virtio/virtio-net.h | 4 ++
net/vhost-vdpa.c
From: Andrew
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
docs/devel/ebpf_rss.rst | 125
docs/devel/index.rst| 1 +
2 files changed, 126 insertions(+)
create mode 100644 docs/devel/ebpf_rss.rst
diff --git a/docs/devel
: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
configure | 8 +-
ebpf/ebpf_rss-stub.c| 40
ebpf/ebpf_rss.c | 165 +++
ebpf/ebpf_rss.h | 44
ebpf/meson.build| 1 +
ebpf/rss.bpf.skeleton.h | 431
enditovich
Signed-off-by: Andrew Melnychenko
---
tools/ebpf/Makefile.ebpf | 22 ++
tools/ebpf/rss.bpf.c | 569 +++
2 files changed, 591 insertions(+)
create mode 100755 tools/ebpf/Makefile.ebpf
create mode 100644 tools/ebpf/rss.bpf.c
diff --git a/
From: Andrew
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
MAINTAINERS | 8
1 file changed, 8 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 58f342108e..e05a9fd9f6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3311,6 +3311,14 @@ F: include/hw
parsing in the eBPF program.
* added fragment packet parsing to skip L4.
Changes since v6:
* Added eBPF skeleton check to the meson.build file.
Changes since v7:
* Refactored code style and fixed warnings.
* Added explicit pkg-config method for libbpf dependency.
Andrew Melnychenko (7):
net/tap
Additional code that will be used for eBPF setting steering routine.
Signed-off-by: Andrew Melnychenko
---
net/tap-linux.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/tap-linux.h b/net/tap-linux.h
index 2f36d100fc..1d06fe0de6 100644
--- a/net/tap-linux.h
+++ b/net/tap-linux.h
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
docs/devel/ebpf_rss.rst | 125
docs/devel/index.rst| 1 +
2 files changed, 126 insertions(+)
create mode 100644 docs/devel/ebpf_rss.rst
diff --git a/docs/devel/ebpf_rss.rst b
For now, that method supported only by Linux TAP.
Linux TAP uses TUNSETSTEERINGEBPF ioctl.
Signed-off-by: Andrew Melnychenko
---
include/net/net.h | 2 ++
net/tap-bsd.c | 5 +
net/tap-linux.c | 13 +
net/tap-solaris.c | 5 +
net/tap-stub.c| 5 +
net/tap.c
ned-off-by: Andrew Melnychenko
---
tools/ebpf/Makefile.ebpf | 22 ++
tools/ebpf/rss.bpf.c | 571 +++
2 files changed, 593 insertions(+)
create mode 100755 tools/ebpf/Makefile.ebpf
create mode 100644 tools/ebpf/rss.bpf.c
diff --git a/tools/ebpf/Makefile.ebpf b/
ation requested by the guest.
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
hw/net/vhost_net.c | 3 +
hw/net/virtio-net.c| 116 -
include/hw/virtio/virtio-net.h | 4 ++
net/vhost-vdpa.c | 2 +
4 files ch
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
MAINTAINERS | 8
1 file changed, 8 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 36055f14c5..c7e9a57cd9 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3312,6 +3312,14 @@ F: include/hw/remote/proxy
Signed-off-by: Andrew Melnychenko
---
configure | 8 +-
ebpf/ebpf_rss-stub.c| 40
ebpf/ebpf_rss.c | 165 +++
ebpf/ebpf_rss.h | 44
ebpf/meson.build| 1 +
ebpf/rss.bpf.skeleton.h | 431
Additional code that will be used for eBPF setting steering routine.
Signed-off-by: Andrew Melnychenko
---
net/tap-linux.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/tap-linux.h b/net/tap-linux.h
index 2f36d100fc..1d06fe0de6 100644
--- a/net/tap-linux.h
+++ b/net/tap-linux.h
This set of patches introduces the usage of eBPF for packet steering
and RSS hash calculation:
* RSS(Receive Side Scaling) is used to distribute network packets to
guest virtqueues by calculating packet hash
* Additionally adding support for the usage of RSS with vhost
The eBPF works on kernels 5.
ation requested by the guest.
Signed-off-by: Yuri Benditovich
Signed-off-by: Andrew Melnychenko
---
hw/net/vhost_net.c | 3 +
hw/net/virtio-net.c| 115 -
include/hw/virtio/virtio-net.h | 4 ++
net/vhost-vdpa.c | 2 +
4 files ch
1 - 100 of 153 matches
Mail list logo