genetlink: reorg struct genl_family
There are holes and oversized members in struct genl_family. Before: /* size: 104, cachelines: 2, members: 16 */ After: /* size: 88, cachelines: 2, members: 16 */ The command field in struct genlmsghdr is a u8, so no point in the operation count being 32 bit. Also operation 0 is usually undefined, so we only need 255 entries. netnsok and parallel_ops are only ever initialized to true. We can grow the fields as needed, compiler should warn us if someone tries to assign larger constants. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5a38b4fc01
commit
e508673696
|
@ -48,8 +48,11 @@ struct genl_family {
|
|||
char name[GENL_NAMSIZ];
|
||||
unsigned int version;
|
||||
unsigned int maxattr;
|
||||
bool netnsok;
|
||||
bool parallel_ops;
|
||||
unsigned int mcgrp_offset; /* private */
|
||||
u8 netnsok:1;
|
||||
u8 parallel_ops:1;
|
||||
u8 n_ops;
|
||||
u8 n_mcgrps;
|
||||
const struct nla_policy *policy;
|
||||
int (*pre_doit)(const struct genl_ops *ops,
|
||||
struct sk_buff *skb,
|
||||
|
@ -59,9 +62,6 @@ struct genl_family {
|
|||
struct genl_info *info);
|
||||
const struct genl_ops * ops;
|
||||
const struct genl_multicast_group *mcgrps;
|
||||
unsigned int n_ops;
|
||||
unsigned int n_mcgrps;
|
||||
unsigned int mcgrp_offset; /* private */
|
||||
struct module *module;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue