On Thu, 23 Nov 2017 18:11:57 -0800 Jakub Kicinski <jakub.kicin...@netronome.com> wrote:
> Hi! > > This series allows us to pass ifindex automatically when we > set up TC cls_bpf or XDP offload. There is a fair bit of > refactoring to separate the parse and load stages of lib/bpf.c. > In case of TC the skip_sw flag may come after the program > arguments (e.g. "bpf obj prog.o da skip_sw"), so we can't > just load the program as we parse the arguments. Note that > this impacts only loading of the program, all other supported > methods of finding a program (pinned, bytecode, bytefile-file) > are handled as previously, the load call will do nothing for > them. > > To simplify the implementation f_bpf and m_bpf will no longer > allow specifying programs multiple times. Device ifindex is > also resolved before running filter-specific code. > > > Jakub Kicinski (11): > bpf: pass program type in struct bpf_cfg_in > bpf: keep parsed program mode in struct bpf_cfg_in > bpf: allocate opcode table in struct bpf_cfg_in > bpf: split parse from program loading > bpf: rename bpf_parse_common() to bpf_parse_and_load_common() > bpf: expose bpf_parse_common() and bpf_load_common() > bpf: allow loading programs for a specific ifindex > {f,m}_bpf: don't allow specifying multiple bpf programs > tc_filter: resolve device name before parsing filter > f_bpf: communicate ifindex for eBPF offload > iplink: communicate ifindex for xdp offload > > include/bpf_util.h | 25 +++++++- > ip/iplink.c | 4 +- > ip/iplink_xdp.c | 13 ++++- > ip/iproute_lwtunnel.c | 3 +- > ip/xdp.h | 4 +- > lib/bpf.c | 155 > ++++++++++++++++++++++++++++++-------------------- > tc/f_bpf.c | 18 +++++- > tc/m_bpf.c | 6 +- > tc/tc_filter.c | 50 ++++++++-------- > 9 files changed, 178 insertions(+), 100 deletions(-) > Looks good, applied. Thanks Jakub