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.