Hi Song On Tue, Jun 27, 2017 at 10:05 PM, Y Song <ys114321@xxxxxxxxx> wrote: > xdp meta data is different: > > struct xdp_md { > __u32 data; > __u32 data_end; > }; > > All other fields available for skb metadata won't be available in XDP. > That is way > you get verification failure. > Thanks for the quick reply! Now I'm trying xdp1_kern.c which uses xdp_md. Now I'm getting the error: Note: 8 bytes struct bpf_elf_map fixup performed due to size mismatch! RTNETLINK answers: Operation not supported Could you please advise me what is wrong here? > On Tue, Jun 27, 2017 at 7:00 PM, MD I. Islam <tamim@xxxxxxxxxxx> wrote: >> Hi >> >> I'm using http://lingrok.org/xref/linux-net-next/samples/bpf/parse_simple.c. >> >> I can load the program as tc_cls using following commands: >> >> sudo tc qdisc add dev eno1 clsact >> sudo tc filter add dev eno1 ingress bpf da obj parse_simple.o sec simple >> >> But I get error when I load the same program in XDP: >> >> sudo ip link set dev eno1 xdp obj parse_simple.o section simple >> >> Prog section 'simple' rejected: Permission denied (13)! >> - Type: 6 >> - Instructions: 23 (0 over limit) >> - License: GPL >> >> Verifier analysis: >> >> 0: (b7) r0 = 0 >> 1: (61) r2 = *(u32 *)(r1 +80) >> invalid bpf_context access off=80 size=4 >> >> Error fetching program/map! >> >> I made sure that the parse_simple.o have necessary permission. Could >> you please advise what is wrong here? I'm using Kernel 4.11+. Does XDP >> need any specific kernel configuration enabled? clang and LLVM >> versions are as following: >> >> clang --version >> clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final) >> Target: x86_64-pc-linux-gnu >> >> llc --version >> LLVM (http://llvm.org/): >> LLVM version 3.8.0 >> >> Optimized build. >> Built Jul 9 2016 (11:22:59). >> Default target: x86_64-pc-linux-gnu >> Host CPU: haswell >> >> Registered Targets: >> aarch64 - AArch64 (little endian) >> aarch64_be - AArch64 (big endian) >> amdgcn - AMD GCN GPUs >> arm - ARM >> arm64 - ARM64 (little endian) >> armeb - ARM (big endian) >> bpf - BPF (host endian) >> bpfeb - BPF (big endian) >> bpfel - BPF (little endian) >> cpp - C++ backend >> hexagon - Hexagon >> mips - Mips >> mips64 - Mips64 [experimental] >> mips64el - Mips64el [experimental] >> mipsel - Mipsel >> msp430 - MSP430 [experimental] >> nvptx - NVIDIA PTX 32-bit >> nvptx64 - NVIDIA PTX 64-bit >> ppc32 - PowerPC 32 >> ppc64 - PowerPC 64 >> ppc64le - PowerPC 64 LE >> r600 - AMD GPUs HD2XXX-HD6XXX >> sparc - Sparc >> sparcel - Sparc LE >> sparcv9 - Sparc V9 >> systemz - SystemZ >> thumb - Thumb >> thumbeb - Thumb (big endian) >> x86 - 32-bit X86: Pentium-Pro and above >> x86-64 - 64-bit X86: EM64T and AMD64 >> xcore - XCore >> >> Many thanks >> Tamim Thanks Tamim