master
json 66 lines 1.61 KB
Raw
1 # -*- Mode: Python -*-
2 # vim: filetype=python
3 #
4 # This work is licensed under the terms of the GNU GPL, version 2 or later.
5 # See the COPYING file in the top-level directory.
6
7 ##
8 # ************
9 # eBPF Objects
10 # ************
11 #
12 # eBPF object is an ELF binary that contains the eBPF program and eBPF
13 # map description(BTF). Overall, eBPF object should contain the
14 # program and enough metadata to create/load eBPF with libbpf. As the
15 # eBPF maps/program should correspond to QEMU, the eBPF can't be used
16 # from different QEMU build.
17 #
18 # Currently, there is a possible eBPF for receive-side scaling (RSS).
19 ##
20
21 ##
22 # @EbpfObject:
23 #
24 # An eBPF ELF object.
25 #
26 # @object: the eBPF object encoded in base64
27 #
28 # Since: 9.0
29 ##
30 { 'struct': 'EbpfObject',
31 'data': {'object': 'str'},
32 'if': 'CONFIG_EBPF' }
33
34 ##
35 # @EbpfProgramID:
36 #
37 # The eBPF programs that can be gotten with `request-ebpf`.
38 #
39 # @rss: Receive side scaling, technology that allows steering traffic
40 # between queues by calculation hash. Users may set up
41 # indirection table and hash/packet types configurations. Used
42 # with virtio-net.
43 #
44 # Since: 9.0
45 ##
46 { 'enum': 'EbpfProgramID',
47 'if': 'CONFIG_EBPF',
48 'data': [ { 'name': 'rss' } ] }
49
50 ##
51 # @request-ebpf:
52 #
53 # Retrieve an eBPF object that can be loaded with libbpf. Management
54 # applications (e.g. libvirt) may load it and pass file descriptors to
55 # QEMU, so they can run running QEMU without BPF capabilities.
56 #
57 # @id: The ID of the program to return.
58 #
59 # Returns: eBPF object encoded in base64.
60 #
61 # Since: 9.0
62 ##
63 { 'command': 'request-ebpf',
64 'data': { 'id': 'EbpfProgramID' },
65 'returns': 'EbpfObject',
66 'if': 'CONFIG_EBPF' }