aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2016-10-24 08:40:03 -0400
committerDavid S. Miller <davem@davemloft.net>2016-10-27 16:16:09 -0400
commit489111e5c25b93be80340c3113d71903d7c82136 (patch)
treebf1af9c989ee4cd1decbfcbfe0633d7f563f5c83 /net/tipc
parenta07ea4d9941af5a0c6f0be2a71b51ac9c083c5e5 (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.c22
-rw-r--r--net/tipc/netlink_compat.c20
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 */
138struct 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
146static const struct genl_ops tipc_genl_v2_ops[] = { 138static 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
252struct 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
260int tipc_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr ***attr) 263int 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
1218static struct genl_ops tipc_genl_compat_ops[] = {
1219 {
1220 .cmd = TIPC_GENL_CMD,
1221 .doit = tipc_nl_compat_recv,
1222 },
1223};
1224
1218static struct genl_family tipc_genl_compat_family = { 1225static 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,
1226static 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
1233int tipc_netlink_compat_start(void) 1236int 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;