I've uploaded the object file to https://drive.google.com/file/d/0B-lMs4mJOgQBU090ZzNtSkVnMTQ/view?usp=sharing uname -a output: Linux localhost.localdomain 4.12.8-300.fc26.x86_64 #1 SMP Thu Aug 17 15:30:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux ip -V output: ip utility, iproute2-ss170501 I tried with latest iproute2 built from source (ip -V output: ip utility, iproute2-ss170705) and am still having the same issue. (I also first noticed this with a custom loader I wrote, so I think the loader can probably be ruled out.) sysctl -a 2> /dev/null | grep bpf output: kernel.unprivileged_bpf_disabled = 0 net.core.bpf_jit_enable = 0 net.core.bpf_jit_harden = 0 net.core.bpf_jit_kallsyms = 0 Thanks for helping look into this! Let me know if you need any more info. --Zvi On Tue, Aug 29, 2017 at 4:17 PM, Daniel Borkmann <daniel@xxxxxxxxxxxxx> wrote: > On 08/29/2017 11:56 PM, Y Song wrote: >> >> I tried the test with the following: >> . fc25 env but booted with latest net-next kernel (my developer env) >> . clang/llvm 5.0 (build from source) >> . latest iproute2 (build from source) >> and it works fine. >> >> I suggest you migrate to the latest (or above) environment and it should >> work. >> Otherwise, you could bisect and debug to see which component may have >> issues. >> >> On Mon, Aug 28, 2017 at 10:53 PM, Zvi Effron <zeffron@xxxxxxxxxxxxx> >> wrote: >>> >>> Generic XDP driver was introduced in the 4.12 kernel. >>> >>> https://kernelnewbies.org/Linux_4.12#head-9f96b5e8262772d5e1908bf335fd25f4c3eec15a >>> If you run dnf update, it should pull down the 4.12 kernel on Fedora 26. >>> >>> --Zvi >>> >>> On Mon, Aug 28, 2017 at 10:39 PM, Y Song <ys114321@xxxxxxxxx> wrote: >>>> >>>> I tried on my FC26 VM. I actually got permission denied. >>>> I tried to attach the main interface enp0s3 (acting as eth0). >>>> >>>> The kernel is 4.11. I think generic xdp support is not there. >>>> Otherwise people can confirm? >>>> The VM interface enp0s3 (or eth0) may not have driver support for XDP. >>>> >>>> On Mon, Aug 28, 2017 at 3:12 PM, Zvi Effron <zeffron@xxxxxxxxxxxxx> >>>> wrote: >>>>> >>>>> Full reproduction instructions: >>>>> >>>>> 1) Install Fedora 26 server. I chose all of the default options, >>>>> except I chose to install latest packages from the network. Otherwise, >>>>> just run a dnf update after install. I installed into a VM running on >>>>> HyperV >>>>> 2) Install clang, llvm, and kernel-devel: >>>>> dnf install -y clang llvm kernel-devel >>>>> 3) Copy the program to xdp_test_kern.c >>>>> 4) Compile the program into an elf object file: >>>>> clang -S -O2 -Wall -Werror -nostdinc -isystem $(clang >>>>> -print-file-name=include) -I /lib/modules/$(uname >>>>> -r)/build/arch/x86/include -I /lib/modules/$(uname >>>>> -r)/build/arch/x86/include/generated/uapi -I /lib/modules/$(uname >>>>> -r)/build/arch/x86/include/generated -I /lib/modules/$(uname >>>>> -r)/build/include -I /lib/modules/$(uname >>>>> -r)/build/arch/x86/include/uapi -I /lib/modules/$(uname >>>>> -r)/build/include/uapi -I /lib/modules/$(uname >>>>> -r)/build/include/generated/uapi -include /lib/modules/$(uname >>>>> -r)/build/include/linux/kconfig.h -D __KERNEL__ -c -emit-llvm -o >>>>> xdp_test_kern.ll xdp_test_kern.c >>>>> llc -march bpf -filetype obj -o xdp_test_kern.o xdp_test_kern.ll >>>>> 5) Attach the program to eth0: >>>>> ip link set dev eth0 xdp object xdp_test_kern.o section .text >>>>> verbose >>>>> 6) Notice only 0s being printed for data in >>>>> /sys/kernel/debug/tracing/trace_pipe >>>>> >>>>> As near as I can tell, the driver being used for eth0 is hv_netvsc, in >>>>> case it's an issue with the driver. > > > Any chance you could provide the object file itself that was used > for loading? > > So it's basically 4.12 kernel with generic XDP on that driver as > you mentioned, right (must be given hv_netvsc doesn't have native > XDP ...)? Which stable version of that kernel do you use (uname -a) > and which iproute2 version (ip -V)? > > Can you reproduce it with a latest iproute2 version from the git > tree, so we can rule out the loader? > > What's the output of: sysctl -a 2> /dev/null | grep bpf > > Thanks