* [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements
@ 2016-09-12 21:38 Daniel Borkmann
2016-09-12 21:38 ` [PATCH net-next 1/2] bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf Daniel Borkmann
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Daniel Borkmann @ 2016-09-12 21:38 UTC (permalink / raw)
To: davem; +Cc: alexei.starovoitov, netdev, Daniel Borkmann
Two minor improvements to {cls,act}_bpf. For details please see
individual patches.
Thanks!
Daniel Borkmann (2):
bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf
bpf: use skb_at_tc_ingress helper in tcf_bpf
net/sched/act_bpf.c | 5 +----
net/sched/cls_bpf.c | 3 ---
2 files changed, 1 insertion(+), 7 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net-next 1/2] bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf
2016-09-12 21:38 [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements Daniel Borkmann
@ 2016-09-12 21:38 ` Daniel Borkmann
2016-09-12 21:38 ` [PATCH net-next 2/2] bpf: use skb_at_tc_ingress helper in tcf_bpf Daniel Borkmann
2016-09-15 23:30 ` [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Daniel Borkmann @ 2016-09-12 21:38 UTC (permalink / raw)
To: davem; +Cc: alexei.starovoitov, netdev, Daniel Borkmann
The skb_mac_header_was_set() test in cls_bpf's and act_bpf's fast-path is
actually unnecessary and can be removed altogether. This was added by
commit a166151cbe33 ("bpf: fix bpf helpers to use skb->mac_header relative
offsets"), which was later on improved by 3431205e0397 ("bpf: make programs
see skb->data == L2 for ingress and egress"). We're always guaranteed to
have valid mac header at the time we invoke cls_bpf_classify() or tcf_bpf().
Reason is that since 6d1ccff62780 ("net: reset mac header in dev_start_xmit()")
we do skb_reset_mac_header() in __dev_queue_xmit() before we could call
into sch_handle_egress() or any subsequent enqueue. sch_handle_ingress()
always sees a valid mac header as well (things like skb_reset_mac_len()
would badly fail otherwise). Thus, drop the unnecessary test in classifier
and action case.
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
---
net/sched/act_bpf.c | 3 ---
net/sched/cls_bpf.c | 3 ---
2 files changed, 6 deletions(-)
diff --git a/net/sched/act_bpf.c b/net/sched/act_bpf.c
index bfa8707..78400de 100644
--- a/net/sched/act_bpf.c
+++ b/net/sched/act_bpf.c
@@ -44,9 +44,6 @@ static int tcf_bpf(struct sk_buff *skb, const struct tc_action *act,
int action, filter_res;
bool at_ingress = G_TC_AT(skb->tc_verd) & AT_INGRESS;
- if (unlikely(!skb_mac_header_was_set(skb)))
- return TC_ACT_UNSPEC;
-
tcf_lastuse_update(&prog->tcf_tm);
bstats_cpu_update(this_cpu_ptr(prog->common.cpu_bstats), skb);
diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c
index 4742f41..1d92d4d 100644
--- a/net/sched/cls_bpf.c
+++ b/net/sched/cls_bpf.c
@@ -83,9 +83,6 @@ static int cls_bpf_classify(struct sk_buff *skb, const struct tcf_proto *tp,
struct cls_bpf_prog *prog;
int ret = -1;
- if (unlikely(!skb_mac_header_was_set(skb)))
- return -1;
-
/* Needed here for accessing maps. */
rcu_read_lock();
list_for_each_entry_rcu(prog, &head->plist, link) {
--
1.9.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net-next 2/2] bpf: use skb_at_tc_ingress helper in tcf_bpf
2016-09-12 21:38 [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements Daniel Borkmann
2016-09-12 21:38 ` [PATCH net-next 1/2] bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf Daniel Borkmann
@ 2016-09-12 21:38 ` Daniel Borkmann
2016-09-15 23:30 ` [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Daniel Borkmann @ 2016-09-12 21:38 UTC (permalink / raw)
To: davem; +Cc: alexei.starovoitov, netdev, Daniel Borkmann
We have a small skb_at_tc_ingress() helper for testing for ingress, so
make use of it. cls_bpf already uses it and so should act_bpf.
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
---
net/sched/act_bpf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/sched/act_bpf.c b/net/sched/act_bpf.c
index 78400de..1d39600 100644
--- a/net/sched/act_bpf.c
+++ b/net/sched/act_bpf.c
@@ -39,10 +39,10 @@ static struct tc_action_ops act_bpf_ops;
static int tcf_bpf(struct sk_buff *skb, const struct tc_action *act,
struct tcf_result *res)
{
+ bool at_ingress = skb_at_tc_ingress(skb);
struct tcf_bpf *prog = to_bpf(act);
struct bpf_prog *filter;
int action, filter_res;
- bool at_ingress = G_TC_AT(skb->tc_verd) & AT_INGRESS;
tcf_lastuse_update(&prog->tcf_tm);
bstats_cpu_update(this_cpu_ptr(prog->common.cpu_bstats), skb);
--
1.9.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements
2016-09-12 21:38 [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements Daniel Borkmann
2016-09-12 21:38 ` [PATCH net-next 1/2] bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf Daniel Borkmann
2016-09-12 21:38 ` [PATCH net-next 2/2] bpf: use skb_at_tc_ingress helper in tcf_bpf Daniel Borkmann
@ 2016-09-15 23:30 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2016-09-15 23:30 UTC (permalink / raw)
To: daniel; +Cc: alexei.starovoitov, netdev
From: Daniel Borkmann <daniel@iogearbox.net>
Date: Mon, 12 Sep 2016 23:38:41 +0200
> Two minor improvements to {cls,act}_bpf. For details please see
> individual patches.
Series applied.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-09-15 23:30 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-12 21:38 [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements Daniel Borkmann
2016-09-12 21:38 ` [PATCH net-next 1/2] bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf Daniel Borkmann
2016-09-12 21:38 ` [PATCH net-next 2/2] bpf: use skb_at_tc_ingress helper in tcf_bpf Daniel Borkmann
2016-09-15 23:30 ` [PATCH net-next 0/2] Misc cls_bpf/act_bpf improvements David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).