genetlink: register family ops as array
Instead of using a linked list, use an array. This reduces the data size needed by the users of genetlink, for example in wireless (net/wireless/nl80211.c) on 64-bit it frees up over 1K of data space. Remove the attempted sending of CTRL_CMD_NEWOPS ctrl event since genl_ctrl_event(CTRL_CMD_NEWOPS, ...) only returns -EINVAL anyway, therefore no such event could ever be sent. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
3686ec5e84
commit
d91824c08f
@@ -39,9 +39,10 @@ struct genl_info;
|
||||
* @post_doit: called after an operation's doit callback, it may
|
||||
* undo operations done by pre_doit, for example release locks
|
||||
* @attrbuf: buffer to store parsed attributes
|
||||
* @ops_list: list of all assigned operations
|
||||
* @family_list: family list
|
||||
* @mcast_groups: multicast groups list
|
||||
* @ops: the operations supported by this family (private)
|
||||
* @n_ops: number of operations supported by this family (private)
|
||||
*/
|
||||
struct genl_family {
|
||||
unsigned int id;
|
||||
@@ -58,7 +59,8 @@ struct genl_family {
|
||||
struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
struct nlattr ** attrbuf; /* private */
|
||||
struct list_head ops_list; /* private */
|
||||
struct genl_ops * ops; /* private */
|
||||
unsigned int n_ops; /* private */
|
||||
struct list_head family_list; /* private */
|
||||
struct list_head mcast_groups; /* private */
|
||||
struct module *module;
|
||||
@@ -119,7 +121,6 @@ struct genl_ops {
|
||||
int (*dumpit)(struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
int (*done)(struct netlink_callback *cb);
|
||||
struct list_head ops_list;
|
||||
};
|
||||
|
||||
int __genl_register_family(struct genl_family *family);
|
||||
|
Reference in New Issue
Block a user