From: xiangxia.m.yue@gmail.com
To: netdev@vger.kernel.org
Cc: Tonghao Zhang <xiangxia.m.yue@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>, Eric Dumazet <edumazet@google.com>,
Antoine Tenart <atenart@kernel.org>,
Alexander Lobakin <alexandr.lobakin@intel.com>,
Wei Wang <weiwan@google.com>, Arnd Bergmann <arnd@arndb.de>
Subject: [net v5 2/3] net: sched: add check tc_skip_classify in sch egress
Date: Wed, 8 Dec 2021 22:54:58 +0800 [thread overview]
Message-ID: <20211208145459.9590-3-xiangxia.m.yue@gmail.com> (raw)
In-Reply-To: <20211208145459.9590-1-xiangxia.m.yue@gmail.com>
From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Try to resolve the issues as below:
* We look up and then check tc_skip_classify flag in net
sched layer, even though skb don't want to be classified.
That case may consume a lot of cpu cycles. This patch
is useful when there are a lot of filters with different
prio. There is ~5 prio in in production, ~1% improvement.
Rules as below:
$ for id in $(seq 1 5); do
$ tc filter add ... egress prio $id ... action mirred egress redirect dev ifb0
$ done
* bpf_redirect may be invoked in egress path. If we don't
check the flags and then return immediately, the packets
will loopback.
$ tc filter add dev eth0 egress bpf direct-action obj ifb.o sec ifb
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Martin KaFai Lau <kafai@fb.com>
Cc: Song Liu <songliubraving@fb.com>
Cc: Yonghong Song <yhs@fb.com>
Cc: John Fastabend <john.fastabend@gmail.com>
Cc: KP Singh <kpsingh@kernel.org>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Antoine Tenart <atenart@kernel.org>
Cc: Alexander Lobakin <alexandr.lobakin@intel.com>
Cc: Wei Wang <weiwan@google.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
---
net/core/dev.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/core/dev.c b/net/core/dev.c
index a64297a4cc89..81ad415b78f9 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3823,6 +3823,9 @@ sch_handle_egress(struct sk_buff *skb, int *ret, struct net_device *dev)
if (!miniq)
return skb;
+ if (skb_skip_tc_classify(skb))
+ return skb;
+
/* qdisc_skb_cb(skb)->pkt_len was already set by the caller. */
qdisc_skb_cb(skb)->mru = 0;
qdisc_skb_cb(skb)->post_ct = false;
--
2.27.0
next prev parent reply other threads:[~2021-12-08 14:55 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-08 14:54 [net v5 0/3] fix bpf_redirect to ifb netdev xiangxia.m.yue
2021-12-08 14:54 ` [net v5 1/3] net: core: set skb useful vars in __bpf_tx_skb xiangxia.m.yue
2021-12-08 14:54 ` xiangxia.m.yue [this message]
2021-12-10 16:43 ` [net v5 2/3] net: sched: add check tc_skip_classify in sch egress John Fastabend
2021-12-10 16:52 ` John Fastabend
2021-12-10 17:43 ` Tonghao Zhang
2021-12-10 17:37 ` Tonghao Zhang
2021-12-10 17:46 ` Tonghao Zhang
2021-12-10 19:54 ` Tonghao Zhang
2021-12-10 20:11 ` Daniel Borkmann
2021-12-11 0:37 ` Tonghao Zhang
2021-12-16 12:37 ` Daniel Borkmann
2021-12-17 3:21 ` Tonghao Zhang
2022-01-10 1:34 ` Tonghao Zhang
2021-12-12 9:40 ` Tonghao Zhang
2021-12-14 2:27 ` Tonghao Zhang
2021-12-08 14:54 ` [net v5 3/3] selftests: bpf: add bpf_redirect to ifb xiangxia.m.yue
2021-12-08 15:41 ` [net v5 0/3] fix bpf_redirect to ifb netdev Alexander Lobakin
2021-12-08 15:53 ` Tonghao Zhang
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=20211208145459.9590-3-xiangxia.m.yue@gmail.com \
--to=xiangxia.m.yue@gmail.com \
--cc=alexandr.lobakin@intel.com \
--cc=andrii@kernel.org \
--cc=arnd@arndb.de \
--cc=ast@kernel.org \
--cc=atenart@kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kpsingh@kernel.org \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=songliubraving@fb.com \
--cc=weiwan@google.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.