|
@@ -47,6 +47,25 @@ static struct genl_family nl80211_fam = {
|
|
|
.post_doit = nl80211_post_doit,
|
|
|
};
|
|
|
|
|
|
+/* multicast groups */
|
|
|
+enum nl80211_multicast_groups {
|
|
|
+ NL80211_MCGRP_CONFIG,
|
|
|
+ NL80211_MCGRP_SCAN,
|
|
|
+ NL80211_MCGRP_REGULATORY,
|
|
|
+ NL80211_MCGRP_MLME,
|
|
|
+ NL80211_MCGRP_TESTMODE /* keep last - ifdef! */
|
|
|
+};
|
|
|
+
|
|
|
+static const struct genl_multicast_group nl80211_mcgrps[] = {
|
|
|
+ [NL80211_MCGRP_CONFIG] = { .name = "config", },
|
|
|
+ [NL80211_MCGRP_SCAN] = { .name = "scan", },
|
|
|
+ [NL80211_MCGRP_REGULATORY] = { .name = "regulatory", },
|
|
|
+ [NL80211_MCGRP_MLME] = { .name = "mlme", },
|
|
|
+#ifdef CONFIG_NL80211_TESTMODE
|
|
|
+ [NL80211_MCGRP_TESTMODE] = { .name = "testmode", }
|
|
|
+#endif
|
|
|
+};
|
|
|
+
|
|
|
/* returns ERR_PTR values */
|
|
|
static struct wireless_dev *
|
|
|
__cfg80211_wdev_from_attrs(struct net *netns, struct nlattr **attrs)
|
|
@@ -6656,10 +6675,6 @@ static int nl80211_set_mcast_rate(struct sk_buff *skb, struct genl_info *info)
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_NL80211_TESTMODE
|
|
|
-static struct genl_multicast_group nl80211_testmode_mcgrp = {
|
|
|
- .name = "testmode",
|
|
|
-};
|
|
|
-
|
|
|
static int nl80211_testmode_do(struct sk_buff *skb, struct genl_info *info)
|
|
|
{
|
|
|
struct cfg80211_registered_device *rdev = info->user_ptr[0];
|
|
@@ -6868,8 +6883,8 @@ void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp)
|
|
|
|
|
|
nla_nest_end(skb, data);
|
|
|
genlmsg_end(skb, hdr);
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), skb, 0,
|
|
|
- nl80211_testmode_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), skb, 0,
|
|
|
+ NL80211_MCGRP_TESTMODE, gfp);
|
|
|
}
|
|
|
EXPORT_SYMBOL(cfg80211_testmode_event);
|
|
|
#endif
|
|
@@ -9566,21 +9581,6 @@ static const struct genl_ops nl80211_ops[] = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
-static struct genl_multicast_group nl80211_mlme_mcgrp = {
|
|
|
- .name = "mlme",
|
|
|
-};
|
|
|
-
|
|
|
-/* multicast groups */
|
|
|
-static struct genl_multicast_group nl80211_config_mcgrp = {
|
|
|
- .name = "config",
|
|
|
-};
|
|
|
-static struct genl_multicast_group nl80211_scan_mcgrp = {
|
|
|
- .name = "scan",
|
|
|
-};
|
|
|
-static struct genl_multicast_group nl80211_regulatory_mcgrp = {
|
|
|
- .name = "regulatory",
|
|
|
-};
|
|
|
-
|
|
|
/* notification functions */
|
|
|
|
|
|
void nl80211_notify_dev_rename(struct cfg80211_registered_device *rdev)
|
|
@@ -9597,8 +9597,8 @@ void nl80211_notify_dev_rename(struct cfg80211_registered_device *rdev)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_config_mcgrp.id, GFP_KERNEL);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_CONFIG, GFP_KERNEL);
|
|
|
}
|
|
|
|
|
|
static int nl80211_add_scan_req(struct sk_buff *msg,
|
|
@@ -9707,8 +9707,8 @@ void nl80211_send_scan_start(struct cfg80211_registered_device *rdev,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_scan_mcgrp.id, GFP_KERNEL);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_SCAN, GFP_KERNEL);
|
|
|
}
|
|
|
|
|
|
void nl80211_send_scan_done(struct cfg80211_registered_device *rdev,
|
|
@@ -9726,8 +9726,8 @@ void nl80211_send_scan_done(struct cfg80211_registered_device *rdev,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_scan_mcgrp.id, GFP_KERNEL);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_SCAN, GFP_KERNEL);
|
|
|
}
|
|
|
|
|
|
void nl80211_send_scan_aborted(struct cfg80211_registered_device *rdev,
|
|
@@ -9745,8 +9745,8 @@ void nl80211_send_scan_aborted(struct cfg80211_registered_device *rdev,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_scan_mcgrp.id, GFP_KERNEL);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_SCAN, GFP_KERNEL);
|
|
|
}
|
|
|
|
|
|
void nl80211_send_sched_scan_results(struct cfg80211_registered_device *rdev,
|
|
@@ -9764,8 +9764,8 @@ void nl80211_send_sched_scan_results(struct cfg80211_registered_device *rdev,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_scan_mcgrp.id, GFP_KERNEL);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_SCAN, GFP_KERNEL);
|
|
|
}
|
|
|
|
|
|
void nl80211_send_sched_scan(struct cfg80211_registered_device *rdev,
|
|
@@ -9782,8 +9782,8 @@ void nl80211_send_sched_scan(struct cfg80211_registered_device *rdev,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_scan_mcgrp.id, GFP_KERNEL);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_SCAN, GFP_KERNEL);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -9837,8 +9837,8 @@ void nl80211_send_reg_change_event(struct regulatory_request *request)
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
rcu_read_lock();
|
|
|
- genlmsg_multicast_allns(msg, 0, nl80211_regulatory_mcgrp.id,
|
|
|
- GFP_ATOMIC);
|
|
|
+ genlmsg_multicast_allns(&nl80211_fam, msg, 0,
|
|
|
+ NL80211_MCGRP_REGULATORY, GFP_ATOMIC);
|
|
|
rcu_read_unlock();
|
|
|
|
|
|
return;
|
|
@@ -9873,8 +9873,8 @@ static void nl80211_send_mlme_event(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -9961,8 +9961,8 @@ static void nl80211_send_mlme_timeout(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10017,8 +10017,8 @@ void nl80211_send_connect_result(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10056,8 +10056,8 @@ void nl80211_send_roamed(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10094,8 +10094,8 @@ void nl80211_send_disconnected(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, GFP_KERNEL);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, GFP_KERNEL);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10128,8 +10128,8 @@ void nl80211_send_ibss_bssid(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10169,8 +10169,8 @@ void cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *addr,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10208,8 +10208,8 @@ void nl80211_michael_mic_failure(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10261,8 +10261,8 @@ void nl80211_send_beacon_hint_event(struct wiphy *wiphy,
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
rcu_read_lock();
|
|
|
- genlmsg_multicast_allns(msg, 0, nl80211_regulatory_mcgrp.id,
|
|
|
- GFP_ATOMIC);
|
|
|
+ genlmsg_multicast_allns(&nl80211_fam, msg, 0,
|
|
|
+ NL80211_MCGRP_REGULATORY, GFP_ATOMIC);
|
|
|
rcu_read_unlock();
|
|
|
|
|
|
return;
|
|
@@ -10307,8 +10307,8 @@ static void nl80211_send_remain_on_chan_event(
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10362,8 +10362,8 @@ void cfg80211_new_sta(struct net_device *dev, const u8 *mac_addr,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
}
|
|
|
EXPORT_SYMBOL(cfg80211_new_sta);
|
|
|
|
|
@@ -10392,8 +10392,8 @@ void cfg80211_del_sta(struct net_device *dev, const u8 *mac_addr, gfp_t gfp)
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10428,8 +10428,8 @@ void cfg80211_conn_failed(struct net_device *dev, const u8 *mac_addr,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10590,8 +10590,8 @@ void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10639,8 +10639,8 @@ void cfg80211_cqm_rssi_notify(struct net_device *dev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10684,8 +10684,8 @@ static void nl80211_gtk_rekey_notify(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10742,8 +10742,8 @@ nl80211_pmksa_candidate_notify(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10789,8 +10789,8 @@ static void nl80211_ch_switch_notify(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10866,8 +10866,8 @@ void cfg80211_cqm_txe_notify(struct net_device *dev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10915,8 +10915,8 @@ nl80211_radar_notify(struct cfg80211_registered_device *rdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -10962,8 +10962,8 @@ void cfg80211_cqm_pktloss_notify(struct net_device *dev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -11002,8 +11002,8 @@ void cfg80211_probe_status(struct net_device *dev, const u8 *addr,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -11154,8 +11154,8 @@ void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
free_msg:
|
|
@@ -11196,8 +11196,8 @@ void cfg80211_tdls_oper_request(struct net_device *dev, const u8 *peer,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, gfp);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, gfp);
|
|
|
return;
|
|
|
|
|
|
nla_put_failure:
|
|
@@ -11279,8 +11279,8 @@ void cfg80211_ft_event(struct net_device *netdev,
|
|
|
|
|
|
genlmsg_end(msg, hdr);
|
|
|
|
|
|
- genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
- nl80211_mlme_mcgrp.id, GFP_KERNEL);
|
|
|
+ genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
|
|
|
+ NL80211_MCGRP_MLME, GFP_KERNEL);
|
|
|
}
|
|
|
EXPORT_SYMBOL(cfg80211_ft_event);
|
|
|
|
|
@@ -11329,33 +11329,11 @@ int nl80211_init(void)
|
|
|
{
|
|
|
int err;
|
|
|
|
|
|
- err = genl_register_family_with_ops(&nl80211_fam,
|
|
|
- nl80211_ops, ARRAY_SIZE(nl80211_ops));
|
|
|
+ err = genl_register_family_with_ops_groups(&nl80211_fam, nl80211_ops,
|
|
|
+ nl80211_mcgrps);
|
|
|
if (err)
|
|
|
return err;
|
|
|
|
|
|
- err = genl_register_mc_group(&nl80211_fam, &nl80211_config_mcgrp);
|
|
|
- if (err)
|
|
|
- goto err_out;
|
|
|
-
|
|
|
- err = genl_register_mc_group(&nl80211_fam, &nl80211_scan_mcgrp);
|
|
|
- if (err)
|
|
|
- goto err_out;
|
|
|
-
|
|
|
- err = genl_register_mc_group(&nl80211_fam, &nl80211_regulatory_mcgrp);
|
|
|
- if (err)
|
|
|
- goto err_out;
|
|
|
-
|
|
|
- err = genl_register_mc_group(&nl80211_fam, &nl80211_mlme_mcgrp);
|
|
|
- if (err)
|
|
|
- goto err_out;
|
|
|
-
|
|
|
-#ifdef CONFIG_NL80211_TESTMODE
|
|
|
- err = genl_register_mc_group(&nl80211_fam, &nl80211_testmode_mcgrp);
|
|
|
- if (err)
|
|
|
- goto err_out;
|
|
|
-#endif
|
|
|
-
|
|
|
err = netlink_register_notifier(&nl80211_netlink_notifier);
|
|
|
if (err)
|
|
|
goto err_out;
|