/* * eBPF RSS header * * Developed by Daynix Computing LTD (http://www.daynix.com) * * Authors: * Andrew Melnychenko * Yuri Benditovich * * This work is licensed under the terms of the GNU GPL, version 2. See * the COPYING file in the top-level directory. */ #ifndef QEMU_EBPF_RSS_H #define QEMU_EBPF_RSS_H #include "qapi/error.h" #define EBPF_RSS_MAX_FDS 4 struct EBPFRSSContext { void *obj; int program_fd; int map_configuration; int map_toeplitz_key; int map_indirections_table; /* mapped eBPF maps for direct access to omit bpf_map_update_elem() */ void *mmap_configuration; void *mmap_toeplitz_key; void *mmap_indirections_table; }; struct EBPFRSSConfig { uint8_t redirect; uint8_t populate_hash; uint32_t hash_types; uint16_t indirections_len; uint16_t default_queue; } __attribute__((packed)); void ebpf_rss_init(struct EBPFRSSContext *ctx); bool ebpf_rss_is_loaded(struct EBPFRSSContext *ctx); bool ebpf_rss_load(struct EBPFRSSContext *ctx, Error **errp); bool ebpf_rss_load_fds(struct EBPFRSSContext *ctx, int program_fd, int config_fd, int toeplitz_fd, int table_fd, Error **errp); bool ebpf_rss_set_all(struct EBPFRSSContext *ctx, struct EBPFRSSConfig *config, uint16_t *indirections_table, uint8_t *toeplitz_key, Error **errp); void ebpf_rss_unload(struct EBPFRSSContext *ctx); #endif /* QEMU_EBPF_RSS_H */