mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 01:49:36 +00:00
![Pedro Tammela](/assets/img/avatar_default.png)
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>
20 lines
392 B
C
20 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 */
|