# -*- 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 (g.e. 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' }
