Existing TUN module is able to use provided "steering eBPF" to calculate per-packet hash and derive the destination queue to place the packet to. The eBPF uses mapped configuration data containing a key for hash calculation and indirection table with array of queues' indices. This series of patches adds support for virtio-net hash reporting feature as defined in virtio specification. It extends the TUN module and the "steering eBPF" as follows: Extended steering eBPF calculates the hash value and hash type, keeps hash value in the skb->hash and returns index of destination virtqueue and the type of the hash. TUN module keeps returned hash type in (currently unused) field of the skb. skb->__unused renamed to 'hash_report_type'. When TUN module is called later to allocate and fill the virtio-net header and push it to destination virtqueue it populates the hash and the hash type into virtio-net header. VHOST driver is made aware of respective virtio-net feature that extends the virtio-net header to report the hash value and hash report type. Yuri Benditovich (7): skbuff: define field for hash report type vhost: support for hash report virtio-net feature tun: allow use of BPF_PROG_TYPE_SCHED_CLS program type tun: free bpf_program by bpf_prog_put instead of bpf_prog_destroy tun: add ioctl code TUNSETHASHPOPULATION tun: populate hash in virtio-net header when needed tun: report new tun feature IFF_HASH drivers/net/tun.c | 43 +++++++++++++++++++++++++++++++------ drivers/vhost/net.c | 37 ++++++++++++++++++++++++------- include/linux/skbuff.h | 7 +++++- include/uapi/linux/if_tun.h | 2 ++ 4 files changed, 74 insertions(+), 15 deletions(-) -- 2.17.1