diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2017-08-22 23:59:48 +0200 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2017-10-01 12:49:11 +0200 |
commit | a8f63a0717f553e0a1b37ee9212fc4cb2a801426 (patch) | |
tree | 9016b975706f35b98075167f2cf6b15add308c9b /package/kernel/mac80211/patches/007-revert-genetlink-changes.patch | |
parent | 1114f5dc10755e3c92b5711b420818cf9e366874 (diff) | |
download | upstream-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.patch | 266 |
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; - |