From: David Ahern <dsahern@gmail.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>,
David Ahern <dsahern@kernel.org>
Cc: Networking <netdev@vger.kernel.org>,
"David S. Miller" <davem@davemloft.net>,
"Jakub Kicinski" <kuba@kernel.org>,
"Jesper Dangaard Brouer" <brouer@redhat.com>,
"Toke Høiland-Jørgensen" <toke@redhat.com>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"john fastabend" <john.fastabend@gmail.com>,
"Alexei Starovoitov" <ast@kernel.org>,
"Martin Lau" <kafai@fb.com>, "Song Liu" <songliubraving@fb.com>,
"Yonghong Song" <yhs@fb.com>, "Andrii Nakryiko" <andriin@fb.com>
Subject: Re: [PATCH v2 bpf-next 2/5] bpf: Add support to attach bpf program to a devmap entry
Date: Thu, 28 May 2020 16:40:06 -0600 [thread overview]
Message-ID: <191ba79f-3aeb-718c-644e-bd2cc539dc60@gmail.com> (raw)
In-Reply-To: <CAEf4BzYZSPdGH+RXp+kHfWnGGLRuiP=ho9oMsSf7RsYWyeNk0g@mail.gmail.com>
On 5/28/20 1:01 AM, Andrii Nakryiko wrote:
>
> Please cc bpf@vger.kernel.org in the future for patches related to BPF
> in general.
added to my script
>
>> include/linux/bpf.h | 5 +++
>> include/uapi/linux/bpf.h | 5 +++
>> kernel/bpf/devmap.c | 79 +++++++++++++++++++++++++++++++++-
>> net/core/dev.c | 18 ++++++++
>> tools/include/uapi/linux/bpf.h | 5 +++
>> 5 files changed, 110 insertions(+), 2 deletions(-)
>>
>
> [...]
>
>>
>> +static struct xdp_buff *dev_map_run_prog(struct net_device *dev,
>> + struct xdp_buff *xdp,
>> + struct bpf_prog *xdp_prog)
>> +{
>> + u32 act;
>> +
>> + act = bpf_prog_run_xdp(xdp_prog, xdp);
>> + switch (act) {
>> + case XDP_DROP:
>> + fallthrough;
>
> nit: I don't think fallthrough is necessary for cases like:
>
> case XDP_DROP:
> case XDP_PASS:
> /* do something */
>
>> + case XDP_PASS:
>> + break;
>> + default:
>> + bpf_warn_invalid_xdp_action(act);
>> + fallthrough;
>> + case XDP_ABORTED:
>> + trace_xdp_exception(dev, xdp_prog, act);
>> + act = XDP_DROP;
>> + break;
>> + }
>> +
>> + if (act == XDP_DROP) {
>> + xdp_return_buff(xdp);
>> + xdp = NULL;
>
> hm.. if you move XDP_DROP case to after XDP_ABORTED and do fallthrough
> from XDP_ABORTED, you won't even need to override act and it will just
> handle all the cases, no?
>
> switch (act) {
> case XDP_PASS:
> return xdp;
> default:
> bpf_warn_invalid_xdp_action(act);
> fallthrough;
> case XDP_ABORTED:
> trace_xdp_exception(dev, xdp_prog, act);
> fallthrough;
> case XDP_DROP:
> xdp_return_buff(xdp);
> return NULL;
> }
>
> Wouldn't this be simpler?
>
Switched it to this which captures your intent with a more traditional
return location.
act = bpf_prog_run_xdp(xdp_prog, xdp);
switch (act) {
case XDP_PASS:
return xdp;
case XDP_DROP:
break;
default:
bpf_warn_invalid_xdp_action(act);
fallthrough;
case XDP_ABORTED:
trace_xdp_exception(dev, xdp_prog, act);
break;
}
xdp_return_buff(xdp);
return NULL;
next prev parent reply other threads:[~2020-05-28 22:40 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-28 0:14 [PATCH v2 bpf-next 0/5] bpf: Add support for XDP programs in DEVMAP entries David Ahern
2020-05-28 0:14 ` [PATCH v2 bpf-next 1/5] devmap: Formalize map value as a named struct David Ahern
2020-05-28 7:01 ` Andrii Nakryiko
2020-05-28 22:37 ` David Ahern
2020-05-28 0:14 ` [PATCH v2 bpf-next 2/5] bpf: Add support to attach bpf program to a devmap entry David Ahern
2020-05-28 7:01 ` Andrii Nakryiko
2020-05-28 22:40 ` David Ahern [this message]
2020-05-28 22:54 ` Andrii Nakryiko
2020-05-28 8:54 ` Toke Høiland-Jørgensen
2020-05-28 0:14 ` [PATCH v2 bpf-next 3/5] xdp: Add xdp_txq_info to xdp_buff David Ahern
2020-05-28 0:14 ` [PATCH v2 bpf-next 4/5] libbpf: Add SEC name for xdp programs attached to device map David Ahern
2020-05-28 7:04 ` Andrii Nakryiko
2020-05-28 22:49 ` David Ahern
2020-05-28 0:14 ` [PATCH v2 bpf-next 5/5] selftest: Add tests for XDP programs in devmap entries David Ahern
2020-05-28 7:08 ` Andrii Nakryiko
2020-05-28 10:25 ` Jesper Dangaard Brouer
2020-05-28 22:56 ` David Ahern
2020-05-28 22:54 ` David Ahern
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=191ba79f-3aeb-718c-644e-bd2cc539dc60@gmail.com \
--to=dsahern@gmail.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andriin@fb.com \
--cc=ast@kernel.org \
--cc=brouer@redhat.com \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=songliubraving@fb.com \
--cc=toke@redhat.com \
--cc=yhs@fb.com \
/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.