From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH iproute2/master 00/11] bpf: pass ifindex for bpf offload Date: Sun, 26 Nov 2017 11:59:44 -0800 Message-ID: <20171126115944.4bf1f842@xeon-e3> References: <20171124021208.13419-1-jakub.kicinski@netronome.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, daniel@iogearbox.net To: Jakub Kicinski Return-path: Received: from mail-pg0-f47.google.com ([74.125.83.47]:46821 "EHLO mail-pg0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751384AbdKZT7w (ORCPT ); Sun, 26 Nov 2017 14:59:52 -0500 Received: by mail-pg0-f47.google.com with SMTP id z184so17739451pgd.13 for ; Sun, 26 Nov 2017 11:59:52 -0800 (PST) In-Reply-To: <20171124021208.13419-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org List-ID: On Thu, 23 Nov 2017 18:11:57 -0800 Jakub Kicinski 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