aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-11-19 09:19:38 -0500
committerDavid S. Miller <davem@davemloft.net>2013-11-19 16:39:06 -0500
commit68eb55031da7c967d954e5f9415cd05f4abdb692 (patch)
tree75751944b0c808ba191bcc6a752389593c41e805 /net
parent62b68e99faa802352e9cb2ae91adecd8dfddf1b8 (diff)
genetlink: pass family to functions using groups
This doesn't really change anything, but prepares for the next patch that will change the APIs to pass the group ID within the family, rather than the global group ID. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/core/drop_monitor.c3
-rw-r--r--net/hsr/hsr_netlink.c6
-rw-r--r--net/ieee802154/netlink.c2
-rw-r--r--net/netlink/genetlink.c12
-rw-r--r--net/nfc/netlink.c39
-rw-r--r--net/openvswitch/datapath.c35
-rw-r--r--net/openvswitch/datapath.h1
-rw-r--r--net/openvswitch/dp_notify.c5
-rw-r--r--net/wimax/op-msg.c3
-rw-r--r--net/wimax/stack.c3
-rw-r--r--net/wireless/nl80211.c70
11 files changed, 105 insertions, 74 deletions
diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
index 46ee488c0015..1eab1dc48821 100644
--- a/net/core/drop_monitor.c
+++ b/net/core/drop_monitor.c
@@ -120,7 +120,8 @@ static void send_dm_alert(struct work_struct *work)
120 skb = reset_per_cpu_data(data); 120 skb = reset_per_cpu_data(data);
121 121
122 if (skb) 122 if (skb)
123 genlmsg_multicast(skb, 0, dm_mcgrp.id, GFP_KERNEL); 123 genlmsg_multicast(&net_drop_monitor_family, skb, 0,
124 dm_mcgrp.id, GFP_KERNEL);
124} 125}
125 126
126/* 127/*
diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c
index 908e335dcdc9..0009416c08c2 100644
--- a/net/hsr/hsr_netlink.c
+++ b/net/hsr/hsr_netlink.c
@@ -129,7 +129,8 @@ void hsr_nl_ringerror(struct hsr_priv *hsr_priv, unsigned char addr[ETH_ALEN],
129 goto nla_put_failure; 129 goto nla_put_failure;
130 130
131 genlmsg_end(skb, msg_head); 131 genlmsg_end(skb, msg_head);
132 genlmsg_multicast(skb, 0, hsr_network_genl_mcgrp.id, GFP_ATOMIC); 132 genlmsg_multicast(&hsr_genl_family, skb, 0,
133 hsr_network_genl_mcgrp.id, GFP_ATOMIC);
133 134
134 return; 135 return;
135 136
@@ -163,7 +164,8 @@ void hsr_nl_nodedown(struct hsr_priv *hsr_priv, unsigned char addr[ETH_ALEN])
163 goto nla_put_failure; 164 goto nla_put_failure;
164 165
165 genlmsg_end(skb, msg_head); 166 genlmsg_end(skb, msg_head);
166 genlmsg_multicast(skb, 0, hsr_network_genl_mcgrp.id, GFP_ATOMIC); 167 genlmsg_multicast(&hsr_genl_family, skb, 0,
168 hsr_network_genl_mcgrp.id, GFP_ATOMIC);
167 169
168 return; 170 return;
169 171
diff --git a/net/ieee802154/netlink.c b/net/ieee802154/netlink.c
index 1a81709a4717..5172f467a383 100644
--- a/net/ieee802154/netlink.c
+++ b/net/ieee802154/netlink.c
@@ -70,7 +70,7 @@ int ieee802154_nl_mcast(struct sk_buff *msg, unsigned int group)
70 if (genlmsg_end(msg, hdr) < 0) 70 if (genlmsg_end(msg, hdr) < 0)
71 goto out; 71 goto out;
72 72
73 return genlmsg_multicast(msg, 0, group, GFP_ATOMIC); 73 return genlmsg_multicast(&nl802154_family, msg, 0, group, GFP_ATOMIC);
74out: 74out:
75 nlmsg_free(msg); 75 nlmsg_free(msg);
76 return -ENOBUFS; 76 return -ENOBUFS;
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index e9ef640200b4..36e3a86cacf6 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -883,11 +883,12 @@ static int genl_ctrl_event(int event, struct genl_family *family,
883 return PTR_ERR(msg); 883 return PTR_ERR(msg);
884 884
885 if (!family->netnsok) { 885 if (!family->netnsok) {
886 genlmsg_multicast_netns(&init_net, msg, 0, 886 genlmsg_multicast_netns(&genl_ctrl, &init_net, msg, 0,
887 GENL_ID_CTRL, GFP_KERNEL); 887 GENL_ID_CTRL, GFP_KERNEL);
888 } else { 888 } else {
889 rcu_read_lock(); 889 rcu_read_lock();
890 genlmsg_multicast_allns(msg, 0, GENL_ID_CTRL, GFP_ATOMIC); 890 genlmsg_multicast_allns(&genl_ctrl, msg, 0,
891 GENL_ID_CTRL, GFP_ATOMIC);
891 rcu_read_unlock(); 892 rcu_read_unlock();
892 } 893 }
893 894
@@ -993,14 +994,15 @@ static int genlmsg_mcast(struct sk_buff *skb, u32 portid, unsigned long group,
993 return err; 994 return err;
994} 995}
995 996
996int genlmsg_multicast_allns(struct sk_buff *skb, u32 portid, unsigned int group, 997int genlmsg_multicast_allns(struct genl_family *family, struct sk_buff *skb,
997 gfp_t flags) 998 u32 portid, unsigned int group, gfp_t flags)
998{ 999{
999 return genlmsg_mcast(skb, portid, group, flags); 1000 return genlmsg_mcast(skb, portid, group, flags);
1000} 1001}
1001EXPORT_SYMBOL(genlmsg_multicast_allns); 1002EXPORT_SYMBOL(genlmsg_multicast_allns);
1002 1003
1003void genl_notify(struct sk_buff *skb, struct net *net, u32 portid, u32 group, 1004void genl_notify(struct genl_family *family,
1005 struct sk_buff *skb, struct net *net, u32 portid, u32 group,
1004 struct nlmsghdr *nlh, gfp_t flags) 1006 struct nlmsghdr *nlh, gfp_t flags)
1005{ 1007{
1006 struct sock *sk = net->genl_sock; 1008 struct sock *sk = net->genl_sock;
diff --git a/net/nfc/netlink.c b/net/nfc/netlink.c
index fe6760d328a0..3092df313fb1 100644
--- a/net/nfc/netlink.c
+++ b/net/nfc/netlink.c
@@ -194,7 +194,8 @@ int nfc_genl_targets_found(struct nfc_dev *dev)
194 194
195 genlmsg_end(msg, hdr); 195 genlmsg_end(msg, hdr);
196 196
197 return genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_ATOMIC); 197 return genlmsg_multicast(&nfc_genl_family, msg, 0,
198 nfc_genl_event_mcgrp.id, GFP_ATOMIC);
198 199
199nla_put_failure: 200nla_put_failure:
200 genlmsg_cancel(msg, hdr); 201 genlmsg_cancel(msg, hdr);
@@ -223,7 +224,8 @@ int nfc_genl_target_lost(struct nfc_dev *dev, u32 target_idx)
223 224
224 genlmsg_end(msg, hdr); 225 genlmsg_end(msg, hdr);
225 226
226 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 227 genlmsg_multicast(&nfc_genl_family, msg, 0,
228 nfc_genl_event_mcgrp.id, GFP_KERNEL);
227 229
228 return 0; 230 return 0;
229 231
@@ -255,7 +257,8 @@ int nfc_genl_tm_activated(struct nfc_dev *dev, u32 protocol)
255 257
256 genlmsg_end(msg, hdr); 258 genlmsg_end(msg, hdr);
257 259
258 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 260 genlmsg_multicast(&nfc_genl_family, msg, 0,
261 nfc_genl_event_mcgrp.id, GFP_KERNEL);
259 262
260 return 0; 263 return 0;
261 264
@@ -285,7 +288,8 @@ int nfc_genl_tm_deactivated(struct nfc_dev *dev)
285 288
286 genlmsg_end(msg, hdr); 289 genlmsg_end(msg, hdr);
287 290
288 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 291 genlmsg_multicast(&nfc_genl_family, msg, 0,
292 nfc_genl_event_mcgrp.id, GFP_KERNEL);
289 293
290 return 0; 294 return 0;
291 295
@@ -318,7 +322,8 @@ int nfc_genl_device_added(struct nfc_dev *dev)
318 322
319 genlmsg_end(msg, hdr); 323 genlmsg_end(msg, hdr);
320 324
321 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 325 genlmsg_multicast(&nfc_genl_family, msg, 0,
326 nfc_genl_event_mcgrp.id, GFP_KERNEL);
322 327
323 return 0; 328 return 0;
324 329
@@ -348,7 +353,8 @@ int nfc_genl_device_removed(struct nfc_dev *dev)
348 353
349 genlmsg_end(msg, hdr); 354 genlmsg_end(msg, hdr);
350 355
351 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 356 genlmsg_multicast(&nfc_genl_family, msg, 0,
357 nfc_genl_event_mcgrp.id, GFP_KERNEL);
352 358
353 return 0; 359 return 0;
354 360
@@ -414,7 +420,8 @@ int nfc_genl_llc_send_sdres(struct nfc_dev *dev, struct hlist_head *sdres_list)
414 420
415 genlmsg_end(msg, hdr); 421 genlmsg_end(msg, hdr);
416 422
417 return genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_ATOMIC); 423 return genlmsg_multicast(&nfc_genl_family, msg, 0,
424 nfc_genl_event_mcgrp.id, GFP_ATOMIC);
418 425
419nla_put_failure: 426nla_put_failure:
420 genlmsg_cancel(msg, hdr); 427 genlmsg_cancel(msg, hdr);
@@ -448,7 +455,8 @@ int nfc_genl_se_added(struct nfc_dev *dev, u32 se_idx, u16 type)
448 455
449 genlmsg_end(msg, hdr); 456 genlmsg_end(msg, hdr);
450 457
451 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 458 genlmsg_multicast(&nfc_genl_family, msg, 0,
459 nfc_genl_event_mcgrp.id, GFP_KERNEL);
452 460
453 return 0; 461 return 0;
454 462
@@ -479,7 +487,8 @@ int nfc_genl_se_removed(struct nfc_dev *dev, u32 se_idx)
479 487
480 genlmsg_end(msg, hdr); 488 genlmsg_end(msg, hdr);
481 489
482 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 490 genlmsg_multicast(&nfc_genl_family, msg, 0,
491 nfc_genl_event_mcgrp.id, GFP_KERNEL);
483 492
484 return 0; 493 return 0;
485 494
@@ -600,7 +609,8 @@ int nfc_genl_dep_link_up_event(struct nfc_dev *dev, u32 target_idx,
600 609
601 dev->dep_link_up = true; 610 dev->dep_link_up = true;
602 611
603 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_ATOMIC); 612 genlmsg_multicast(&nfc_genl_family, msg, 0,
613 nfc_genl_event_mcgrp.id, GFP_ATOMIC);
604 614
605 return 0; 615 return 0;
606 616
@@ -632,7 +642,8 @@ int nfc_genl_dep_link_down_event(struct nfc_dev *dev)
632 642
633 genlmsg_end(msg, hdr); 643 genlmsg_end(msg, hdr);
634 644
635 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_ATOMIC); 645 genlmsg_multicast(&nfc_genl_family, msg, 0,
646 nfc_genl_event_mcgrp.id, GFP_ATOMIC);
636 647
637 return 0; 648 return 0;
638 649
@@ -1137,7 +1148,8 @@ int nfc_genl_fw_download_done(struct nfc_dev *dev, const char *firmware_name,
1137 1148
1138 genlmsg_end(msg, hdr); 1149 genlmsg_end(msg, hdr);
1139 1150
1140 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 1151 genlmsg_multicast(&nfc_genl_family, msg, 0,
1152 nfc_genl_event_mcgrp.id, GFP_KERNEL);
1141 1153
1142 return 0; 1154 return 0;
1143 1155
@@ -1308,7 +1320,8 @@ static void se_io_cb(void *context, u8 *apdu, size_t apdu_len, int err)
1308 1320
1309 genlmsg_end(msg, hdr); 1321 genlmsg_end(msg, hdr);
1310 1322
1311 genlmsg_multicast(msg, 0, nfc_genl_event_mcgrp.id, GFP_KERNEL); 1323 genlmsg_multicast(&nfc_genl_family, msg, 0,
1324 nfc_genl_event_mcgrp.id, GFP_KERNEL);
1312 1325
1313 kfree(ctx); 1326 kfree(ctx);
1314 1327
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 3e2bb15fd717..5c19846b1d2a 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -61,10 +61,11 @@
61 61
62int ovs_net_id __read_mostly; 62int ovs_net_id __read_mostly;
63 63
64static void ovs_notify(struct sk_buff *skb, struct genl_info *info, 64static void ovs_notify(struct genl_family *family,
65 struct sk_buff *skb, struct genl_info *info,
65 struct genl_multicast_group *grp) 66 struct genl_multicast_group *grp)
66{ 67{
67 genl_notify(skb, genl_info_net(info), info->snd_portid, 68 genl_notify(family, skb, genl_info_net(info), info->snd_portid,
68 grp->id, info->nlhdr, GFP_KERNEL); 69 grp->id, info->nlhdr, GFP_KERNEL);
69} 70}
70 71
@@ -877,9 +878,10 @@ static int ovs_flow_cmd_new_or_set(struct sk_buff *skb, struct genl_info *info)
877 ovs_unlock(); 878 ovs_unlock();
878 879
879 if (!IS_ERR(reply)) 880 if (!IS_ERR(reply))
880 ovs_notify(reply, info, &ovs_dp_flow_multicast_group); 881 ovs_notify(&dp_flow_genl_family, reply, info,
882 &ovs_dp_flow_multicast_group);
881 else 883 else
882 genl_set_err(sock_net(skb->sk), 0, 884 genl_set_err(&dp_flow_genl_family, sock_net(skb->sk), 0,
883 ovs_dp_flow_multicast_group.id, PTR_ERR(reply)); 885 ovs_dp_flow_multicast_group.id, PTR_ERR(reply));
884 return 0; 886 return 0;
885 887
@@ -990,7 +992,8 @@ static int ovs_flow_cmd_del(struct sk_buff *skb, struct genl_info *info)
990 ovs_flow_free(flow, true); 992 ovs_flow_free(flow, true);
991 ovs_unlock(); 993 ovs_unlock();
992 994
993 ovs_notify(reply, info, &ovs_dp_flow_multicast_group); 995 ovs_notify(&dp_flow_genl_family, reply, info,
996 &ovs_dp_flow_multicast_group);
994 return 0; 997 return 0;
995unlock: 998unlock:
996 ovs_unlock(); 999 ovs_unlock();
@@ -1237,7 +1240,8 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct genl_info *info)
1237 1240
1238 ovs_unlock(); 1241 ovs_unlock();
1239 1242
1240 ovs_notify(reply, info, &ovs_dp_datapath_multicast_group); 1243 ovs_notify(&dp_datapath_genl_family, reply, info,
1244 &ovs_dp_datapath_multicast_group);
1241 return 0; 1245 return 0;
1242 1246
1243err_destroy_local_port: 1247err_destroy_local_port:
@@ -1302,7 +1306,8 @@ static int ovs_dp_cmd_del(struct sk_buff *skb, struct genl_info *info)
1302 __dp_destroy(dp); 1306 __dp_destroy(dp);
1303 ovs_unlock(); 1307 ovs_unlock();
1304 1308
1305 ovs_notify(reply, info, &ovs_dp_datapath_multicast_group); 1309 ovs_notify(&dp_datapath_genl_family, reply, info,
1310 &ovs_dp_datapath_multicast_group);
1306 1311
1307 return 0; 1312 return 0;
1308unlock: 1313unlock:
@@ -1326,14 +1331,15 @@ static int ovs_dp_cmd_set(struct sk_buff *skb, struct genl_info *info)
1326 info->snd_seq, OVS_DP_CMD_NEW); 1331 info->snd_seq, OVS_DP_CMD_NEW);
1327 if (IS_ERR(reply)) { 1332 if (IS_ERR(reply)) {
1328 err = PTR_ERR(reply); 1333 err = PTR_ERR(reply);
1329 genl_set_err(sock_net(skb->sk), 0, 1334 genl_set_err(&dp_datapath_genl_family, sock_net(skb->sk), 0,
1330 ovs_dp_datapath_multicast_group.id, err); 1335 ovs_dp_datapath_multicast_group.id, err);
1331 err = 0; 1336 err = 0;
1332 goto unlock; 1337 goto unlock;
1333 } 1338 }
1334 1339
1335 ovs_unlock(); 1340 ovs_unlock();
1336 ovs_notify(reply, info, &ovs_dp_datapath_multicast_group); 1341 ovs_notify(&dp_datapath_genl_family, reply, info,
1342 &ovs_dp_datapath_multicast_group);
1337 1343
1338 return 0; 1344 return 0;
1339unlock: 1345unlock:
@@ -1425,7 +1431,7 @@ static const struct nla_policy vport_policy[OVS_VPORT_ATTR_MAX + 1] = {
1425 [OVS_VPORT_ATTR_OPTIONS] = { .type = NLA_NESTED }, 1431 [OVS_VPORT_ATTR_OPTIONS] = { .type = NLA_NESTED },
1426}; 1432};
1427 1433
1428static struct genl_family dp_vport_genl_family = { 1434struct genl_family dp_vport_genl_family = {
1429 .id = GENL_ID_GENERATE, 1435 .id = GENL_ID_GENERATE,
1430 .hdrsize = sizeof(struct ovs_header), 1436 .hdrsize = sizeof(struct ovs_header),
1431 .name = OVS_VPORT_FAMILY, 1437 .name = OVS_VPORT_FAMILY,
@@ -1595,7 +1601,8 @@ static int ovs_vport_cmd_new(struct sk_buff *skb, struct genl_info *info)
1595 goto exit_unlock; 1601 goto exit_unlock;
1596 } 1602 }
1597 1603
1598 ovs_notify(reply, info, &ovs_dp_vport_multicast_group); 1604 ovs_notify(&dp_vport_genl_family, reply, info,
1605 &ovs_dp_vport_multicast_group);
1599 1606
1600exit_unlock: 1607exit_unlock:
1601 ovs_unlock(); 1608 ovs_unlock();
@@ -1642,7 +1649,8 @@ static int ovs_vport_cmd_set(struct sk_buff *skb, struct genl_info *info)
1642 BUG_ON(err < 0); 1649 BUG_ON(err < 0);
1643 1650
1644 ovs_unlock(); 1651 ovs_unlock();
1645 ovs_notify(reply, info, &ovs_dp_vport_multicast_group); 1652 ovs_notify(&dp_vport_genl_family, reply, info,
1653 &ovs_dp_vport_multicast_group);
1646 return 0; 1654 return 0;
1647 1655
1648exit_free: 1656exit_free:
@@ -1679,7 +1687,8 @@ static int ovs_vport_cmd_del(struct sk_buff *skb, struct genl_info *info)
1679 err = 0; 1687 err = 0;
1680 ovs_dp_detach_port(vport); 1688 ovs_dp_detach_port(vport);
1681 1689
1682 ovs_notify(reply, info, &ovs_dp_vport_multicast_group); 1690 ovs_notify(&dp_vport_genl_family, reply, info,
1691 &ovs_dp_vport_multicast_group);
1683 1692
1684exit_unlock: 1693exit_unlock:
1685 ovs_unlock(); 1694 ovs_unlock();
diff --git a/net/openvswitch/datapath.h b/net/openvswitch/datapath.h
index d3d14a58aa91..4067ea41be28 100644
--- a/net/openvswitch/datapath.h
+++ b/net/openvswitch/datapath.h
@@ -177,6 +177,7 @@ static inline struct vport *ovs_vport_ovsl(const struct datapath *dp, int port_n
177} 177}
178 178
179extern struct notifier_block ovs_dp_device_notifier; 179extern struct notifier_block ovs_dp_device_notifier;
180extern struct genl_family dp_vport_genl_family;
180extern struct genl_multicast_group ovs_dp_vport_multicast_group; 181extern struct genl_multicast_group ovs_dp_vport_multicast_group;
181 182
182void ovs_dp_process_received_packet(struct vport *, struct sk_buff *); 183void ovs_dp_process_received_packet(struct vport *, struct sk_buff *);
diff --git a/net/openvswitch/dp_notify.c b/net/openvswitch/dp_notify.c
index 3d55ead6095c..f4b66c84ea0b 100644
--- a/net/openvswitch/dp_notify.c
+++ b/net/openvswitch/dp_notify.c
@@ -34,13 +34,14 @@ static void dp_detach_port_notify(struct vport *vport)
34 OVS_VPORT_CMD_DEL); 34 OVS_VPORT_CMD_DEL);
35 ovs_dp_detach_port(vport); 35 ovs_dp_detach_port(vport);
36 if (IS_ERR(notify)) { 36 if (IS_ERR(notify)) {
37 genl_set_err(ovs_dp_get_net(dp), 0, 37 genl_set_err(&dp_vport_genl_family, ovs_dp_get_net(dp), 0,
38 ovs_dp_vport_multicast_group.id, 38 ovs_dp_vport_multicast_group.id,
39 PTR_ERR(notify)); 39 PTR_ERR(notify));
40 return; 40 return;
41 } 41 }
42 42
43 genlmsg_multicast_netns(ovs_dp_get_net(dp), notify, 0, 43 genlmsg_multicast_netns(&dp_vport_genl_family,
44 ovs_dp_get_net(dp), notify, 0,
44 ovs_dp_vport_multicast_group.id, 45 ovs_dp_vport_multicast_group.id,
45 GFP_KERNEL); 46 GFP_KERNEL);
46} 47}
diff --git a/net/wimax/op-msg.c b/net/wimax/op-msg.c
index ff19cbeaf607..f37dd3c5576d 100644
--- a/net/wimax/op-msg.c
+++ b/net/wimax/op-msg.c
@@ -279,7 +279,8 @@ int wimax_msg_send(struct wimax_dev *wimax_dev, struct sk_buff *skb)
279 279
280 d_printf(1, dev, "CTX: wimax msg, %zu bytes\n", size); 280 d_printf(1, dev, "CTX: wimax msg, %zu bytes\n", size);
281 d_dump(2, dev, msg, size); 281 d_dump(2, dev, msg, size);
282 genlmsg_multicast(skb, 0, wimax_gnl_mcg.id, GFP_KERNEL); 282 genlmsg_multicast(&wimax_gnl_family, skb, 0,
283 wimax_gnl_mcg.id, GFP_KERNEL);
283 d_printf(1, dev, "CTX: genl multicast done\n"); 284 d_printf(1, dev, "CTX: genl multicast done\n");
284 return 0; 285 return 0;
285} 286}
diff --git a/net/wimax/stack.c b/net/wimax/stack.c
index 6328afe90319..18888748e699 100644
--- a/net/wimax/stack.c
+++ b/net/wimax/stack.c
@@ -177,7 +177,8 @@ int wimax_gnl_re_state_change_send(
177 goto out; 177 goto out;
178 } 178 }
179 genlmsg_end(report_skb, header); 179 genlmsg_end(report_skb, header);
180 genlmsg_multicast(report_skb, 0, wimax_gnl_mcg.id, GFP_KERNEL); 180 genlmsg_multicast(&wimax_gnl_family, report_skb, 0,
181 wimax_gnl_mcg.id, GFP_KERNEL);
181out: 182out:
182 d_fnend(3, dev, "(wimax_dev %p report_skb %p) = %d\n", 183 d_fnend(3, dev, "(wimax_dev %p report_skb %p) = %d\n",
183 wimax_dev, report_skb, result); 184 wimax_dev, report_skb, result);
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 1b6c5dd4dccf..f20edfd2e1f0 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -6868,7 +6868,7 @@ void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp)
6868 6868
6869 nla_nest_end(skb, data); 6869 nla_nest_end(skb, data);
6870 genlmsg_end(skb, hdr); 6870 genlmsg_end(skb, hdr);
6871 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), skb, 0, 6871 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), skb, 0,
6872 nl80211_testmode_mcgrp.id, gfp); 6872 nl80211_testmode_mcgrp.id, gfp);
6873} 6873}
6874EXPORT_SYMBOL(cfg80211_testmode_event); 6874EXPORT_SYMBOL(cfg80211_testmode_event);
@@ -9597,7 +9597,7 @@ void nl80211_notify_dev_rename(struct cfg80211_registered_device *rdev)
9597 return; 9597 return;
9598 } 9598 }
9599 9599
9600 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 9600 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
9601 nl80211_config_mcgrp.id, GFP_KERNEL); 9601 nl80211_config_mcgrp.id, GFP_KERNEL);
9602} 9602}
9603 9603
@@ -9707,7 +9707,7 @@ void nl80211_send_scan_start(struct cfg80211_registered_device *rdev,
9707 return; 9707 return;
9708 } 9708 }
9709 9709
9710 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 9710 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
9711 nl80211_scan_mcgrp.id, GFP_KERNEL); 9711 nl80211_scan_mcgrp.id, GFP_KERNEL);
9712} 9712}
9713 9713
@@ -9726,7 +9726,7 @@ void nl80211_send_scan_done(struct cfg80211_registered_device *rdev,
9726 return; 9726 return;
9727 } 9727 }
9728 9728
9729 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 9729 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
9730 nl80211_scan_mcgrp.id, GFP_KERNEL); 9730 nl80211_scan_mcgrp.id, GFP_KERNEL);
9731} 9731}
9732 9732
@@ -9745,7 +9745,7 @@ void nl80211_send_scan_aborted(struct cfg80211_registered_device *rdev,
9745 return; 9745 return;
9746 } 9746 }
9747 9747
9748 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 9748 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
9749 nl80211_scan_mcgrp.id, GFP_KERNEL); 9749 nl80211_scan_mcgrp.id, GFP_KERNEL);
9750} 9750}
9751 9751
@@ -9764,7 +9764,7 @@ void nl80211_send_sched_scan_results(struct cfg80211_registered_device *rdev,
9764 return; 9764 return;
9765 } 9765 }
9766 9766
9767 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 9767 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
9768 nl80211_scan_mcgrp.id, GFP_KERNEL); 9768 nl80211_scan_mcgrp.id, GFP_KERNEL);
9769} 9769}
9770 9770
@@ -9782,7 +9782,7 @@ void nl80211_send_sched_scan(struct cfg80211_registered_device *rdev,
9782 return; 9782 return;
9783 } 9783 }
9784 9784
9785 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 9785 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
9786 nl80211_scan_mcgrp.id, GFP_KERNEL); 9786 nl80211_scan_mcgrp.id, GFP_KERNEL);
9787} 9787}
9788 9788
@@ -9837,8 +9837,8 @@ void nl80211_send_reg_change_event(struct regulatory_request *request)
9837 genlmsg_end(msg, hdr); 9837 genlmsg_end(msg, hdr);
9838 9838
9839 rcu_read_lock(); 9839 rcu_read_lock();
9840 genlmsg_multicast_allns(msg, 0, nl80211_regulatory_mcgrp.id, 9840 genlmsg_multicast_allns(&nl80211_fam, msg, 0,
9841 GFP_ATOMIC); 9841 nl80211_regulatory_mcgrp.id, GFP_ATOMIC);
9842 rcu_read_unlock(); 9842 rcu_read_unlock();
9843 9843
9844 return; 9844 return;
@@ -9873,7 +9873,7 @@ static void nl80211_send_mlme_event(struct cfg80211_registered_device *rdev,
9873 9873
9874 genlmsg_end(msg, hdr); 9874 genlmsg_end(msg, hdr);
9875 9875
9876 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 9876 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
9877 nl80211_mlme_mcgrp.id, gfp); 9877 nl80211_mlme_mcgrp.id, gfp);
9878 return; 9878 return;
9879 9879
@@ -9961,7 +9961,7 @@ static void nl80211_send_mlme_timeout(struct cfg80211_registered_device *rdev,
9961 9961
9962 genlmsg_end(msg, hdr); 9962 genlmsg_end(msg, hdr);
9963 9963
9964 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 9964 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
9965 nl80211_mlme_mcgrp.id, gfp); 9965 nl80211_mlme_mcgrp.id, gfp);
9966 return; 9966 return;
9967 9967
@@ -10017,7 +10017,7 @@ void nl80211_send_connect_result(struct cfg80211_registered_device *rdev,
10017 10017
10018 genlmsg_end(msg, hdr); 10018 genlmsg_end(msg, hdr);
10019 10019
10020 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10020 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10021 nl80211_mlme_mcgrp.id, gfp); 10021 nl80211_mlme_mcgrp.id, gfp);
10022 return; 10022 return;
10023 10023
@@ -10056,7 +10056,7 @@ void nl80211_send_roamed(struct cfg80211_registered_device *rdev,
10056 10056
10057 genlmsg_end(msg, hdr); 10057 genlmsg_end(msg, hdr);
10058 10058
10059 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10059 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10060 nl80211_mlme_mcgrp.id, gfp); 10060 nl80211_mlme_mcgrp.id, gfp);
10061 return; 10061 return;
10062 10062
@@ -10094,7 +10094,7 @@ void nl80211_send_disconnected(struct cfg80211_registered_device *rdev,
10094 10094
10095 genlmsg_end(msg, hdr); 10095 genlmsg_end(msg, hdr);
10096 10096
10097 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10097 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10098 nl80211_mlme_mcgrp.id, GFP_KERNEL); 10098 nl80211_mlme_mcgrp.id, GFP_KERNEL);
10099 return; 10099 return;
10100 10100
@@ -10128,7 +10128,7 @@ void nl80211_send_ibss_bssid(struct cfg80211_registered_device *rdev,
10128 10128
10129 genlmsg_end(msg, hdr); 10129 genlmsg_end(msg, hdr);
10130 10130
10131 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10131 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10132 nl80211_mlme_mcgrp.id, gfp); 10132 nl80211_mlme_mcgrp.id, gfp);
10133 return; 10133 return;
10134 10134
@@ -10169,7 +10169,7 @@ void cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *addr,
10169 10169
10170 genlmsg_end(msg, hdr); 10170 genlmsg_end(msg, hdr);
10171 10171
10172 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10172 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10173 nl80211_mlme_mcgrp.id, gfp); 10173 nl80211_mlme_mcgrp.id, gfp);
10174 return; 10174 return;
10175 10175
@@ -10208,7 +10208,7 @@ void nl80211_michael_mic_failure(struct cfg80211_registered_device *rdev,
10208 10208
10209 genlmsg_end(msg, hdr); 10209 genlmsg_end(msg, hdr);
10210 10210
10211 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10211 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10212 nl80211_mlme_mcgrp.id, gfp); 10212 nl80211_mlme_mcgrp.id, gfp);
10213 return; 10213 return;
10214 10214
@@ -10261,8 +10261,8 @@ void nl80211_send_beacon_hint_event(struct wiphy *wiphy,
10261 genlmsg_end(msg, hdr); 10261 genlmsg_end(msg, hdr);
10262 10262
10263 rcu_read_lock(); 10263 rcu_read_lock();
10264 genlmsg_multicast_allns(msg, 0, nl80211_regulatory_mcgrp.id, 10264 genlmsg_multicast_allns(&nl80211_fam, msg, 0,
10265 GFP_ATOMIC); 10265 nl80211_regulatory_mcgrp.id, GFP_ATOMIC);
10266 rcu_read_unlock(); 10266 rcu_read_unlock();
10267 10267
10268 return; 10268 return;
@@ -10307,7 +10307,7 @@ static void nl80211_send_remain_on_chan_event(
10307 10307
10308 genlmsg_end(msg, hdr); 10308 genlmsg_end(msg, hdr);
10309 10309
10310 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10310 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10311 nl80211_mlme_mcgrp.id, gfp); 10311 nl80211_mlme_mcgrp.id, gfp);
10312 return; 10312 return;
10313 10313
@@ -10362,7 +10362,7 @@ void cfg80211_new_sta(struct net_device *dev, const u8 *mac_addr,
10362 return; 10362 return;
10363 } 10363 }
10364 10364
10365 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10365 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10366 nl80211_mlme_mcgrp.id, gfp); 10366 nl80211_mlme_mcgrp.id, gfp);
10367} 10367}
10368EXPORT_SYMBOL(cfg80211_new_sta); 10368EXPORT_SYMBOL(cfg80211_new_sta);
@@ -10392,7 +10392,7 @@ void cfg80211_del_sta(struct net_device *dev, const u8 *mac_addr, gfp_t gfp)
10392 10392
10393 genlmsg_end(msg, hdr); 10393 genlmsg_end(msg, hdr);
10394 10394
10395 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10395 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10396 nl80211_mlme_mcgrp.id, gfp); 10396 nl80211_mlme_mcgrp.id, gfp);
10397 return; 10397 return;
10398 10398
@@ -10428,7 +10428,7 @@ void cfg80211_conn_failed(struct net_device *dev, const u8 *mac_addr,
10428 10428
10429 genlmsg_end(msg, hdr); 10429 genlmsg_end(msg, hdr);
10430 10430
10431 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10431 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10432 nl80211_mlme_mcgrp.id, gfp); 10432 nl80211_mlme_mcgrp.id, gfp);
10433 return; 10433 return;
10434 10434
@@ -10590,7 +10590,7 @@ void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie,
10590 10590
10591 genlmsg_end(msg, hdr); 10591 genlmsg_end(msg, hdr);
10592 10592
10593 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10593 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10594 nl80211_mlme_mcgrp.id, gfp); 10594 nl80211_mlme_mcgrp.id, gfp);
10595 return; 10595 return;
10596 10596
@@ -10639,7 +10639,7 @@ void cfg80211_cqm_rssi_notify(struct net_device *dev,
10639 10639
10640 genlmsg_end(msg, hdr); 10640 genlmsg_end(msg, hdr);
10641 10641
10642 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10642 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10643 nl80211_mlme_mcgrp.id, gfp); 10643 nl80211_mlme_mcgrp.id, gfp);
10644 return; 10644 return;
10645 10645
@@ -10684,7 +10684,7 @@ static void nl80211_gtk_rekey_notify(struct cfg80211_registered_device *rdev,
10684 10684
10685 genlmsg_end(msg, hdr); 10685 genlmsg_end(msg, hdr);
10686 10686
10687 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10687 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10688 nl80211_mlme_mcgrp.id, gfp); 10688 nl80211_mlme_mcgrp.id, gfp);
10689 return; 10689 return;
10690 10690
@@ -10742,7 +10742,7 @@ nl80211_pmksa_candidate_notify(struct cfg80211_registered_device *rdev,
10742 10742
10743 genlmsg_end(msg, hdr); 10743 genlmsg_end(msg, hdr);
10744 10744
10745 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10745 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10746 nl80211_mlme_mcgrp.id, gfp); 10746 nl80211_mlme_mcgrp.id, gfp);
10747 return; 10747 return;
10748 10748
@@ -10789,7 +10789,7 @@ static void nl80211_ch_switch_notify(struct cfg80211_registered_device *rdev,
10789 10789
10790 genlmsg_end(msg, hdr); 10790 genlmsg_end(msg, hdr);
10791 10791
10792 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10792 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10793 nl80211_mlme_mcgrp.id, gfp); 10793 nl80211_mlme_mcgrp.id, gfp);
10794 return; 10794 return;
10795 10795
@@ -10866,7 +10866,7 @@ void cfg80211_cqm_txe_notify(struct net_device *dev,
10866 10866
10867 genlmsg_end(msg, hdr); 10867 genlmsg_end(msg, hdr);
10868 10868
10869 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10869 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10870 nl80211_mlme_mcgrp.id, gfp); 10870 nl80211_mlme_mcgrp.id, gfp);
10871 return; 10871 return;
10872 10872
@@ -10915,7 +10915,7 @@ nl80211_radar_notify(struct cfg80211_registered_device *rdev,
10915 10915
10916 genlmsg_end(msg, hdr); 10916 genlmsg_end(msg, hdr);
10917 10917
10918 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10918 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10919 nl80211_mlme_mcgrp.id, gfp); 10919 nl80211_mlme_mcgrp.id, gfp);
10920 return; 10920 return;
10921 10921
@@ -10962,7 +10962,7 @@ void cfg80211_cqm_pktloss_notify(struct net_device *dev,
10962 10962
10963 genlmsg_end(msg, hdr); 10963 genlmsg_end(msg, hdr);
10964 10964
10965 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 10965 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
10966 nl80211_mlme_mcgrp.id, gfp); 10966 nl80211_mlme_mcgrp.id, gfp);
10967 return; 10967 return;
10968 10968
@@ -11002,7 +11002,7 @@ void cfg80211_probe_status(struct net_device *dev, const u8 *addr,
11002 11002
11003 genlmsg_end(msg, hdr); 11003 genlmsg_end(msg, hdr);
11004 11004
11005 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 11005 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
11006 nl80211_mlme_mcgrp.id, gfp); 11006 nl80211_mlme_mcgrp.id, gfp);
11007 return; 11007 return;
11008 11008
@@ -11154,7 +11154,7 @@ void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev,
11154 11154
11155 genlmsg_end(msg, hdr); 11155 genlmsg_end(msg, hdr);
11156 11156
11157 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 11157 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
11158 nl80211_mlme_mcgrp.id, gfp); 11158 nl80211_mlme_mcgrp.id, gfp);
11159 return; 11159 return;
11160 11160
@@ -11196,7 +11196,7 @@ void cfg80211_tdls_oper_request(struct net_device *dev, const u8 *peer,
11196 11196
11197 genlmsg_end(msg, hdr); 11197 genlmsg_end(msg, hdr);
11198 11198
11199 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 11199 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
11200 nl80211_mlme_mcgrp.id, gfp); 11200 nl80211_mlme_mcgrp.id, gfp);
11201 return; 11201 return;
11202 11202
@@ -11279,7 +11279,7 @@ void cfg80211_ft_event(struct net_device *netdev,
11279 11279
11280 genlmsg_end(msg, hdr); 11280 genlmsg_end(msg, hdr);
11281 11281
11282 genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 11282 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
11283 nl80211_mlme_mcgrp.id, GFP_KERNEL); 11283 nl80211_mlme_mcgrp.id, GFP_KERNEL);
11284} 11284}
11285EXPORT_SYMBOL(cfg80211_ft_event); 11285EXPORT_SYMBOL(cfg80211_ft_event);