aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/sch_generic.h
diff options
context:
space:
mode:
authorVlad Buslov <vladbu@mellanox.com>2019-02-11 10:55:39 +0200
committerDavid S. Miller <davem@davemloft.net>2019-02-12 13:41:32 -0500
commit4dbfa766440c6dfe3d10f077cde966a7d11b58f1 (patch)
treedb3a6c5e2450ef0eae61879159ff64678b65fac7 /include/net/sch_generic.h
parentnet: sched: protect filter_chain list with filter_chain_lock mutex (diff)
downloadlinux-dev-4dbfa766440c6dfe3d10f077cde966a7d11b58f1.tar.xz
linux-dev-4dbfa766440c6dfe3d10f077cde966a7d11b58f1.zip
net: sched: introduce reference counting for tcf_proto
In order to remove dependency on rtnl lock and allow concurrent tcf_proto modification, extend tcf_proto with reference counter. Implement helper get/put functions for tcf proto and use them to modify cls API to always take reference to tcf_proto while using it. Only release reference to parent chain after releasing last reference to tp. Signed-off-by: Vlad Buslov <vladbu@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/sch_generic.h')
-rw-r--r--include/net/sch_generic.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 85993d7efee6..4372c08fc4d9 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -322,6 +322,7 @@ struct tcf_proto {
void *data;
const struct tcf_proto_ops *ops;
struct tcf_chain *chain;
+ refcount_t refcnt;
struct rcu_head rcu;
};