diff options
author | Daniel Borkmann <daniel@iogearbox.net> | 2015-08-26 23:00:06 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-08-27 14:18:48 -0700 |
commit | 3b3ae880266d148bf73a573a766bc9b78c08d805 (patch) | |
tree | f96787f6f74d236781f58d4f3a1abe1bcf1a796b /net/sched/sch_atm.c | |
parent | fe2188236ad04618b25978c44d896c16613de9aa (diff) | |
download | op-kernel-dev-3b3ae880266d148bf73a573a766bc9b78c08d805.zip op-kernel-dev-3b3ae880266d148bf73a573a766bc9b78c08d805.tar.gz |
net: sched: consolidate tc_classify{,_compat}
For classifiers getting invoked via tc_classify(), we always need an
extra function call into tc_classify_compat(), as both are being
exported as symbols and tc_classify() itself doesn't do much except
handling of reclassifications when tp->classify() returned with
TC_ACT_RECLASSIFY.
CBQ and ATM are the only qdiscs that directly call into tc_classify_compat(),
all others use tc_classify(). When tc actions are being configured
out in the kernel, tc_classify() effectively does nothing besides
delegating.
We could spare this layer and consolidate both functions. pktgen on
single CPU constantly pushing skbs directly into the netif_receive_skb()
path with a dummy classifier on ingress qdisc attached, improves
slightly from 22.3Mpps to 23.1Mpps.
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_atm.c')
-rw-r--r-- | net/sched/sch_atm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c index e3e2cc5..1911af3 100644 --- a/net/sched/sch_atm.c +++ b/net/sched/sch_atm.c @@ -375,7 +375,7 @@ static int atm_tc_enqueue(struct sk_buff *skb, struct Qdisc *sch) list_for_each_entry(flow, &p->flows, list) { fl = rcu_dereference_bh(flow->filter_list); if (fl) { - result = tc_classify_compat(skb, fl, &res); + result = tc_classify(skb, fl, &res, true); if (result < 0) continue; flow = (struct atm_flow_data *)res.class; |