mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-17 19:18:38 +00:00
The tc action act_connmark was using shared stats and taking the per
action lock in the datapath. Improve it by using percpu stats and rcu.
perf before:
- 13.55% tcf_connmark_act
- 81.18% _raw_spin_lock
80.46% native_queued_spin_lock_slowpath
perf after:
- 2.85% tcf_connmark_act
tdc results:
1..15
ok 1 2002 - Add valid connmark action with defaults
ok 2 56a5 - Add valid connmark action with control pass
ok 3 7c66 - Add valid connmark action with control drop
ok 4 a913 - Add valid connmark action with control pipe
ok 5 bdd8 - Add valid connmark action with control reclassify
ok 6 b8be - Add valid connmark action with control continue
ok 7 d8a6 - Add valid connmark action with control jump
ok 8 aae8 - Add valid connmark action with zone argument
ok 9 2f0b - Add valid connmark action with invalid zone argument
ok 10 9305 - Add connmark action with unsupported argument
ok 11 71ca - Add valid connmark action and replace it
ok 12 5f8f - Add valid connmark action with cookie
ok 13 c506 - Replace connmark with invalid goto chain control
ok 14 6571 - Delete connmark action with valid index
ok 15 3426 - Delete connmark action with invalid index
Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
21 lines
392 B
C
21 lines
392 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __NET_TC_CONNMARK_H
|
|
#define __NET_TC_CONNMARK_H
|
|
|
|
#include <net/act_api.h>
|
|
|
|
struct tcf_connmark_parms {
|
|
struct net *net;
|
|
u16 zone;
|
|
struct rcu_head rcu;
|
|
};
|
|
|
|
struct tcf_connmark_info {
|
|
struct tc_action common;
|
|
struct tcf_connmark_parms __rcu *parms;
|
|
};
|
|
|
|
#define to_connmark(a) ((struct tcf_connmark_info *)a)
|
|
|
|
#endif /* __NET_TC_CONNMARK_H */
|