aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/genetlink.h
diff options
context:
space:
mode:
authorPravin B Shelar <pshelar@nicira.com>2013-04-23 03:48:30 -0400
committerDavid S. Miller <davem@davemloft.net>2013-04-25 01:43:15 -0400
commitdef3117493eafd9dfa1f809d861e0031b2cc8a07 (patch)
tree93edfbb60f9d57d37d5643062cf3d41befc18579 /include/net/genetlink.h
parent133b94245c54bb2d8832bfb15975b931bc00d914 (diff)
genl: Allow concurrent genl callbacks.
All genl callbacks are serialized by genl-mutex. This can become bottleneck in multi threaded case. Following patch adds an parameter to genl_family so that a particular family can get concurrent netlink callback without genl_lock held. New rw-sem is used to protect genl callback from genl family unregister. in case of parallel_ops genl-family read-lock is taken for callbacks and write lock is taken for register or unregistration for any family. In case of locked genl family semaphore and gel-mutex is locked for any openration. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/genetlink.h')
-rw-r--r--include/net/genetlink.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/genetlink.h b/include/net/genetlink.h
index bdfbe68c1c3b..93024a47e0e2 100644
--- a/include/net/genetlink.h
+++ b/include/net/genetlink.h
@@ -50,6 +50,7 @@ struct genl_family {
50 unsigned int version; 50 unsigned int version;
51 unsigned int maxattr; 51 unsigned int maxattr;
52 bool netnsok; 52 bool netnsok;
53 bool parallel_ops;
53 int (*pre_doit)(struct genl_ops *ops, 54 int (*pre_doit)(struct genl_ops *ops,
54 struct sk_buff *skb, 55 struct sk_buff *skb,
55 struct genl_info *info); 56 struct genl_info *info);