All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Toke Høiland-Jørgensen" <toke@redhat.com>
To: Benjamin Beckmeyer <beb@eks-engel.de>, xdp-newbies@vger.kernel.org
Subject: Re: static variable in xdp
Date: Sat, 19 Nov 2022 13:14:49 +0100	[thread overview]
Message-ID: <874juvxhs6.fsf@toke.dk> (raw)
In-Reply-To: <9b477561-0318-4c2a-e758-63fb4c3ec058@eks-engel.de>

Benjamin Beckmeyer <beb@eks-engel.de> writes:

> Hi all,
>
> I hope you could help me with a static variable problem in xdp.
> Here is my source:
>
> static __u32 last_xid = 0;
>
> static __always_inline int profinet_process_packet(struct xdp_md *ctx, __u64 off) {
>     void *data_end = (void *)(long)ctx->data_end;
>     void *data = (void *)(long)ctx->data;
>     struct profinet_hdr *p_hdr;
>     __u16 profinet_frame_id;
> //  static __u32 last_xid;
>
>     p_hdr = data + off;
>
>     if (p_hdr + 1 > data_end)
>         return XDP_DROP;
>
>     profinet_frame_id = bpf_htons(p_hdr->frame_id);
>
>     if ((profinet_frame_id >= 0x0100 && profinet_frame_id <=0x7fff) ||
>         (profinet_frame_id == 0x0020) ||
>         (profinet_frame_id == 0xbbff) ||
>         (profinet_frame_id == 0xfefc) ||
>         (profinet_frame_id == 0xf7ff))
>             return XDP_DROP;
>
>     if (p_hdr->xid == last_xid)
>         return XDP_DROP;
>     else
>         last_xid = p_hdr->xid;
>
>     return XDP_PASS;
> }
>
> At the moment I'm using kernel version 6.0.2 and iproute2-6.0.0.
> I also tried to load the the filter with xdp_loader (xdp_tools).
>
> Output from ip:
> $ ip link set dev eth0 xdpgeneric obj xdp_prog_kern.o sec
>  eks_filter
>
> Prog section 'eks_filter' rejected: Permission denied (13)!
>  - Type:         6
>  - Instructions: 48 (0 over limit)
>  - License:      GPL
>
> Verifier analysis:
>
> Error fetching program/map!
>
> Output from xdp_loader:
> $ ./xdp_loader -deth0 -A --filename xdp_prog_kern.o --pro
> gsec eks_filter
> libbpf: failed to guess program type based on ELF section name 'eks_filter'
> libbpf: supported section(type) names are: socket kprobe/ uprobe/ 
> kretprobe/ uretprobe/ classifier action tracepoint/ tp/ raw_tracepoint/ 
> raw_tp/ tp_btf/ xdp perf_event lwt_in lwt_out lwt_xmit lwt_seg6local 
> cgroup_skb/ingress cgroup_skb/egress cgroup/skb cgroup/sock 
> cgroup/post_bind4 cgroup/post_bind6 cgroup/dev sockops sk_skb/stream_parser 
> sk_skb/stream_verdict sk_skb sk_msg lirc_mode2 flow_dissector cgroup/bind4 
> cgroup/bind6 cgroup/connect4 cgroup/connect6 cgroup/sendmsg4 
> cgroup/sendmsg6 cgroup/recvmsg4 cgroup/recvmsg6 cgroup/sysctl 
> cgroup/getsockopt cgroup/setsockopt
> Success: Loaded BPF-object(xdp_prog_kern.o) and used section(eks_filter)
>  - XDP prog attached on device:eth0(ifindex:2)
>  - Pinning maps in /sys/fs/bpf/eth0/
> libbpf: failed to pin map: Operation not permitted
> ERR: pinning maps

This does not look like the output of the xdp-loader from xdp-tools; are
you using the code from the xdp-tutorial? Try using the one from
xdp-tools instead...

Also, there's a hint here:

> libbpf: failed to guess program type based on ELF section name 'eks_filter'

You should use SEC("xdp") for XDP programs instead of custom section
names, those are deprecated...

-Toke


  reply	other threads:[~2022-11-19 12:15 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-19  9:44 static variable in xdp Benjamin Beckmeyer
2022-11-19 12:14 ` Toke Høiland-Jørgensen [this message]
2022-11-19 17:46   ` Benjamin Beckmeyer
2022-11-19 23:58     ` Toke Høiland-Jørgensen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874juvxhs6.fsf@toke.dk \
    --to=toke@redhat.com \
    --cc=beb@eks-engel.de \
    --cc=xdp-newbies@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.