b90db74bf18958d40406bcf5307063a0bf77cd0f
[compat-rdma/compat.git] / include / linux / bpf.h
1 #ifndef _COMPAT_LINUX_BPF_H
2 #define _COMPAT_LINUX_BPF_H
3
4 #include "../../compat/config.h"
5
6 #ifdef HAVE_LINUX_BPF_H
7 #include_next <linux/bpf.h>
8
9 #ifndef HAVE_BPF_PROG_INC_EXPORTED
10 #define bpf_prog_inc LINUX_BACKPORT(bpf_prog_inc)
11 static inline struct bpf_prog *bpf_prog_inc(struct bpf_prog *prog)
12 {
13         return bpf_prog_add(prog, 1);
14 }
15 #endif
16
17 #ifndef HAVE_BPF_PROG_SUB
18 #include <linux/filter.h>
19 static inline void bpf_prog_sub(struct bpf_prog *prog, int i)
20 {
21         /* Only to be used for undoing previous bpf_prog_add() in some
22          * error path. We still know that another entity in our call
23          * path holds a reference to the program, thus atomic_sub() can
24          * be safely used in such cases!
25          */
26         WARN_ON(atomic_sub_return(i, &prog->aux->refcnt) == 0);
27 }
28 #endif
29
30 #endif /* HAVE_LINUX_BPF_H */
31
32 #ifndef XDP_PACKET_HEADROOM
33 #define XDP_PACKET_HEADROOM 256
34 #endif
35
36 #endif /* _COMPAT_LINUX_BPF_H */