diff options
author | Vlad Buslov <vladbu@mellanox.com> | 2019-02-11 10:55:39 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-02-12 13:41:32 -0500 |
commit | 4dbfa766440c6dfe3d10f077cde966a7d11b58f1 (patch) | |
tree | db3a6c5e2450ef0eae61879159ff64678b65fac7 /include/net/sch_generic.h | |
parent | ed76f5edccc98fa66f2337f0b3b255d6e1a568b7 (diff) | |
download | lwn-4dbfa766440c6dfe3d10f077cde966a7d11b58f1.tar.gz lwn-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.h | 1 |
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; }; |