aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/007-revert-genetlink-changes.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2017-08-22 23:59:48 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2017-10-01 12:49:11 +0200
commita8f63a0717f553e0a1b37ee9212fc4cb2a801426 (patch)
tree9016b975706f35b98075167f2cf6b15add308c9b /package/kernel/mac80211/patches/007-revert-genetlink-changes.patch
parent1114f5dc10755e3c92b5711b420818cf9e366874 (diff)
downloadupstream-a8f63a0717f553e0a1b37ee9212fc4cb2a801426.tar.gz
upstream-a8f63a0717f553e0a1b37ee9212fc4cb2a801426.tar.bz2
upstream-a8f63a0717f553e0a1b37ee9212fc4cb2a801426.zip
mac80211: update to backports-4.14-rc2
This updates mac80211 to backprots-4.14-rc2. This was compile and runtime tested with ath9k, ath10k and b43 with multiple stations and ieee80211w and in different scenarios by many other people. To create the backports-4.14-rc2-1.tar.xz use this repository: https://git.kernel.org/pub/scm/linux/kernel/git/backports/backports.git from tag v4.14-rc2-1 Then run this: ./gentree.py --git-revision v4.14-rc2 --clean <path to linux repo> ../backports-4.14-rc2-1 This also adapts the ath10k-ct and mt76 driver to the changed cfg80211 APIs and syncs the nl80211.h file in iw with the new version from backports-4.14-rc2. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Diffstat (limited to 'package/kernel/mac80211/patches/007-revert-genetlink-changes.patch')
-rw-r--r--package/kernel/mac80211/patches/007-revert-genetlink-changes.patch266
1 files changed, 0 insertions, 266 deletions
diff --git a/package/kernel/mac80211/patches/007-revert-genetlink-changes.patch b/package/kernel/mac80211/patches/007-revert-genetlink-changes.patch
deleted file mode 100644
index 1a85106bc2..0000000000
--- a/package/kernel/mac80211/patches/007-revert-genetlink-changes.patch
+++ /dev/null
@@ -1,266 +0,0 @@
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -32,8 +32,22 @@ static int nl80211_crypto_settings(struc
- struct cfg80211_crypto_settings *settings,
- int cipher_limit);
-
-+static int nl80211_pre_doit(const struct genl_ops *ops, struct sk_buff *skb,
-+ struct genl_info *info);
-+static void nl80211_post_doit(const struct genl_ops *ops, struct sk_buff *skb,
-+ struct genl_info *info);
-+
- /* the netlink family */
--static struct genl_family nl80211_fam;
-+static struct genl_family nl80211_fam = {
-+ .id = GENL_ID_GENERATE, /* don't bother with a hardcoded ID */
-+ .name = NL80211_GENL_NAME, /* have users key off the name instead */
-+ .hdrsize = 0, /* no private header */
-+ .version = 1, /* no particular meaning now */
-+ .maxattr = NL80211_ATTR_MAX,
-+ .netnsok = true,
-+ .pre_doit = nl80211_pre_doit,
-+ .post_doit = nl80211_post_doit,
-+};
-
- /* multicast groups */
- enum nl80211_multicast_groups {
-@@ -549,14 +563,13 @@ static int nl80211_prepare_wdev_dump(str
-
- if (!cb->args[0]) {
- err = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize,
-- genl_family_attrbuf(&nl80211_fam),
-- nl80211_fam.maxattr, nl80211_policy);
-+ nl80211_fam.attrbuf, nl80211_fam.maxattr,
-+ nl80211_policy);
- if (err)
- goto out_unlock;
-
-- *wdev = __cfg80211_wdev_from_attrs(
-- sock_net(skb->sk),
-- genl_family_attrbuf(&nl80211_fam));
-+ *wdev = __cfg80211_wdev_from_attrs(sock_net(skb->sk),
-+ nl80211_fam.attrbuf);
- if (IS_ERR(*wdev)) {
- err = PTR_ERR(*wdev);
- goto out_unlock;
-@@ -1903,7 +1916,7 @@ static int nl80211_dump_wiphy_parse(stru
- struct netlink_callback *cb,
- struct nl80211_dump_wiphy_state *state)
- {
-- struct nlattr **tb = genl_family_attrbuf(&nl80211_fam);
-+ struct nlattr **tb = nl80211_fam.attrbuf;
- int ret = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize,
- tb, nl80211_fam.maxattr, nl80211_policy);
- /* ignore parse errors for backward compatibility */
-@@ -7733,7 +7746,6 @@ static int nl80211_send_survey(struct sk
-
- static int nl80211_dump_survey(struct sk_buff *skb, struct netlink_callback *cb)
- {
-- struct nlattr **attrbuf = genl_family_attrbuf(&nl80211_fam);
- struct survey_info survey;
- struct cfg80211_registered_device *rdev;
- struct wireless_dev *wdev;
-@@ -7746,7 +7758,7 @@ static int nl80211_dump_survey(struct sk
- return res;
-
- /* prepare_wdev_dump parsed the attributes */
-- radio_stats = attrbuf[NL80211_ATTR_SURVEY_RADIO_STATS];
-+ radio_stats = nl80211_fam.attrbuf[NL80211_ATTR_SURVEY_RADIO_STATS];
-
- if (!wdev->netdev) {
- res = -EINVAL;
-@@ -8594,14 +8606,14 @@ static int nl80211_testmode_dump(struct
- */
- phy_idx = cb->args[0] - 1;
- } else {
-- struct nlattr **attrbuf = genl_family_attrbuf(&nl80211_fam);
--
- err = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize,
-- attrbuf, nl80211_fam.maxattr, nl80211_policy);
-+ nl80211_fam.attrbuf, nl80211_fam.maxattr,
-+ nl80211_policy);
- if (err)
- goto out_err;
-
-- rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk), attrbuf);
-+ rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk),
-+ nl80211_fam.attrbuf);
- if (IS_ERR(rdev)) {
- err = PTR_ERR(rdev);
- goto out_err;
-@@ -8609,8 +8621,9 @@ static int nl80211_testmode_dump(struct
- phy_idx = rdev->wiphy_idx;
- rdev = NULL;
-
-- if (attrbuf[NL80211_ATTR_TESTDATA])
-- cb->args[1] = (long)attrbuf[NL80211_ATTR_TESTDATA];
-+ if (nl80211_fam.attrbuf[NL80211_ATTR_TESTDATA])
-+ cb->args[1] =
-+ (long)nl80211_fam.attrbuf[NL80211_ATTR_TESTDATA];
- }
-
- if (cb->args[1]) {
-@@ -10814,7 +10827,8 @@ static int handle_nan_filter(struct nlat
-
- i = 0;
- nla_for_each_nested(attr, attr_filter, rem) {
-- filter[i].filter = nla_memdup(attr, GFP_KERNEL);
-+ filter[i].filter = kmemdup(nla_data(attr), nla_len(attr),
-+ GFP_KERNEL);
- filter[i].len = nla_len(attr);
- i++;
- }
-@@ -11450,7 +11464,6 @@ static int nl80211_prepare_vendor_dump(s
- struct cfg80211_registered_device **rdev,
- struct wireless_dev **wdev)
- {
-- struct nlattr **attrbuf = genl_family_attrbuf(&nl80211_fam);
- u32 vid, subcmd;
- unsigned int i;
- int vcmd_idx = -1;
-@@ -11486,28 +11499,31 @@ static int nl80211_prepare_vendor_dump(s
- }
-
- err = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize,
-- attrbuf, nl80211_fam.maxattr, nl80211_policy);
-+ nl80211_fam.attrbuf, nl80211_fam.maxattr,
-+ nl80211_policy);
- if (err)
- goto out_unlock;
-
-- if (!attrbuf[NL80211_ATTR_VENDOR_ID] ||
-- !attrbuf[NL80211_ATTR_VENDOR_SUBCMD]) {
-+ if (!nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_ID] ||
-+ !nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_SUBCMD]) {
- err = -EINVAL;
- goto out_unlock;
- }
-
-- *wdev = __cfg80211_wdev_from_attrs(sock_net(skb->sk), attrbuf);
-+ *wdev = __cfg80211_wdev_from_attrs(sock_net(skb->sk),
-+ nl80211_fam.attrbuf);
- if (IS_ERR(*wdev))
- *wdev = NULL;
-
-- *rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk), attrbuf);
-+ *rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk),
-+ nl80211_fam.attrbuf);
- if (IS_ERR(*rdev)) {
- err = PTR_ERR(*rdev);
- goto out_unlock;
- }
-
-- vid = nla_get_u32(attrbuf[NL80211_ATTR_VENDOR_ID]);
-- subcmd = nla_get_u32(attrbuf[NL80211_ATTR_VENDOR_SUBCMD]);
-+ vid = nla_get_u32(nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_ID]);
-+ subcmd = nla_get_u32(nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_SUBCMD]);
-
- for (i = 0; i < (*rdev)->wiphy.n_vendor_commands; i++) {
- const struct wiphy_vendor_command *vcmd;
-@@ -11531,9 +11547,9 @@ static int nl80211_prepare_vendor_dump(s
- goto out_unlock;
- }
-
-- if (attrbuf[NL80211_ATTR_VENDOR_DATA]) {
-- data = nla_data(attrbuf[NL80211_ATTR_VENDOR_DATA]);
-- data_len = nla_len(attrbuf[NL80211_ATTR_VENDOR_DATA]);
-+ if (nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_DATA]) {
-+ data = nla_data(nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_DATA]);
-+ data_len = nla_len(nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_DATA]);
- }
-
- /* 0 is the first index - add 1 to parse only once */
-@@ -12795,21 +12811,6 @@ static __genl_const struct genl_ops nl80
- },
- };
-
--static struct genl_family nl80211_fam __ro_after_init = {
-- .name = NL80211_GENL_NAME, /* have users key off the name instead */
-- .hdrsize = 0, /* no private header */
-- .version = 1, /* no particular meaning now */
-- .maxattr = NL80211_ATTR_MAX,
-- .netnsok = true,
-- .pre_doit = nl80211_pre_doit,
-- .post_doit = nl80211_post_doit,
-- .module = THIS_MODULE,
-- .ops = nl80211_ops,
-- .n_ops = ARRAY_SIZE(nl80211_ops),
-- .mcgrps = nl80211_mcgrps,
-- .n_mcgrps = ARRAY_SIZE(nl80211_mcgrps),
--};
--
- /* notification functions */
-
- void nl80211_notify_wiphy(struct cfg80211_registered_device *rdev,
-@@ -14759,11 +14760,12 @@ void nl80211_send_ap_stopped(struct wire
-
- /* initialisation/exit functions */
-
--int __init nl80211_init(void)
-+int nl80211_init(void)
- {
- int err;
-
-- err = genl_register_family(&nl80211_fam);
-+ err = genl_register_family_with_ops_groups(&nl80211_fam, nl80211_ops,
-+ nl80211_mcgrps);
- if (err)
- return err;
-
---- a/drivers/net/wireless/mac80211_hwsim.c
-+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -587,8 +587,15 @@ struct hwsim_radiotap_ack_hdr {
- __le16 rt_chbitmask;
- } __packed;
-
--/* MAC80211_HWSIM netlink family */
--static struct genl_family hwsim_genl_family;
-+/* MAC80211_HWSIM netlinf family */
-+static struct genl_family hwsim_genl_family = {
-+ .id = GENL_ID_GENERATE,
-+ .hdrsize = 0,
-+ .name = "MAC80211_HWSIM",
-+ .version = 1,
-+ .maxattr = HWSIM_ATTR_MAX,
-+ .netnsok = true,
-+};
-
- enum hwsim_multicast_groups {
- HWSIM_MCGRP_CONFIG,
-@@ -3250,18 +3257,6 @@ static __genl_const struct genl_ops hwsi
- },
- };
-
--static struct genl_family hwsim_genl_family __ro_after_init = {
-- .name = "MAC80211_HWSIM",
-- .version = 1,
-- .maxattr = HWSIM_ATTR_MAX,
-- .netnsok = true,
-- .module = THIS_MODULE,
-- .ops = hwsim_ops,
-- .n_ops = ARRAY_SIZE(hwsim_ops),
-- .mcgrps = hwsim_mcgrps,
-- .n_mcgrps = ARRAY_SIZE(hwsim_mcgrps),
--};
--
- static void destroy_radio(struct work_struct *work)
- {
- struct mac80211_hwsim_data *data =
-@@ -3309,13 +3304,15 @@ static struct notifier_block hwsim_netli
- .notifier_call = mac80211_hwsim_netlink_notify,
- };
-
--static int __init hwsim_init_netlink(void)
-+static int hwsim_init_netlink(void)
- {
- int rc;
-
- printk(KERN_INFO "mac80211_hwsim: initializing netlink\n");
-
-- rc = genl_register_family(&hwsim_genl_family);
-+ rc = genl_register_family_with_ops_groups(&hwsim_genl_family,
-+ hwsim_ops,
-+ hwsim_mcgrps);
- if (rc)
- goto failure;
-