All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesper Dangaard Brouer <brouer@redhat.com>
To: Quentin Monnet <quentin.monnet@netronome.com>
Cc: "Alexei Starovoitov" <ast@kernel.org>,
	"Daniel Borkmann" <daniel@iogearbox.net>,
	netdev@vger.kernel.org, oss-drivers@netronome.com,
	"Arnaldo Carvalho de Melo" <acme@kernel.org>,
	"Stanislav Fomichev" <sdf@google.com>,
	brouer@redhat.com, "Eric Leblond" <eric@regit.org>,
	"Toke Høiland-Jørgensen" <toke@toke.dk>
Subject: Re: [PATCH bpf-next v4 8/9] tools: bpftool: add probes for a network device
Date: Wed, 16 Jan 2019 15:42:30 +0100	[thread overview]
Message-ID: <20190116154230.43b1e562@redhat.com> (raw)
In-Reply-To: <20190116142119.8358-9-quentin.monnet@netronome.com>

On Wed, 16 Jan 2019 14:21:18 +0000
Quentin Monnet <quentin.monnet@netronome.com> wrote:

> bpftool gained support for probing the current system in order to see
> what program and map types, and what helpers are available on that
> system. This patch adds the possibility to pass an interface index to
> libbpf (and hence to the kernel) when trying to load the programs or to
> create the maps, in order to see what items a given network device can
> support.
> 
> A new keyword "dev <ifname>" can be used as an alternative to "kernel"
> to indicate that the given device should be tested. If no target ("dev"
> or "kernel") is specified bpftool defaults to probing the kernel.
> 
> Sample output:
> 
>     # bpftool -p feature probe dev lo
>     {
>         "syscall_config": {
>             "have_bpf_syscall": true
>         },
>         "program_types": {
>             "have_sched_cls_prog_type": false,
>             "have_xdp_prog_type": false
>         },
>         ...
>     }
> 
> As the target is a network device, /proc/ parameters and kernel
> configuration are NOT dumped. Availability of the bpf() syscall is
> still probed, so we can return early if that syscall is not usable
> (since there is no point in attempting the remaining probes in this
> case).
> 
> Among the program types, only the ones that can be offloaded are probed.

Do you imagine we (later) can use this probe dev interface for probing
e.g. what XDP actions a given driver supports?  and e.g. if driver have
data_meta support.

Use-case: I've very interested in finding a solution for probing for
XDP_REDIRECT support, as Suricata need this information, so it can
choose to fallback to offloading elefant flows via TC-cls_bpf (if
XDP_REDIRECT is not avail).


> All map types are probed, as there is no specific rule telling which one
> could or could not be supported by a device in the future. All helpers
> are probed (but only for offload-able program types).
> 
> Caveat: as bpftool does not attempt to attach programs to the device at
> the moment, probes do not entirely reflect what the device accepts:
> typically, for Netronome's nfp, results will announce that TC cls
> offload is available even if support has been deactivated (with e.g.
> ethtool -K eth1 hw-tc-offload off).
> 
> v2:
> - All helpers are probed, whereas previous version would only probe the
>   ones compatible with an offload-able program type. This is because we
>   do not keep a default compatible program type for each helper anymore.



-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer

  reply	other threads:[~2019-01-16 14:42 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-16 14:21 [PATCH bpf-next v4 0/9] tools: bpftool: add probes for system and device Quentin Monnet
2019-01-16 14:21 ` [PATCH bpf-next v4 1/9] tools: bpftool: add basic probe capability, probe syscall availability Quentin Monnet
2019-01-17  0:28   ` Jakub Kicinski
2019-01-17 10:02     ` Quentin Monnet
2019-01-17 10:11       ` Daniel Borkmann
2019-01-16 14:21 ` [PATCH bpf-next v4 2/9] tools: bpftool: add probes for /proc/ eBPF parameters Quentin Monnet
2019-01-16 14:21 ` [PATCH bpf-next v4 3/9] tools: bpftool: add probes for kernel configuration options Quentin Monnet
2019-01-17  0:34   ` Jakub Kicinski
2019-01-17 10:03     ` Quentin Monnet
2019-01-16 14:21 ` [PATCH bpf-next v4 4/9] tools: bpftool: add probes for eBPF program types Quentin Monnet
2019-01-17  0:42   ` Jakub Kicinski
2019-01-17  9:27     ` Daniel Borkmann
2019-01-17 10:04       ` Quentin Monnet
2019-01-17 14:11     ` Quentin Monnet
2019-01-16 14:21 ` [PATCH bpf-next v4 5/9] tools: bpftool: add probes for eBPF map types Quentin Monnet
2019-01-16 14:21 ` [PATCH bpf-next v4 6/9] tools: bpftool: add probes for eBPF helper functions Quentin Monnet
2019-01-16 14:21 ` [PATCH bpf-next v4 7/9] tools: bpftool: add C-style "#define" output for probes Quentin Monnet
2019-01-16 14:21 ` [PATCH bpf-next v4 8/9] tools: bpftool: add probes for a network device Quentin Monnet
2019-01-16 14:42   ` Jesper Dangaard Brouer [this message]
2019-01-16 14:59     ` Quentin Monnet
2019-01-16 14:21 ` [PATCH bpf-next v4 9/9] tools: bpftool: add bash completion for bpftool probes Quentin Monnet
2019-01-16 17:15 ` [PATCH bpf-next v4 0/9] tools: bpftool: add probes for system and device Stanislav Fomichev
2019-01-17 10:06   ` Quentin Monnet
2019-01-17  0:55 ` Jakub Kicinski
2019-01-17  0:56   ` Jakub Kicinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190116154230.43b1e562@redhat.com \
    --to=brouer@redhat.com \
    --cc=acme@kernel.org \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eric@regit.org \
    --cc=netdev@vger.kernel.org \
    --cc=oss-drivers@netronome.com \
    --cc=quentin.monnet@netronome.com \
    --cc=sdf@google.com \
    --cc=toke@toke.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.