On Tue, Jun 27, 2017 at 7:32 PM, MD I. Islam <tamim@xxxxxxxxxxx> wrote: > 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 I do not know what "Note: 8 bytes ..." error means, I did not find a similar error message pattern in latest net-next. For RTNETLINK error, most like the networking interface you tried to attach does not support XDP. It needs to a physical device or a generic device, based on options. Check the user space program and you can find various options. > > 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