| # -*- Mode: Python -*- | |
| # vim: filetype=python | |
| # | |
| # This work is licensed under the terms of the GNU GPL, version 2 or later. | |
| # See the COPYING file in the top-level directory. | |
| ## | |
| # ************ | |
| # eBPF Objects | |
| # ************ | |
| # | |
| # eBPF object is an ELF binary that contains the eBPF program and eBPF | |
| # map description(BTF). Overall, eBPF object should contain the | |
| # program and enough metadata to create/load eBPF with libbpf. As the | |
| # eBPF maps/program should correspond to QEMU, the eBPF can't be used | |
| # from different QEMU build. | |
| # | |
| # Currently, there is a possible eBPF for receive-side scaling (RSS). | |
| ## | |
| ## | |
| # @EbpfObject: | |
| # An eBPF ELF object. | |
| # | |
| # @object: the eBPF object encoded in base64 | |
| # | |
| # Since: 9.0 | |
| ## | |
| { 'struct': 'EbpfObject', | |
| 'data': {'object': 'str'}, | |
| 'if': 'CONFIG_EBPF' } | |
| ## | |
| # @EbpfProgramID: | |
| # The eBPF programs that can be gotten with `request-ebpf`. | |
| # | |
| # @rss: Receive side scaling, technology that allows steering traffic | |
| # between queues by calculation hash. Users may set up | |
| # indirection table and hash/packet types configurations. Used | |
| # with virtio-net. | |
| # | |
| # Since: 9.0 | |
| ## | |
| { 'enum': 'EbpfProgramID', | |
| 'if': 'CONFIG_EBPF', | |
| 'data': [ { 'name': 'rss' } ] } | |
| ## | |
| # @request-ebpf: | |
| # Retrieve an eBPF object that can be loaded with libbpf. | |
| # Management applications (e.g. libvirt) may load it and pass file | |
| # descriptors to QEMU, so they can run running QEMU without BPF | |
| # capabilities. | |
| # | |
| # @id: The ID of the program to return. | |
| # | |
| # Returns: eBPF object encoded in base64. | |
| # | |
| # Since: 9.0 | |
| ## | |
| { 'command': 'request-ebpf', | |
| 'data': { 'id': 'EbpfProgramID' }, | |
| 'returns': 'EbpfObject', | |
| 'if': 'CONFIG_EBPF' } |