diff options
author | Johannes Berg <johannes.berg@intel.com> | 2016-10-24 08:40:03 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-10-27 16:16:09 -0400 |
commit | 489111e5c25b93be80340c3113d71903d7c82136 (patch) | |
tree | bf1af9c989ee4cd1decbfcbfe0633d7f563f5c83 /net/tipc | |
parent | a07ea4d9941af5a0c6f0be2a71b51ac9c083c5e5 (diff) |
genetlink: statically initialize families
Instead of providing macros/inline functions to initialize
the families, make all users initialize them statically and
get rid of the macros.
This reduces the kernel code size by about 1.6k on x86-64
(with allyesconfig).
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/netlink.c | 22 | ||||
-rw-r--r-- | net/tipc/netlink_compat.c | 20 |
2 files changed, 23 insertions, 19 deletions
diff --git a/net/tipc/netlink.c b/net/tipc/netlink.c index 383b8fedabc7..74a405bf107b 100644 --- a/net/tipc/netlink.c +++ b/net/tipc/netlink.c | |||
@@ -135,14 +135,6 @@ const struct nla_policy tipc_nl_udp_policy[TIPC_NLA_UDP_MAX + 1] = { | |||
135 | /* Users of the legacy API (tipc-config) can't handle that we add operations, | 135 | /* Users of the legacy API (tipc-config) can't handle that we add operations, |
136 | * so we have a separate genl handling for the new API. | 136 | * so we have a separate genl handling for the new API. |
137 | */ | 137 | */ |
138 | struct genl_family tipc_genl_family = { | ||
139 | .name = TIPC_GENL_V2_NAME, | ||
140 | .version = TIPC_GENL_V2_VERSION, | ||
141 | .hdrsize = 0, | ||
142 | .maxattr = TIPC_NLA_MAX, | ||
143 | .netnsok = true, | ||
144 | }; | ||
145 | |||
146 | static const struct genl_ops tipc_genl_v2_ops[] = { | 138 | static const struct genl_ops tipc_genl_v2_ops[] = { |
147 | { | 139 | { |
148 | .cmd = TIPC_NL_BEARER_DISABLE, | 140 | .cmd = TIPC_NL_BEARER_DISABLE, |
@@ -257,6 +249,17 @@ static const struct genl_ops tipc_genl_v2_ops[] = { | |||
257 | #endif | 249 | #endif |
258 | }; | 250 | }; |
259 | 251 | ||
252 | struct genl_family tipc_genl_family = { | ||
253 | .name = TIPC_GENL_V2_NAME, | ||
254 | .version = TIPC_GENL_V2_VERSION, | ||
255 | .hdrsize = 0, | ||
256 | .maxattr = TIPC_NLA_MAX, | ||
257 | .netnsok = true, | ||
258 | .module = THIS_MODULE, | ||
259 | .ops = tipc_genl_v2_ops, | ||
260 | .n_ops = ARRAY_SIZE(tipc_genl_v2_ops), | ||
261 | }; | ||
262 | |||
260 | int tipc_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr ***attr) | 263 | int tipc_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr ***attr) |
261 | { | 264 | { |
262 | u32 maxattr = tipc_genl_family.maxattr; | 265 | u32 maxattr = tipc_genl_family.maxattr; |
@@ -272,8 +275,7 @@ int tipc_netlink_start(void) | |||
272 | { | 275 | { |
273 | int res; | 276 | int res; |
274 | 277 | ||
275 | res = genl_register_family_with_ops(&tipc_genl_family, | 278 | res = genl_register_family(&tipc_genl_family); |
276 | tipc_genl_v2_ops); | ||
277 | if (res) { | 279 | if (res) { |
278 | pr_err("Failed to register netlink interface\n"); | 280 | pr_err("Failed to register netlink interface\n"); |
279 | return res; | 281 | return res; |
diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c index f04428e4c8e5..07b19931e458 100644 --- a/net/tipc/netlink_compat.c +++ b/net/tipc/netlink_compat.c | |||
@@ -1215,27 +1215,29 @@ send: | |||
1215 | return err; | 1215 | return err; |
1216 | } | 1216 | } |
1217 | 1217 | ||
1218 | static struct genl_ops tipc_genl_compat_ops[] = { | ||
1219 | { | ||
1220 | .cmd = TIPC_GENL_CMD, | ||
1221 | .doit = tipc_nl_compat_recv, | ||
1222 | }, | ||
1223 | }; | ||
1224 | |||
1218 | static struct genl_family tipc_genl_compat_family = { | 1225 | static struct genl_family tipc_genl_compat_family = { |
1219 | .name = TIPC_GENL_NAME, | 1226 | .name = TIPC_GENL_NAME, |
1220 | .version = TIPC_GENL_VERSION, | 1227 | .version = TIPC_GENL_VERSION, |
1221 | .hdrsize = TIPC_GENL_HDRLEN, | 1228 | .hdrsize = TIPC_GENL_HDRLEN, |
1222 | .maxattr = 0, | 1229 | .maxattr = 0, |
1223 | .netnsok = true, | 1230 | .netnsok = true, |
1224 | }; | 1231 | .module = THIS_MODULE, |
1225 | 1232 | .ops = tipc_genl_compat_ops, | |
1226 | static struct genl_ops tipc_genl_compat_ops[] = { | 1233 | .n_ops = ARRAY_SIZE(tipc_genl_compat_ops), |
1227 | { | ||
1228 | .cmd = TIPC_GENL_CMD, | ||
1229 | .doit = tipc_nl_compat_recv, | ||
1230 | }, | ||
1231 | }; | 1234 | }; |
1232 | 1235 | ||
1233 | int tipc_netlink_compat_start(void) | 1236 | int tipc_netlink_compat_start(void) |
1234 | { | 1237 | { |
1235 | int res; | 1238 | int res; |
1236 | 1239 | ||
1237 | res = genl_register_family_with_ops(&tipc_genl_compat_family, | 1240 | res = genl_register_family(&tipc_genl_compat_family); |
1238 | tipc_genl_compat_ops); | ||
1239 | if (res) { | 1241 | if (res) { |
1240 | pr_err("Failed to register legacy compat interface\n"); | 1242 | pr_err("Failed to register legacy compat interface\n"); |
1241 | return res; | 1243 | return res; |