On Fri, Oct 18, 2019 at 11:33:40AM +0200, Magnus Karlsson wrote: > + > + #include <linux/bpf.h> > + #include "bpf_helpers.h" > + > + #define MAX_SOCKS 16 > + > + struct { > + __uint(type, BPF_MAP_TYPE_XSKMAP); > + __uint(max_entries, MAX_SOCKS); > + __uint(key_size, sizeof(int)); > + __uint(value_size, sizeof(int)); > + } xsks_map SEC(".maps"); > + > + struct { > + __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY); > + __uint(max_entries, 1); > + __type(key, int); > + __type(value, unsigned int); > + } rr_map SEC(".maps"); hmm. does xsks_map compile? > + > + SEC("xdp_sock") int xdp_sock_prog(struct xdp_md *ctx) > + { > + int key = 0, idx; > + unsigned int *rr; > + > + rr = bpf_map_lookup_elem(&rr_map, &key); > + if (!rr) > + return XDP_ABORTED; could you please use global data and avoid lookup? The run-time will be much faster.