Hi Jesper On Wed, Jun 28, 2017 at 4:26 PM, Jesper Dangaard Brouer <brouer@xxxxxxxxxx> wrote: > > On Tue, 27 Jun 2017 22:32:26 -0400 "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 >> >> Could you please advise me what is wrong here? > > The xdp1_kern.c bpf program expect to be loaded with the tool > xdp1_user.c (compiled to executable xdp1) which uses the bpf-elf loader > located in the kernel/samples/bpf/ directory. > > You are trying to load this xdp1_kern.c program with the TC utility, > which have it's own bpf-elf loader. These two loaders are not expected > to be compatible... specifically struct bpf_elf_map are different. > Thanks for pointing that out! I will use xdp1 executable to load the BPF program. Currently my development machine doesn't have a XDP compatible NIC. Is there a virtual NIC that I can use to prototype XDP? > > p.s. I'm maintaining some bpf samples here: > https://github.com/netoptimizer/prototype-kernel/tree/master/kernel/samples/bpf > > --Jesper > >> > 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 > > > > -- > Best regards, > Jesper Dangaard Brouer > MSc.CS, Principal Kernel Engineer at Red Hat > LinkedIn: http://www.linkedin.com/in/brouer Many thanks Tamim