genetlink: use idr to track families
authorJohannes Berg <johannes.berg@intel.com>
Mon, 24 Oct 2016 12:40:04 +0000 (14:40 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Oct 2016 20:16:09 +0000 (16:16 -0400)
commit2ae0f17df1cd52aafd1ab0415ea1f1dd56dc0e2a
tree492385624b87bc97c0ace5f8439606779de71802
parent489111e5c25b93be80340c3113d71903d7c82136
genetlink: use idr to track families

Since generic netlink family IDs are small integers, allocated
densely, IDR is an ideal match for lookups. Replace the existing
hand-written hash-table with IDR for allocation and lookup.

This lets the families only be written to once, during register,
since the list_head can be removed and removal of a family won't
cause any writes.

It also slightly reduces the code size (by about 1.3k on x86-64).

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/genetlink.h
include/uapi/linux/genetlink.h
net/netlink/genetlink.c