All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 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.